目次
はじめに
「I have a gift for you!」
クリスマス恒例?のアドベントカレンダー12/5の担当安田です!
突然ですが皆さんは英語得意ですか?
AWSは基本言語がバッチバッチの英語になっているので、
イベント通知が来た際に即座に内容がわかりづらいです。
「アメリカ語苦手なんだよなぁ。。。」
「日本語にできないのか??」など思ったことはございませんか?
AWSには「Amazon Translate」という翻訳サービスがございます!
今回はそれを使ってー検証していくぅ!
AmazonTranslateの概要
Amazon Translate は、高速で高品質かつカスタマイズ可能な
言語翻訳を手ごろな料金で提供するニューラル機械翻訳サービスです。
https://aws.amazon.com/jp/translate/
検証内容
AWSからのSNS通知にAPIを介し、
日本語に翻訳したものを通知するようにします。
処理
簡単3ステップ
① SNSトピックの発行
② ①のトピックをトリガーにLambdaでTranslateで翻訳しSNSで通知
③ みんなハッピー
対応
1.SNSトピックの作成
英文で通知が来そうなやつを適当に作成
今回は↓で実装してます。
①Ec2statechangeのイベント
②Cloudwatchalarm
2.Lambdaの作成
Amazon Translate を使用して翻訳を行うための AWS Lambda 関数を作成します。
Lambda 関数は、SNS から通知を受け取り、その内容を Amazon Translate に渡して
翻訳する処理を行います。
import boto3
import json
import os
def lambda_handler(event, context):
# 環境変数から target_sns_arn の値を取得
target_sns_arn = os.environ['TARGET_SNS_ARN']
# Amazon Translate クライアントと SNS クライアントの初期化
translate_client = boto3.client('translate')
sns_client = boto3.client('sns')
# SNSメッセージの取得
message = event['Records'][0]['Sns']['Message']
print("Original message:", message)
try:
# メッセージを日本語に翻訳
response = translate_client.translate_text(
Text=message,
SourceLanguageCode='en',
TargetLanguageCode='ja'
)
# 翻訳されたメッセージ
translated_message = response.get('TranslatedText')
print("Translated message:", translated_message)
# 翻訳されたメッセージを新しいSNSトピックに発行
sns_response = sns_client.publish(
TopicArn=target_sns_arn,
Message=translated_message,
Subject='Translated Message'
)
return {
'statusCode': 200,
'body': json.dumps('Message translated and published successfully!')
}
except Exception as e:
print(e)
return {
'statusCode': 500,
'body': json.dumps('Error in processing the message')
}
3.Lambda関数とSNSトピックの設定
・Lambdaの実行ロールには↓のポリシーをセットしてください。
「AmazonSNSFullAccess」
「Translatereadonly」
・環境変数 TARGET_SNS_ARN に SNSトピックのARN を入力してください。
SNSは2つのセットになります。
「翻訳する用トピック」・・・Lambdaのトリガーに指定する
「翻訳されたものを通知するトピック」・・・通知を送りたいメールアドレス
結果
①処理前
①処理後
②処理前
②処理後
総括
単語での翻訳は難しいっぽく、
アラブ最強のSSRキャラ「アラーマーン」様を召喚することに成功しました。
普通にグーグル翻訳した方が楽だしわかりやすくね。。。っていうのはシィーです。
AmazonTranslateの概要の伏線改修でtranslateにカスタム辞書設定があるので、
調整なしでわかりやすくするのは難しそうです。
APIを経由するだけで英語→日本語への変更が可能になるので、
InspectorやSecurityHubなど出力結果が長め英文のケースでは手間が省けて便利です。
良いプレゼントになりましたかね?
閲覧頂きありがとうございました。
体はグミでできている。
LINK
クラウドベリージャム:プロフィールページ