AWSサーバレスアーキテクチャーNo2:Lambda + Amazon Translate

AWSのホームページの初心者ハンズオンにある「サーバーレスアーキテクチャで翻訳 Web API を構築する 」の内容を自分のAWSアカウントでやってみました。

前回投稿のLambda単体でログ機能を実装した続きで、2パート目です。
ざっくりと基本構成を図で表してみて、Lambda、Translate だけの構成です。( API-Gateway と DynamoDBを省いた)

それでは、前回の環境から引き続き設定していきます。今回は Amazon Translate と連携してみます。

Lambdaサービスの画面に遷移します。

translate-function (前回作成)のコードを変更する

function名をクリック

Python SDK のドキュメントを⾒ながら、Translate の呼び出し⽅を実装する

「aws python sdk」で検索

APIリファレンスをクリック

検索もできる。

「Deploy」をクリック

レスポンスとして、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」をチェック → 「ポリシーのアタッチ」をクリック

「TranslateFullAccess」 → 「ポリシーのアタッチ」

translate-function 画面に戻る

translate-function 画面に戻る

リソースの概要の下のプルダウンをクリックすると、
操作が許可されているサービスの一覧が出てきます。

サービスを選択すると、下部にその詳細が出てきます。

Lambda 関数をテスト実行する

「Good morning」が出力されている。

今回は、Lambda から Amazon Translate を組み合わせてみました。

次回は、Amazon API Gateway だけの構成です。