Lambda 関数の編集とテスト


このセクションでは、Lambda でのコードの変更や、バージョニング、テストの方法を体験していただきます。

アーキテクチャ内の Lambda を編集します

Lambda 関数のバージョンとエイリアスの作成

Lambda 関数を変更する前に、あらかじめバージョンを作成して、現在のコードの状態を保存しておきましょう。また、作成したバージョンにエイリアスをつけておきましょう。

  1. 画面左上の サービス▼ から Lambda を検索します。

  2. ws1-lambda という関数を選択して表示します。

  3. 画面上部の アクション から 新しいバージョンを発行 を選択します。

  4. 発行 ボタンを押して新しいバージョンを発行します。すると、ws1-lambda:1 のように、バージョン番号が表示されているのがわかります。新しく発行されたバージョンでは、コードや環境変数の変更が無効になっており、読み取り専用になっていることを確認します。

  5. バージョン番号は新しく作るたびに変わってしまうので、わかりやすい名前(エイリアス)をつけておきましょう。画面上部の アクション から エイリアスを作成 を選択します。

  6. 以下のように記入したら、保存 を押します。

    • 名前: Prod
    • バージョン: 1

コードの編集

  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 に保存させていましたが、変更後のコードではその部分を割愛しています。

  2. 関数コードの欄の右上にある デプロイ ボタンを押し、関数コードをクラウド上に反映させます。

関数の実行ロールの変更

Amazon Translate を使うように関数のコードを変更しましたが、まだ Lambda 関数は Amazon Translate を呼び出す権限を持っていないので、このままではエラーになってしまいます。そこで、関数の実行ロール(IAMロール)を変更します。

  1. Lambda のコンソール画面をスクロールして、基本設定 の欄を見つけ、編集 をクリックします。基本設定 では、Lambda が利用するメモリサイズ・タイムアウトまでの時間・実行ロールなどを設定できます。

  2. すでに Lambda には IAM ロールが割り当てられているので、既存のロールを変更することになります。IAMコンソールで HCLSWorkshop1-hclsws1lambdarole* ロールを表示 をクリックします。

  3. IAM ロールのコンソールが新しいタブで開きます。アクセス権限 のタブの中の ポリシーをアタッチします をクリックします。

  4. ポリシー一覧が表示されるので、検索窓に Translate と入力して TranslateFullAccess にチェックを入れます。その後、画面右下の ポリシーのアタッチ をクリックします。

  5. Lambda の基本設定を開いていたタブに戻り、変更を保存しておきます。

テスト

  1. 画面上部の テストイベントの設定 から、テストイベントを作成します。

    • イベントテンプレート: (例:hello-world)今回の関数コードでは、受け取ったイベントを結局使っていないのでどのテンプレートでも構いません。
    • イベント名: 任意 (例: SampleEvent
  2. 画面上部の テスト をクリックして関数をテストします。

  3. テストが成功すると、「実行結果: 成功」と表示されます。詳細なログを確認して、Abstract が日本語に翻訳されている様子を確認しましょう。

  4. ログ全体の確認や、さらに詳細なログを見るためには、リンクをクリックして CloudWatch Logs のコンソールに移動します。

  5. ログストリームの中から、見たいログを選択します。