言語の壁を乗り越える シームレスなサポートのためにAmazon Translateでアプリケーションログを翻訳する

Amazon Translateでアプリケーションログを翻訳する

アプリケーションログは、アプリケーションの内部動作に関する重要な情報を提供する必要不可欠な情報です。これには、イベント、エラー、およびユーザーの操作など、アプリケーション開発者やオペレーションサポートエンジニアがデバッグやサポートを行うために役立つ貴重な情報が含まれます。しかし、これらのログが英語以外の言語で表示されると、コンテンツを読めない開発者にとっては大きな障害となり、サポートチームの問題の特定と解決能力を妨げます。

この記事では、サポートチームの能力を向上させるために、Amazon Translateを使用して言語の壁を取り除く方法について説明します。Amazon Translateは、サポートされているさまざまな言語間でテキストを翻訳するための完全に管理されたニューラル機械翻訳サービスです。このソリューションは、Amazon CloudWatchのすべてのアプリケーションログをリアルタイムで自動的に翻訳することで、英語以外のアプリケーションログによって引き起こされる課題を軽減します。

ソリューションの概要

このソリューションでは、次の3つの主要なサービスを使用して、イベント駆動型の方法でアプリケーションログの翻訳を自動化する方法を示します:

  • CloudWatch Logsは、AWSサービスやアプリケーションなど、さまざまなソースから生成されたログファイルを監視、保存、アクセスするために使用されます。
  • Amazon Translateは、テキストを英語と他の言語間で翻訳するために使用されます。
  • AWS Lambdaは、アプリケーションログを取得し、Amazon Translate SDKを使用してそれらを翻訳するためのコードを実行するための計算サービスです。

次の図は、ソリューションアーキテクチャを示しています。

このワークフローは次の手順で行われます:

  1. カスタムまたはサードパーティのアプリケーションがAmazon Elastic Compute Cloud(Amazon EC2)インスタンスにホストされ、生成されたアプリケーションログがCloudWatch LogsにCloudWatch Logsエージェントを介してアップロードされます。
  2. CloudWatch Logsに書き込まれた各ログエントリは、CloudWatchロググループにサブスクライブされたLambda関数をトリガーします。
  3. 関数はログエントリのコンテンツを処理し、Amazon Translate SDKのtranslate_textを使用してログのコンテンツを翻訳します。
  4. 翻訳されたログのコンテンツが関数に返されます。
  5. 関数は翻訳されたログのコンテンツを別のロググループに書き込みます。

このプロセスはリアルタイムで自動的に行われ、既存のアプリケーションがCloudWatchにログを書き込む方法に変更はありません。

前提条件

このソリューションの手順に従うには、AWS CloudFormation、Amazon Translate、CloudWatch、Lambda、およびIAMの権限を持つAWSアカウントとAWS Identity and Access Management(IAM)ユーザーが必要です。

ソリューションのデプロイ

始めるには、次のCloudFormationテンプレートを起動してLambda関数、2つのCloudWatchロググループ、およびIAMロールを作成します。デフォルトの設定でデプロイを進めてください。このテンプレートは約1分で完了します。

スタックが正常に作成されたら、Lambdaコンソールに移動し、translate-application-logsという関数を確認できます。

関数にCloudWatch Logsトリガーが追加されていることがわかります。

ナビゲーションペインでConfigurationタブを選択し、Triggersを選択することで、トリガーの構成の詳細を表示できます。

トリガーがロググループ/applicationlogsからのログイベントにサブスクライブするように構成されていることを確認できます。ここには、非英語のアプリケーションログが書き込まれます。

次に、ナビゲーションペインでEnvironment variablesを選択します。

ここでは、2つの環境変数が提供されています:

  • source_language – アプリケーションログが元々の言語です(例:jaは日本語)
  • target_language – アプリケーションログを翻訳する対象言語です(例:enは英語)

サポートされている言語のリストについては、「サポートされている言語と言語コード」を参照してください。

次に、「コード」タブに移動し、関数のロジックを確認してください:

