AWS Lambda
開発者ガイド

Node.js の AWS Lambda デプロイパッケージ

デプロイパッケージは、関数のコードと依存関係を含む ZIP アーカイブです。Lambda API を使用して関数を管理する場合や、AWS SDK 以外のライブラリや依存関係を含める必要がある場合は、デプロイパッケージを作成する必要があります。パッケージを Lambda に直接アップロードするか、Amazon S3 バケットを使用して Lambda にアップロードすることができます。デプロイパッケージが 50 MB 以上の場合は、Amazon S3 を使用する必要があります。

Lambda コンソールエディタを使用して関数を作成する場合は、コンソールでデプロイパッケージを管理します。他にライブラリを追加する必要がない限り、この方法を使用します。また、この方法でデプロイパッケージにライブラリがすでに含まれている関数をアップロードすることもできます。ただし、合計サイズが 3 MB 以内の場合に限ります。

注記

デプロイパッケージのサイズを低く保つため、関数の依存関係をレイヤーにパッケージ化します。レイヤーにより、依存関係を独立して管理し、複数の関数で使用できます。また、他のアカウントと共有できます。詳細については、「AWS Lambda レイヤー」を参照してください。

依存関係のない関数を更新する

Lambda API を使用して関数を作成または更新するには、関数コードを含むアーカイブを作成し、AWS CLI を使用してアップロードします。

依存関係のない Node.js 関数を更新するには

  1. ZIP アーカイブを作成します。

    ~/my-function$ zip function.zip index.js
  2. update-function-code コマンドを使用してパッケージをアップロードします。

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "nodejs10.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "index.handler", "CodeSize": 300, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }

追加の依存関係を使用して関数を更新する

関数が SDK for JavaScript 以外のライブラリに依存している場合は、NPM を使用してローカルディレクトリにインストールし、デプロイパッケージに含めます。ランタイムに含まれているバージョンよりも新しいバージョンが必要な場合、または将来バージョンが変更されないようにするために SDK for JavaScript を含めることもできます。

依存関係のある Node.js 関数を更新するには

  1. npm install コマンドで、ライブラリを node_modules ディレクトリにインストールします。

    ~/my-function$ npm install aws-xray-sdk

    次のようなフォルダ構造が作成されます。

    ~/my-function ├── index.js └── node_modules ├── async ├── async-listener ├── atomic-batcher ├── aws-sdk ├── aws-xray-sdk ├── aws-xray-sdk-core
  2. プロジェクトフォルダの内容を含む ZIP ファイルを作成します。

    ~/my-function$ zip -r function.zip .
  3. update-function-code コマンドを使用してパッケージをアップロードします。

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "nodejs10.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "index.handler", "CodeSize": 300, "Description": "My function", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }

デプロイパッケージには、コードとライブラリに加えて、実行可能ファイルとその他のリソースも含めることができます。詳細については、以下を参照してください。