これは AWS CDK v2 デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CDK アプリでコンテナイメージアセットを構築およびデプロイする
AWS Cloud Development Kit (AWS CDK) を使用してコンテナイメージアセットを構築する場合、Docker はデフォルトでこれらのアクションを実行します。別のコンテナ管理ツールを使用する場合は、 CDK_DOCKER
環境変数を使用して Docker を置き換えることができます。
例: AWS CDK を使用してコンテナイメージアセットを構築して公開する
以下は、デフォルトで Docker を使用してコンテナアセットを構築して Amazon Elastic Container Registry (Amazon ECR) に発行する AWS CDK アプリの簡単な例です。
- プロジェクト構造
-
my-cdk-app/ ├── lib/ │ ├── my-stack.ts │ └── docker/ │ ├── Dockerfile │ └── app/ │ └── index.js ├── bin/ │ └── my-cdk-app.ts ├── package.json ├── tsconfig.json └── cdk.json
- Dockerfile
-
FROM public.ecr.aws/lambda/nodejs:16 # Copy application code COPY app/ /var/task/ # (Optional) Install dependencies # RUN npm install # The Lambda Node.js base image looks for index.handler by default
- アプリケーションコード
-
lib/docker/app/index.js
に作成console.log("Hello from inside the container!");
- CDK スタック
-
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as ecr_assets from 'aws-cdk-lib/aws-ecr-assets'; export class MyStack extends cdk.Stack { constructor(scope: Construct, id: string) { super(scope, id); // Define a Docker image asset const dockerImageAsset = new ecr_assets.DockerImageAsset(this, 'MyDockerImage', { directory: 'lib/docker', // Path to the directory containing the Dockerfile }); // Output the ECR URI new cdk.CfnOutput(this, 'ECRImageUri', { value: dockerImageAsset.imageUri, }); } }
- CDK アプリ
-
#!/usr/bin/env node import * as cdk from 'aws-cdk-lib'; import { MyStack } from '../lib/my-stack'; const app = new cdk.App(); new MyStack(app, 'MyStack');
を実行するとcdk deploy
、 AWS Cloud Development Kit (AWS CDK) コマンドラインインターフェイス (CLI) は以下を実行します。
-
Docker イメージを構築する – 指定されたディレクトリ () の に基づいて
docker build
ローカルDockerfile
で を実行しますlib/docker
。 -
イメージにタグを付ける –
docker tag
を実行して、イメージの内容に基づいてビルドされたイメージに一意のハッシュをタグ付けします。 -
Amazon ECR に発行 –
docker push
を実行して、コンテナイメージを Amazon ECR リポジトリに発行します。このリポジトリは既に存在している必要があります。これは、デフォルトのブートストラッププロセス中に作成されます。 -
イメージ URI の出力 – デプロイが成功すると、発行されたコンテナイメージの Amazon ECR URI がコマンドプロンプトに出力されます。これは Amazon ECR の Docker イメージの URI です。
Docker を別のコンテナ管理ツールに置き換える方法
CDK_DOCKER
環境変数を使用して、代替コンテナ管理ツールのバイナリへのパスを指定します。Docker を に置き換える例を次に示しますFinch。
$ which finch /usr/local/bin/finch # Locate the path to the binary $ export CDK_DOCKER='/usr/local/bin/finch' # Set the environment variable $ cdk deploy # Deploy using the replacement
エイリアスまたはリンクはサポートされていません。Docker を置き換えるには、 CDK_DOCKER
環境変数を使用する必要があります。
サポートされている Docker ドロップイン交換エンジン
Finch はサポートされていますが、使用できない Docker 機能や、ツールの進化に応じて動作が異なる場合があります。Finch の詳細については、 AWS オープンソースブログの「Ready for Flight: Announcing Finch 1.0 GA!
他のコンテナ管理ツールが機能する場合があります。CDK は、サポートされているかどうかを判断するために使用している Docker 置換を確認しません。ツールに同等の Docker コマンドがあり、同様に動作する場合は、機能する必要があります。