AWS Lambda
開発者ガイド

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

Lambda 関数を作成するには、最初に Lambda 関数デプロイパッケージ (コードと依存関係で構成される .zip ファイル) を作成します。

デプロイパッケージは自分で作成するか、または Lambda コンソールで作成できます。コンソールでコードを直接記述すると、コンソールによってデプロイパッケージが作成およびアップロードされ、Lambda 関数が作成されます。コンソールを使用して Lambda 関数を作成できるかどうかを判断するには、以下の点に注意してください。

  • シンプルなシナリオ – カスタムコードで AWS SDK ライブラリのみが必要な場合は、AWS Lambda コンソールのインラインエディターを使用できます。コンソールを使用して、コードの編集および AWS Lambda へのアップロードを行うことができます。コンソールは、コードとそれに関連する設定情報を、Lambda サービスが実行可能なデプロイパッケージに圧縮します。

    サンプルイベントデータを使って手動で呼び出すことにより、コンソールでコードをテストすることもできます。

    注記

    Lambda サービスによって、AWS SDK for Node.js が事前インストールされています。

  • 高度なシナリオ – 画像処理のグラフィックスライブラリなど他のリソースを使用するコードを作成する場合や、コンソールではなく AWS CLI を使用する場合は、最初に Lambda 関数デプロイパッケージを作成した後、コンソールまたは CLI を使用してパッケージをアップロードする必要があります。

注記

デプロイパッケージを作成した後、それを直接アップロードできます。またはオプションで先に .zip ファイルを Lambda 関数を作成する同じ AWS リージョンの Amazon S3 バケットにアップロードしておき、その後コンソールまたは AWS CLI を使用して Lambda 関数を作成するときにバケット名とオブジェクトキー名を指定できます。

以下に示しているのは、(コンソールの外で)デプロイパッケージを作成する手順の例です。filename.js コードファイルを含むデプロイパッケージを作成するとし、コードには async ライブラリを使用しているとします。

  1. テキストエディターを開き、コードを記述します。ファイル (filename.js など) を保存します。

    このファイル名は、Lambda 関数の作成でハンドラーを指定するために使用します。

  2. 同じディレクトリで、npm を使用してコードが依存するライブラリをインストールします。たとえば、コードが async ライブラリを使用する場合、次の npm コマンドを使用します。

    npm install async
  3. ディレクトリは次の構造になります。

    filename.js node_modules/async node_modules/async/lib node_modules/async/lib/async.js node_modules/async/package.json
  4. フォルダーの内容を zip 圧縮します。これがデプロイパッケージ (たとえば、sample.zip) です。

次に、Lambda 関数の作成時にデプロイパッケージとしてこの .zip ファイル名を指定します。

ネイティブバイナリなどの独自のバイナリを含める場合は、単純にアップロードする Zip ファイルにパッケージ化して、Node.js または先に開始した他の処理からそれらを呼び出すときに参照 (作成した Zip ファイル内の相対パスを含めます) します。関数コードの先頭に次のものが含まれることを確認してください。process.env[‘PATH’] = process.env[‘PATH’] + ‘:’ + process.env[‘LAMBDA_TASK_ROOT’]

Lambda 関数パッケージにネイティブバイナリを含める方法について詳しくは、「AWS Lambda で実行可能ファイルを実行する」を参照してください。また、Zip ファイルのコンテンツに必要なアクセス権限を指定する必要があります。詳細については、「Lambda デプロイパッケージのアクセス許可ポリシー」を参照してください。