Node.js の AWS Lambda デプロイパッケージ - 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 を使用して関数を更新するには、UpdateFunctionCode オペレーションを使用します。関数コードを含むアーカイブを作成し、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": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "index.handler", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d", ... }

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

関数が SDK for JavaScript 以外のライブラリに依存している場合は、npm を使用してそれらのライブラリをデプロイパッケージに含めます。ローカル環境の Node.js バージョンが関数の Node.js バージョンと一致していることを確認します。ライブラリのいずれかでネイティブコードを使用している場合は、Amazon Linux 環境を使用してデプロイパッケージを作成します。

ランタイムに含まれているバージョンよりも新しいバージョンが必要な場合、または将来バージョンが変更されないようにするために、SDK for JavaScript をデプロイパッケージに追加できます。

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

  1. コマンドラインターミナルまたはシェルを開きます。ローカル環境の Node.js バージョンが関数の Node.js バージョンと一致していることを確認します。

  2. 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
  3. プロジェクトフォルダの内容を含む ZIP ファイルを作成します。

    ~/my-function$ zip -r function.zip .
  4. 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-east-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "index.handler", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d", ... }

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