Lambda 関数のデプロイ - AWS Lambda

Lambda 関数のデプロイ

Lambda 関数にコードをデプロイする際は、zip ファイルアーカイブをアップロードするか、コンテナーイメージを作成してアップロードします。

.zip ファイルアーカイブ

.zip ファイルアーカイブには、アプリケーションコードとその依存関係が集録されています。Lambda コンソールまたはツールキットを使用して関数を作成する際、コードの.zip ファイルアーカイブが、Lambda により自動的に作成されます。

Lambda API、コマンドラインツール、または AWS SDK を使用して関数を管理する場合は、デプロイパッケージを作成する必要があります。また、関数でコンパイルされた言語を使用している場合、または関数に依存関係を追加する場合も、デプロイパッケージを作成する必要があります。デプロイパッケージは、関数のコードをデプロイする際に、Amazon Simple Storage Service (Amazon S3) もしくはローカルマシンからアップロードします。

Lambda コンソール、AWS Command Line Interface (AWS CLI) を使用してデプロイパッケージとして .zip ファイルをアップロードしたり、Amazon Simple Storage Service (Amazon S3) バケットにアップロードしたりできます。

デプロイパッケージファイルのアクセス許可

Lambda ランタイムには、デプロイパッケージ内のファイルを読み取るアクセス許可が必要です。Linux のアクセス権限の 8 進表記では、Lambda には非実行ファイル用に 644 のアクセス権限 (rw-r--r--) が必要であり、ディレクトリと実行可能ファイル用に 755 のアクセス権限 (rwxr-xr-x) が必要です。

Linux と MacOS で、デプロイパッケージ内のファイルやディレクトリのファイルアクセス権限を変更するには、chmod コマンドを使用します。例えば、実行可能ファイルに正しいアクセス許可を付与するには、次のコマンドを実行します。

chmod 755 <filepath>

Windows でファイルアクセス許可を変更するには、「Microsoft Windows ドキュメント」の「Set, View, Change, or Remove Permissions on an Object」を参照してください。

コンテナイメージ

Docker コマンドラインインターフェイス (CLI) などのツールを使用すると、コードと依存関係をコンテナーイメージとしてパッケージ化することができます。その後、Amazon Elastic Container Registry (Amazon ECR) でホストされているコンテナレジストリに、イメージをアップロードできます。

関数を呼び出すと、Lambda は実行環境にコンテナイメージをデプロイします。Lambda は拡張機能を初期化してから、関数の初期化コード (メインハンドラ外のコード) を実行します。関数の初期化期間は、請求される実行時間に含まれていることに注意してください。

その後、Lambda は、関数設定 (ENTRYPOINT および CMD コンテナイメージ設定) で指定されたコードエントリポイントを呼び出して関数を実行します。

AWSには、関数のコードをコンテナーイメージとしてビルドする際にベースとして使用できるイメージのセットが、オープンソースとして用意されています。また、他のコンテナレジストリから代わりのベースイメージを取得して使用することもできます。AWS には、代わりのベースイメージに追加して Lambda サービスとの互換性を確保するための、オープンソースのランタイムクライアントも用意されています。

さらに AWS では、Docker CLI などのツールを使用して関数をローカルでテストするための、ランタイムインターフェイスエミュレーターも利用できます。

注記

Lambda がサポートする命令セットアーキテクチャの 1 つと互換性を持つように、各コンテナイメージを作成します。Lambda は各命令セットアーキテクチャのベースイメージを提供し、両方のアーキテクチャをサポートするベースイメージも提供します。

関数用に構築するイメージでは、アーキテクチャの 1 つだけをターゲットにする必要があります。

関数をコンテナイメージとしてパッケージ化してデプロイした場合でも、追加料金は発生しません。コンテナーイメージとしてデプロイした関数を呼び出した際に、その呼び出しリクエストと実行時間の長さに応じた課金が行われます。Amazon ECR にコンテナイメージを保存した場合にも料金が発生します。詳細については、Amazon ECR の料金を参照してください。

イメージのセキュリティ

Lambda が元のソース (Amazon ECR) から最初にコンテナイメージをダウンロードするとき、コンテナイメージは、認証されたコンバージェント暗号化方式を使用して最適化、暗号化、および保存されます。顧客データの復号化に必要なすべてのキーは、AWS KMS カスタマー管理のキーを使用して保護されます。Lambda によるカスタマー管理のキーの使用状況を追跡および監査するために、AWS CloudTrail ログを表示できます。