このセクションでは、Lambda でのコードの変更や、バージョニング、テストの方法を体験していただきます。
Lambda 関数を変更する前に、あらかじめバージョンを作成して、現在のコードの状態を保存しておきましょう。また、作成したバージョンにエイリアスをつけておきましょう。
画面左上の サービス▼ から Lambda を検索します。
ws1-lambda
という関数を選択して表示します。
画面上部の アクション から 新しいバージョンを発行 を選択します。
発行 ボタンを押して新しいバージョンを発行します。すると、ws1-lambda:1
のように、バージョン番号が表示されているのがわかります。新しく発行されたバージョンでは、コードや環境変数の変更が無効になっており、読み取り専用になっていることを確認します。
バージョン番号は新しく作るたびに変わってしまうので、わかりやすい名前(エイリアス)をつけておきましょう。画面上部の アクション から エイリアスを作成 を選択します。
以下のように記入したら、保存 を押します。
Prod
1
translate_lambda.py のリンクを開いて、コードをコピーします。Lambda コンソールで、既存のコードを全て消して、今コピーしてきたものを貼り付けます。以下、コードの主な変更点の解説です。
7行目では、AWS SDK for Python (Boto3) を利用して、Amazon Translate が使えるように設定しています。
translate = boto3.client('translate')
30-34行目では、実際に Amazon Translate を呼び出して、Abstract の英語テキストを日本語に翻訳して、ログに出力しています。
response = translate.translate_text(
Text=abstract.text,
SourceLanguageCode='en',
TargetLanguageCode='ja'
)
また、変更前のコードでは Kinesis Firehose にデータを流して S3 に保存させていましたが、変更後のコードではその部分を割愛しています。
関数コードの欄の右上にある デプロイ ボタンを押し、関数コードをクラウド上に反映させます。
Amazon Translate を使うように関数のコードを変更しましたが、まだ Lambda 関数は Amazon Translate を呼び出す権限を持っていないので、このままではエラーになってしまいます。そこで、関数の実行ロール(IAMロール)を変更します。
Lambda のコンソール画面をスクロールして、基本設定 の欄を見つけ、編集 をクリックします。基本設定 では、Lambda が利用するメモリサイズ・タイムアウトまでの時間・実行ロールなどを設定できます。
すでに Lambda には IAM ロールが割り当てられているので、既存のロールを変更することになります。IAMコンソールで HCLSWorkshop1-hclsws1lambdarole*
ロールを表示 をクリックします。
IAM ロールのコンソールが新しいタブで開きます。アクセス権限 のタブの中の ポリシーをアタッチします をクリックします。
ポリシー一覧が表示されるので、検索窓に Translate
と入力して TranslateFullAccess
にチェックを入れます。その後、画面右下の ポリシーのアタッチ をクリックします。
Lambda の基本設定を開いていたタブに戻り、変更を保存しておきます。
画面上部の テストイベントの設定 から、テストイベントを作成します。
hello-world
)今回の関数コードでは、受け取ったイベントを結局使っていないのでどのテンプレートでも構いません。SampleEvent
)
画面上部の テスト をクリックして関数をテストします。
テストが成功すると、「実行結果: 成功」と表示されます。詳細なログを確認して、Abstract が日本語に翻訳されている様子を確認しましょう。
ログ全体の確認や、さらに詳細なログを見るためには、リンクをクリックして CloudWatch Logs のコンソールに移動します。
ログストリームの中から、見たいログを選択します。