CDK アプリでコンテナイメージアセットを構築およびデプロイする - AWS クラウド開発キット (AWS CDK) v2

これは 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) は以下を実行します。

  1. Docker イメージを構築する – 指定されたディレクトリ () の に基づいてdocker buildローカルDockerfileで を実行しますlib/docker

  2. イメージにタグを付ける – docker tagを実行して、イメージの内容に基づいてビルドされたイメージに一意のハッシュをタグ付けします。

  3. Amazon ECR に発行docker pushを実行して、コンテナイメージを Amazon ECR リポジトリに発行します。このリポジトリは既に存在している必要があります。これは、デフォルトのブートストラッププロセス中に作成されます。

  4. イメージ 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 コマンドがあり、同様に動作する場合は、機能する必要があります。