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

チュートリアル: AWS Lambda エイリアスの使用

この AWS CLI ベースのチュートリアルでは、「例: エイリアスを使用した Lambda 関数バージョンの管理」で説明されているように Lambda 関数バージョンおよびそれを指すエイリアスを作成します。

この例では、us-west-2 (米国西部、オレゴン) リージョンを使用して Lambda 関数およびエイリアスを作成します。

  1. まず、アップロードして Lambda 関数を作成できるデプロイパッケージを作成する必要があります。

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

      Copy
      console.log('Loading function'); exports.handler = function(event, context, callback) { console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); callback(null, "message"); };
    2. helloworld.js という名前でファイルを保存します。

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

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

  3. Lambda 関数 (helloworld) を作成します。

    Copy
    aws lambda create-function \ --region us-west-2 \ --function-name helloworld \ --zip-file fileb://file-path/helloworld.zip \ --role arn:aws:iam::account-id:role/lambda_basic_execution \ --handler helloworld.handler \ --runtime nodejs4.3 \ --profile adminuser

    次のレスポンスの例に示すように、関数バージョンとして $LATEST を示す設定情報が返されます。

    Copy
    { "CodeSha256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "FunctionName": "helloworld", "CodeSize": 287, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:us-west-2:account-id:function:helloworld", "Version": "$LATEST", "Role": "arn:aws:iam::account-id:role/lambda_basic_execution", "Timeout": 3, "LastModified": "2015-09-30T18:39:53.873+0000", "Handler": "helloworld.handler", "Runtime": "nodejs4.3", "Description": "" }

  4. helloworld Lambda 関数の $LATEST バージョンを指すエイリアス (DEV) を作成します。

    Copy
    aws lambda create-alias \ --region us-west-2 \ --function-name helloworld \ --description "sample alias" \ --function-version "\$LATEST" \ --name DEV \ --profile adminuser

    レスポンスが、エイリアスが指す関数バージョンおよびエイリアス ARN を含むエイリアス情報を返します。ARN は、エイリアス名がサフィックスとしてついた関数 ARN と同じです。以下に、応答の例を示します。

    Copy
    { "AliasArn": "arn:aws:lambda:us-west-2:account-id:function:helloworld:DEV", "FunctionVersion": "$LATEST", "Name": "DEV", "Description": "sample alias" }

  5. helloworld Lambda 関数のバージョンを発行します。

    Copy
    aws lambda publish-version \ --region us-west-2 \ --function-name helloworld \ --profile adminuser

    レスポンスは、バージョン番号およびバージョンがサフィックスとしてついた関数 ARN を含む関数バージョンの設定情報を返します。以下に、応答の例を示します。

    Copy
    { "CodeSha256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "FunctionName": "helloworld", "CodeSize": 287, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:us-west-2:account-id:function:helloworld:1", "Version": "1", "Role": "arn:aws:iam::account-id:role/lambda_basic_execution", "Timeout": 3, "LastModified": "2015-10-03T00:48:00.435+0000", "Handler": "helloworld.handler", "Runtime": "nodejs4.3", "Description": "" }

  6. helloworld Lambda 関数バージョン 1 のエイリアス (BETA) を作成します。

    Copy
    aws lambda create-alias \ --region us-west-2 \ --function-name helloworld \ --description "sample alias" \ --function-version 1 \ --name BETA \ --profile adminuser

    これで、helloworld 関数に 2 つのエイリアスができます。DEV エイリアスは $LATEST 関数バージョンを指し、BETA エイリアスは Lambda 関数のバージョン 1 を指します。

  7. ここで、helloworld 関数のバージョン 1 を本稼働に置くとします。バージョン 1 を指す別のエイリアス (PROD) を作成します。

    Copy
    aws lambda create-alias \ --region us-west-2 \ --function-name helloworld \ --description "sample alias" \ --function-version 1 \ --name PROD \ --profile adminuser

    この時点で、BETA および PROD の両方のエイリアスが Lambda 関数のバージョン 1 を指すことになります。

  8. これで、より新しいバージョン (たとえば、バージョン 2) を発行できますが、まずコードを更新して変更したデプロイパッケージをアップロードする必要があります。$LATEST バージョンが変更されていない場合は、複数のバージョンを発行できません。デプロイパッケージを更新した前提で、これをアップロードし、バージョン 2 を発行して初めて、Lambda 関数のバージョン 2 を指す BETA エイリアスを変更できます。

    Copy
    aws lambda update-alias \ --region us-west-2 \ --function-name helloworld \ --function-version 2 \ --name BETA \ --profile adminuser

    これで、Lambda 関数の異なるバージョンを指す 3 つのエイリアス (Lambda 関数の $LATEST バージョンを指す DEV、バージョン 2 を指す BETA、バージョン 1 を指すPROD) ができました。

AWS Lambda コンソールを使用したバージョニング管理については、「AWS マネジメントコンソール、AWS CLI、または Lambda API を使用したバージョニングの管理」を参照してください。

プッシュモデルにおけるアクセス権限の付与

プッシュモデル (「イベントソースマッピング」を参照」では、Amazon S3 などのイベントソースが Lambda 関数を呼び出します。これらのイベントソースは、イベントが発生した際に呼び出す関数のバージョンまたはエイリアスを識別するマッピングを維持します。次の点に注意してください。

  • マッピング設定で既存の Lambda 関数のエイリアスを指定することをお勧めします (「AWS Lambda エイリアスの紹介」を参照)。たとえば、イベントソースが Amazon S3 の場合、バケット通知設定でエイリアス ARN を指定して、Amazon S3 が特定のイベントを検出した場合にそのエイリアスを呼び出すようにできます。

  • プッシュモデルでは、Lambda 関数にアタッチされたリソースポリシーを使用して、イベントソースにアクセス権限を付与します。バージョニングでは、追加したアクセス権限は AddPermission リクエストで指定された修飾子に固有のものです (「バージョニング、エイリアス、リソースポリシー」を参照)。

    たとえば、以下の AWS CLI コマンドは Amazon S3 に helloworld Lambda 関数の PROD エイリアスを呼び出すためのアクセス権限を付与します (--qualifier パラメータがエイリアス名を指定することに注意してください)。

    Copy
    aws lambda add-permission \ --region us-west-2 \ --function-name helloworld \ --qualifier PROD \ --statement-id 1 \ --principal s3.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::examplebucket \ --source-account 111111111111 \ --profile adminuser

    この場合、Amazon S3 が PROD エイリアスを呼び出せるようになり、従って AWS Lambda が PROD エイリアスが指す helloworld Lambda 関数バージョンを実行できます。これを機能させるには、S3 バケットの通知設定で PROD エイリアス ARN を使用する必要があります。

    Amazon S3 イベントの処理方法については、「チュートリアル: Amazon S3 での AWS Lambda の使用」を参照してください。

    注記

    AWS Lambda コンソールを使用して Lambda 関数のイベントソースを追加する場合は、コンソールが必要なアクセス権限を追加します。