スキップしてコンテンツを表示

Amazon ECR イメージと Docker を使用して Lambda 層を作成する方法を教えてください。

所要時間2分
0

環境のランタイムと互換性のある AWS Lambda 層を、Amazon Elastic Container Registry (Amazon ECR) イメージと Docker を使用して作成したいと考えています。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。次の解決策では、Python と Linux を使用しています。手順は、他のコーディング言語やオペレーティングシステム (OS) では異なる場合があります。

前提条件: コンピュータに Docker がインストールされていること。インストール手順については、Docker Docs のウェブサイトで「Docker の取得」および「Docker エンジンのインストール」を参照してください (Linux のみ)。

ディレクトリ構造を作成し、依存関係を指定する

ディレクトリ構造を作成し、pip 要件ファイル requirements.txt依存関係を指定します。依存関係を指定する方法の詳細については、pip のウェブサイトで「要件ファイル」を参照してください。

次のディレクトリ構造例は、Python 3.x と互換性のある Lambda レイヤーを対象としています。

my-layer/
├── requirements.txt
└── python/

注: 関数とすべてのレイヤーを解凍した後の合計サイズは、未圧縮デプロイパッケージのサイズ制限である 250 MB を超えることはできません。Lambda での Python バージョンのサポートに関する詳細については、「Python を使用して Lambda 関数をビルドする」を参照してください。

ライブラリの依存関係をサブフォルダにインストールする

ディレクトリ構造で指定したランタイムごとに、次のコマンドを 1 回実行します。

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.x" /bin/sh -c "pip install -r requirements.txt -t python/; exit"

注: 3.x をインストールする、互換性のある Python ライブラリに置き換えてください。

レイヤーの .zip ファイルアーカイブを作成する

python フォルダを圧縮し、レイヤーのパッケージを作成するには、次のコマンドを実行します。

zip -r mypythonlibs.zip python > /dev/null

注: mypythonlibs をレイヤーパッケージの名前に置き換えてください。

レイヤーを作成、更新する

次の AWS CLI コマンド publish-layer-version を実行します。

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.x"

注: mypythonlibs をレイヤーパッケージ名に、My python libs をレイヤーパッケージの説明に、python3.x をインストールした Python ライブラリに置き換えてください。

出力を参照し、レイヤーの Amazon リソースネーム (ARN) を書き留めます。

Lambda 関数の構成を更新し、レイヤーを使用する設定を行う

次の update-function-configuration コマンドを実行します。

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

注: arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 をレイヤーの ARN に、my-function を関数名に置き換えてください。上記のコマンドは、Lambda 環境内の /opt フォルダにレイヤーを配置します。/opt フォルダには、Lambda 関数のコードからアクセスできます。

関連情報

Python (Boto3) Lambda 関数が返すエラー "unknown service"、"parameter validation failed"、 の解決方法を教えてください"object has no attribute"

AWS Lambda の更新情報 - 任意のプログラミング言語で共通のコンポーネントを共有できます

Amazon ECR Public Gallery

AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