これは 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 イメージを構築する – 指定されたディレクトリ (
lib/docker) のDockerfileに基づいてローカルでdocker buildを実行します。 -
イメージにタグを付ける –
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 オープンソースブログ」の「飛行の準備ができました: Finch 1.0 GA のアナウンス!
他のコンテナ管理ツールは、機能する場合があります。CDK は、どの Docker 置き換えが、それがサポートされているかどうかを判断するために使用されているかを確認しません。ツールが同等の Docker コマンドを持ち、同様に動作する場合は、そのツールは機能するはずです。