AWSサーバレスアーキテクチャーNo2:Lambda + Amazon Translate
AWSのホームページの初心者ハンズオンにある「サーバーレスアーキテクチャで翻訳 Web API を構築する 」の内容を自分のAWSアカウントでやってみました。
前回投稿のLambda単体でログ機能を実装した続きで、2パート目です。
ざっくりと基本構成を図で表してみて、Lambda、Translate だけの構成です。( API-Gateway と DynamoDBを省いた)
それでは、前回の環境から引き続き設定していきます。今回は Amazon Translate と連携してみます。
Lambdaサービスの画面に遷移します。
translate-function (前回作成)のコードを変更する
Python SDK のドキュメントを⾒ながら、Translate の呼び出し⽅を実装する
検索もできる。
レスポンスとして、JSON 形式で英語訳を返すようにする。
右のソースの内容を、コードタブで入力して、「Deploy」を実行する。
import json
import boto3
translate = boto3.client('translate')
def lambda_handler(event, context):
input_text = "おはようございます"
response = translate.translate_text(
Text=input_text,
SourceLanguageCode='ja',
TargetLanguageCode='en'
)
output_text = response.get('TranslatedText')
return {
'statusCode': 200,
'body': json.dumps({
'output_text': output_text
})
}
Lambda関数のIAMロール修正
IAMダッシュボードのロール画面に飛ぶ
「translate」で絞って、「TranslateFullAccess」をチェック → 「ポリシーのアタッチ」をクリック
translate-function 画面に戻る
リソースの概要の下のプルダウンをクリックすると、
操作が許可されているサービスの一覧が出てきます。
サービスを選択すると、下部にその詳細が出てきます。
Lambda 関数をテスト実行する
「Good morning」が出力されている。
今回は、Lambda から Amazon Translate を組み合わせてみました。
次回は、Amazon API Gateway だけの構成です。