AWS Lambda
開発者ガイド

環境変数を使用して Lambda 関数を作成する

このセクションでは、Lambda 関数コードの変更を必要としない構成の変更によって、Lambda 関数の動作を変更する方法を説明します。

このチュートリアルでは、以下の作業を行います。

  • Amazon S3 バケットの名前を指定する環境変数の値を返すサンプルコードを含んだデプロイパッケージの作成する。

  • Lambda 関数を呼び出し、返される Amazon S3 バケット名が環境変数によって設定される値と一致することを確認する。

  • 環境変数により指定された Amazon S3 バケット名を変更して Lambda 関数を更新する。

  • Lambda 関数を再度呼び出し、返される Amazon S3 バケット名が更新された値と一致するか確認する。

Lambda 環境をセットアップする

以下のコードサンプルは、Amazon S3 バケットの名前を返す Lambda 関数の環境変数を読み取ります。

  1. テキストエディターを開き、次のコードをコピーします。

    var AWS = require('aws-sdk'); exports.handler = function(event, context, callback) { var bucketName = process.env.S3_BUCKET; callback(null, bucketName); }
  2. index.js という名前でファイルを保存します。

  3. index.js. ファイルを Test_Environment_Variables.zip という名前で圧縮します。

実行ロールを作成する

Lambda 関数の作成時に指定できる IAM ロール(実行ロール)を作成します。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. IAM ユーザーガイド』の「IAM ロール」のステップに従って、IAM ロール (実行ロール) を作成します。ロールを作成するステップに従うときに、次のことに注意してください。

    • [Select Role Type] で、[AWS Service Roles] を選択して [AWS Lambda] を選択します。

    • [Attach Policy] で、AWSLambdaBasicExecutionRole という名前のポリシーを選択します。

  3. IAM ロールの Amazon リソースネーム (ARN) をメモします。次のステップで Lambda 関数を作成するときに、この値が必要になります。

Lambda 関数を作成してテストする

このセクションでは、Test という名前の Amazon S3 バケットを指定する環境変数を含む Lambda 関数を作成します。呼び出されると、この関数は Amazon S3 バケットの名前を返します。Amazon S3 バケット名を Prod に変更することで設定を更新すると、再度呼び出された時にこの関数は更新された Amazon S3 バケットの名前を返します。

Lambda 関数を作成するには、コマンドプロンプトを開き、次の Lambda AWS CLI create-function コマンドを実行します。.zip ファイルのパスと実行ロール ARN を指定する必要があります。

$ aws lambda create-function --function-name ReturnBucketName \ --zip-file fileb://file-path/Test_Environment_Variables.zip \ --role role-arn \ --environment Variables={S3_BUCKET=Test} \ --handler index.handler --runtime nodejs8.10

次に、以下の Lambda CLI invoke コマンドを実行して関数を呼び出します。

$ aws lambda invoke --function-name ReturnBucketName outputfile.txt

Lambda 関数が Amazon S3 バケットの名前を「テスト用」として返します。

次に、以下の Lambda CLI update-function-configuration コマンドを実行して、Prod バケットを指定して Amazon S3 環境変数を更新します。

$ aws lambda update-function-configuration --function-name ReturnBucketName \ --environment Variables={S3_BUCKET=Prod}

同じパラメータを使用して aws lambda invoke コマンドを再度実行します。今回は、Lambda 関数が Amazon S3 バケット名を Prod として返します。