import json, boto3, gzip, base64, os

translate = boto3.client(service_name='translate', region_name=os.environ['AWS_REGION'], use_ssl=True)
logs = boto3.client('logs')
    
def lambda_handler(event, context):
    # ログメッセージを取得する
    encoded_zipped_data = event['awslogs']['data']
    zipped_data = base64.b64decode(encoded_zipped_data)
    data = gzip.decompress(zipped_data)
    json_log = json.loads(data)
    logGroup = json_log['logGroup']+'-'+os.environ['target_language']
    logStream = json_log['logStream']
    
    # ロググループが存在するか確認し、存在しない場合は作成する
    dlg = logs.describe_log_groups(logGroupNamePrefix=logGroup)
    if len(dlg['logGroups']) == 0:
        logs.create_log_group(logGroupName=logGroup)

    # ログストリームが存在するか確認し、存在しない場合は作成する
    dls = logs.describe_log_streams(logGroupName=logGroup, logStreamNamePrefix=logStream)
    if len(dls['logStreams']) == 0:
        logs.create_log_stream(logGroupName=logGroup, logStreamName=logStream)

    # ソース言語からターゲット言語へのログイベントメッセージの翻訳
    for logevent in json_log['logEvents']:
        logevent['message'] = translate.translate_text(Text=logevent['message'], SourceLanguageCode=os.environ['source_language'], TargetLanguageCode=os.environ['target_language']).get('TranslatedText')
        del logevent['id']

    # 翻訳されたログイベントをCloudWatchの別のロググループに書き込む
    logs.put_log_events(
        logGroupName = logGroup,
        logStreamName = logStream,
        logEvents = json_log['logEvents']
    )
    
    # 成功を返す
    return {
        'statusCode': 200,
        'body': 'Translation success!'
    }

ソリューションのテスト

最後に、ソリューションをテストするために、CloudWatchコンソールを介してログメッセージを作成し、作成したロググループとログストリームを選択することができます。

ログメッセージを作成した後、すぐに翻訳されたメッセージを確認できます。

クリーンアップ

この記事で作成したリソースをクリーンアップするには、CloudFormationコンソールからCloudFormationスタックを削除してください。

結論

この記事では、開発者やサポートチームが英語以外の言語で表示されるアプリケーションログに直面する課題に対処しました。これにより、彼らがデバッグやサポートを提供するのが困難になっていました。提案されたソリューションでは、Amazon Translateを使用してCloudWatchの非英語ログを自動的に翻訳し、環境にソリューションを展開するためのステップバイステップのガイダンスを提供します。この実装により、開発者は言語の壁をスムーズに乗り越えることができ、問題を迅速かつ効果的に解決することができます。

この実装を試して、コメントでご意見をお聞かせください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

AIがYouTubeの多言語吹替を開始します

世界最大の動画共有プラットフォームであるYouTubeは、AI技術の統合により、コンテンツクリエイターが世界中の観客と接触する...

データサイエンス

2024年の予測17:RAG to RichesからBeatlemaniaとNational Treasuresへ

メリアム・ウェブスターの前に譲れ:今年、企業は年間のワードに追加するための多くの候補を見つけました。「生成的AI」と「...

人工知能

「生成AIの規制」

生成型の人工知能(AI)が注目を集める中、この技術を規制する必要性が高まっていますなぜなら、この技術は大規模な人口に対...

機械学習

「ステーブル拡散」は実際にどのように機能するのでしょうか?直感的な説明

この短い記事では、初心者に対して安定した拡散(Stable Diffusion)が直感的にどのように機能するかを説明していますこれは...

データサイエンス

「ZoomがAIトレーニングのために顧客データを使用することで法的ジレンマに直面」

新たな出来事の展開により、人気のあるビデオ会議プラットフォームであるZoomが、顧客データを人工知能(AI)モデルのトレー...

データサイエンス

「生成型AIアプリケーションのためのプレイブック」

この記事では、Generative AIアプリケーションを実装する際の主要な考慮事項と、ビジョンを行動に変えるために人間の関与が果...