メニュー
AWS Lambda
開発者ガイド

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

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

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

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

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

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

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

ステップ 1: 準備

次の手順を完了していることを確認してください。

  • AWS アカウントにサインアップして、アカウントに管理者ユーザーを作成した。

  • AWS CLI をインストールしてセットアップした。

手順については、「ステップ 1: AWS アカウントと AWS CLI を設定する」を参照してください。

ステップ 2: Lambda 環境の設定

このセクションでは、以下の作業を行います。

  • 提供されたサンプルコードを使用して Lambda 関数のデプロイパッケージを作成する。

  • Lambda 実行ロールを作成する。

  • デプロイパッケージをアップロードして Lambda 関数を作成して、その関数を手動で呼び出すことでテストする。

ステップ 2.1: デプロイパッケージを作成する

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

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

    Copy
    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 として保存します。

ステップ 2.2: 実行ロールを作成する

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

  1. 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 関数を作成するときに、この値が必要になります。

ステップ 2.3: Lambda 関数を作成してテストする

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

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

Copy
aws lambda create-function \ --region us-east-1 \ --function-name ReturnBucketName \ --zip-file fileb://file-path/Test_Environment_Variables.zip \ --role role-arn \ --environment Variables={S3_BUCKET=Test} \ --handler index.handler \ --runtime nodejs4.3 \ --version version \ --profile default

注記

オプションとして、同じ AWS リージョンの Amazon S3 バケットに .zip ファイルをアップロードし、前述のコマンドでそのバケットとオブジェクト名を指定することもできます。--zip-file パラメーターを --code パラメーターに置き換える必要があります。以下に例を示します。

Copy
--code S3Bucket=bucket-name,S3Key=zip-file-object-key

次に、以下の Lambda CLI invoke コマンドを実行して関数を呼び出します。コマンドは非同期実行をリクエストします。オプションで、invocation-type パラメータ値として RequestResponse を指定することで、このコマンドを同期的に呼び出すこともできます。

Copy
aws lambda invoke \ --invocation-type Event \ --function-name ReturnBucketName \ --region us-east-1 \ --profile default \ outputfile.txt

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

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

Copy
aws lambda update-function-configuration --invocation-type Event \ --function-name ReturnBucketName \ --region us-east-1 \ --environment Variables={S3_BUCKET=Prod} \ --profile default \

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