AWS CDKツールキット (cdkコマンド) - AWS Cloud Development Kit (AWS CDK) v2

これはAWS CDK v2 開発者ガイドです。古いCDK v1は2022年6月1日にメンテナンスを開始し、今後は重大なバグ修正とセキュリティパッチのみが提供されます。新機能はCDK v2専用に開発されます。CDK v1 Support は、2023 年 6 月 1 日に完全に終了します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CDKツールキット (cdkコマンド)

AWS CDKツールキット(CLI コマンド)はcdk、AWS CDKアプリを操作するための主要なツールです。アプリを実行し、定義したアプリケーションモデルを調べて、AWS CloudFormationによって生成されたテンプレートを生成してデプロイしますAWS CDK。また、AWS CDKプロジェクトの作成や操作に役立つその他の機能も用意されています。このトピックには、CDK Toolkit の一般的な使用例に関する情報が含まれています。

AWS CDKツールキットはノードPackage マネージャーとともにインストールされます。通常、グローバルにインストールすることをお勧めします。

npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
ヒント

の複数のバージョンを定期的に使用する場合はAWS CDK、対応するバージョンのAWS CDK Toolkit を個々の CDK プロジェクトにインストールすることを検討してください。そのためには、-gnpm installコマンドを省略してください。次にnpx aws-cdk、を使用して呼び出します。これはローカルバージョンが存在する場合はそれを実行し、存在しない場合はグローバルバージョンにフォールバックします。

ツールキットコマンド

CDK Toolkit のすべてのコマンドはで始まりcdk、その後にサブコマンド (listsynthesizedeploy、など) が続きます。一部のサブコマンドにはls、同等の短いバージョン (synth、など) があります。オプションと引数は、任意の順序でサブコマンドに続きます。使用可能なコマンドは、ここにまとめられています。

コマンド

関数

cdk list (ls)

アプリ内のスタックを一覧表示します

cdk synthesize (synth)

1 CloudFormation つまたは複数の指定されたスタックのテンプレートを合成して印刷します

cdk bootstrap

CDK Toolkit ステージングスタックをデプロイします。を参照してくださいブートストラッピング

cdk deploy

1 つ以上の Desired Stack をデプロイします

cdk destroy

1 つ以上の Desired Stack を破棄します

cdk diff

指定されたスタックとその依存関係を、 CloudFormation デプロイされたスタックまたはローカルテンプレートと比較します

cdk metadata

指定されたスタックに関するメタデータを表示します

cdk init

指定されたテンプレートから現在のディレクトリに新しい CDK プロジェクトを作成します。

cdk context

キャッシュされたコンテキスト値を管理します

cdk docs (doc)

ブラウザで CDK API リファレンスを開きます

cdk doctor

CDK プロジェクトに潜在的な問題がないかチェックします

各コマンドで使用できるオプションについては、ツールキットリファレンスまたはを参照してください組み込みヘルプ

オプションとその値の指定

コマンドラインオプションは 2 つのハイフン (--) で始まります。よく使用されるオプションには、1 つのハイフンで始まる単一文字の同義語 (たとえば、に同義語がある-a)--app があります。AWS CDKToolkit コマンドのオプションの順序は重要ではありません。

すべてのオプションには値を指定できますが、その値はオプション名の後に付ける必要があります。=値は名前と空白または等号で区切ることができます。次の 2 つのオプションは同等です。

--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack

一部のオプションはフラグ (ブーリアン) です。truefalse値としてまたはを指定できます。値を指定しない場合、値は次のようになりますtrue。オプション名の先頭に、no-暗示的に付けることもできますfalse

# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false

複数の値を指定するには--context--parameters--plugin--tags--trust、などのオプションを複数回指定できます。これらは CDK Toolkit[array] のヘルプにタイプがあると記載されています。例:

cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe

組み込みヘルプ

AWS CDKツールキットにはヘルプが統合されています。次のコマンドを実行すると、ユーティリティに関する一般的なヘルプと提供されるサブコマンドのリストが表示されます。

cdk --help

たとえばdeploy、特定のサブコマンドのヘルプを表示するには、--helpフラグの前にそのサブコマンドを指定します。

cdk deploy --help

cdk versionAWS CDKツールキットのバージョンを表示する際に問題が発生しました。サポートをリクエストする際は、この情報を提供してください。

バージョンレポート

がどのように使用されているかを把握するために、AWS CDKアプリケーションが使用する構成要素は、AWS::CDK::Metadataとして識別されるリソースを使用して収集および報告されます。AWS CDKAWS CloudFormationこのリソースはテンプレートに追加され、簡単に確認できます。この情報は、AWSセキュリティや信頼性の問題が既知の構成を使用しているスタックを識別するためにも使用できます。また、重要な情報をユーザーに伝えるためにも使用できます。

注記

バージョン 1.93.0 より前のバージョンでは、はスタックで使用されるコンストラクトではなく、AWS CDK合成中にロードされたモジュールの名前とバージョンを報告していました。

デフォルトでは、はスタックで使用される次の NPMAWS CDK モジュール内のコンストラクトの使用を報告します。

  • AWS CDKコアモジュール

  • AWSライブラリモジュールの構築

  • AWSソリューション構成モジュール

  • AWSレンダーファーム導入キットモジュール

AWS::CDK::Metadataリソースは次のようになります。

CDKMetadata:
  Type: "AWS::CDK::Metadata"
  Properties:
    Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="

Analyticsこのプロパティは、gzip 形式で Base64 でエンコードされ、プレフィックスでエンコードされたスタック内の構成のリストです。

バージョンレポートをオプトアウトするには、次のいずれかの方法を使用します。

  • cdk--no-version-reporting引数を指定したコマンドを使用して、1 つのコマンドをオプトアウトします。

    cdk --no-version-reporting synth

    AWS CDKツールキットはデプロイ前に新しいテンプレートを合成するので、--no-version-reportingcdk deployコマンドも追加する必要があることを覚えておいてください。

  • ./cdk.jsonまたはで falseversionReporting に設定します~/.cdk.json。これは、--version-reporting個々のコマンドで指定してオプトインしない限りオプトアウトされます。

    { "app": "...", "versionReporting": false }

認証情報とリージョンを指定する

CDK Toolkit は、AWSAWSアカウント認証情報とデプロイ先のリージョンを知っている必要があります。これは、デプロイ操作や合成中のコンテキスト値の取得に必要です。アカウントと地域が一緒になって環境を構成します

重要

AWS day-to-day メインアカウントをタスクに使用しないことを強くお勧めします。代わりに、IAM でユーザーを作成し、その認証情報を CDK で使用してください。

認証情報と地域は、環境変数または構成ファイルを使用して指定できます。これらは、やさまざまなAWS SDKAWSAWS CLI などの他のツールで使用されているものと同じ変数とファイルです。CDK Toolkit は、次の順序で情報を検索します。

  • AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGIONおよび環境変数。1 つまたは 2 つだけでなく、常に 3 つの変数すべてを指定してください。

  • AWSconfigcredentials標準とファイルで定義され、--profilecdkコマンドのオプションを使用して指定された特定のプロファイル。

  • [default]AWSconfigcredentials標準とファイルのセクション。

注記

AWSconfigcredentials標準とファイルは、と~/.aws/credentials (macOS/Linux)%USERPROFILE%\.aws\config またはと%USERPROFILE%\.aws\credentials (Windows) にあります。~/.aws/config

AWS CDKenvスタックのプロパティを使用してアプリで指定した環境は、合成時に使用されます。AWS CloudFormationこれは環境固有のテンプレートを生成するために使用され、デプロイ時には、前述の方法のいずれかで指定されたアカウントまたはリージョンを上書きします。詳細については、「環境」を参照してください。

AWS CLIがインストールされている場合、アカウント認証情報とデフォルトリージョンを設定する最も簡単な方法は、次のコマンドを実行することです。

aws configure

プロンプトが表示されたら、AWSアクセスキー ID、シークレットアクセスキー、デフォルトのリージョンを入力します。これらの値は、[default]configcredentialsおよびファイルのセクションに書き込まれます。

AWS CLIがインストールされていない場合は、configcredentialsおよびファイルを手動で作成または編集して、デフォルトの認証情報とデフォルトのリージョンを含めることができます。次の形式を使用します。

  • で、~/.aws/configまたは%USERPROFILE%\.aws\config

    [default] region=us-west-2
  • で、~/.aws/credentialsまたは%USERPROFILE%\.aws\credentials

    [default] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

AWSセクションで認証情報とリージョンを指定するほかに、[default][profile NAME]セクションを 1 つ以上追加することもできます。ここで、NAME はプロファイルの名前です。

  • で、~/.aws/configまたは%USERPROFILE%\.aws\config

    [profile test] region=us-east-1 [profile prod] region=us-west-1
  • で、~/.aws/credentialsまたは%USERPROFILE%\.aws\credentials

    [profile test] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY [profile test] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

名前付きプロファイルは、configcredentials必ずとファイルの両方に追加してください。config指定された名前のプロファイルがファイルに見つからない場合、AWS CDK[default]ツールキットはセクション内のリージョンの使用にフォールバックしません。ただし、AWS他のツールでも可能です。

重要

プロファイルには名前を付けないでくださいdefault。つまり、[profile default]configまたはのいずれにもセクションを使用しないでくださいcredentials

注記

は、AWSを含む他のツールや SDKAWS CDK と同じソースファイルの認証情報を使用しますAWS Command Line Interface。ただし、AWS CDKはこれらのツールとは動作が多少異なる場合があります。ボンネットを使用しています。AWS SDK for JavaScriptの認証情報の設定の詳細についてはAWS SDK for JavaScript、「認証情報の設定」を参照してください。

オプションで--role-arn (または-r) オプションを使用して、デプロイに使用する IAM ロールの ARN を指定できます。この役割は、AWS使用するアカウントが引き受ける必要があります。

app コマンドの指定

CDK Toolkit の多くの機能では、1AWS CloudFormation つ以上のテンプレートを合成する必要があり、そのためにはアプリケーションの実行が必要になります。は、AWS CDKさまざまな言語で書かれたプログラムをサポートします。そのため、設定オプションを使用して、アプリの実行に必要な正確なコマンドを指定します。このオプションは、2 つの方法で指定できます。

まず、最も一般的には、appファイル内のキーを使用して指定できますcdk.json。AWS CDKこれはプロジェクトのメインディレクトリにあります。CDK Toolkit は、を使用して新しいプロジェクトを作成するときに適切なコマンドを提供しますcdk init。たとえばcdk.json、 TypeScript これは新しいプロジェクトのものです。

{ "app": "npx ts-node bin/hello-cdk.ts" }

CDK Toolkit は、アプリを実行しようとしたときに、cdk.json現在の作業ディレクトリを検索します。そのため、CDK Toolkit コマンドを発行するために、プロジェクトのメインディレクトリでシェルを開いたままにしておくとよいでしょう。

CDK Toolkit は、アプリキーが見つからない場合は~/.cdk.json (ホームディレクトリ内の) アプリキーも検索します./cdk.json。ここでappコマンドを追加すると、通常同じ言語の CDK コードを使用する場合に便利です。

他のディレクトリにいる場合、またはにあるコマンド以外のコマンドを使用してアプリを実行する場合はcdk.json--app (または-a) オプションを使用して指定してください。

cdk --app "npx ts-node bin/hello-cdk.ts" ls

デプロイ時には、などの合成クラウドアセンブリを含むディレクトリをの値として指定することもできます--appcdk.out指定されたスタックはこのディレクトリからデプロイされ、アプリケーションは合成されません。

スタックを指定する

多くの CDK Toolkit コマンド(たとえば、cdk deploy)は、アプリで定義されたスタックで動作します。アプリにスタックが 1 つしか含まれていない場合、CDK Toolkit はスタックを明示的に指定しなければ、ユーザーがスタックを 1 つしか含まないと見なします。

それ以外の場合は、処理する 1 つまたは複数のスタックを指定する必要があります。これを行うには、コマンドラインで目的のスタックを ID で個別に指定します。ID は、スタックをインスタンス化するときに 2 番目の引数で指定された値であることを思い出してください。

cdk synth PipelineStack LambdaStack

ワイルドカードを使用して、パターンに一致する ID を指定することもできます。

  • ?任意の 1 文字をマッチングします

  • *任意の数の文字に一致します (*単独ですべてのスタックに一致します)

  • **階層内のすべてにマッチする

--allオプションを使用してすべてのスタックを指定することもできます。

アプリが CDK Pipelines を使用している場合、CDK Toolkit はスタックとステージを階層として認識します。また、--all*オプションとワイルドカードは最上位のスタックにのみ一致します。すべてのスタックを一致させるには、を使用してください****特定の階層の下にあるすべてのスタックを示すのにも使えます。

ワイルドカードを使用する場合は、パターンを引用符で囲むか、\ワイルドカードをでエスケープしてください。そうしないと、シェルはパターンを現在のディレクトリにあるファイルの名前に展開しようとする可能性があります。せいぜい、これでは期待どおりに動作しません。最悪の場合、意図しないスタックをデプロイできる可能性があります。cmd.exeこれはワイルドカードを展開しないため、Windows では厳密には必要ありませんが、それでも良い習慣です。

cdk synth "*Stack" # PipelineStack, LambdaStack, etc. cdk synth 'Stack?' # StackA, StackB, Stack1, etc. cdk synth \* # All stacks in the app, or all top-level stacks in a CDK Pipelines app cdk synth '**' # All stacks in a CDK Pipelines app cdk synth 'PipelineStack/Prod/**' # All stacks in Prod stage in a CDK Pipelines app
注記

スタックを指定する順序は、スタックが処理される順序と異なる場合があります。AWS CDKツールキットは、スタック間の依存関係を考慮して、スタックを処理する順序を決定します。たとえば、あるスタックが別のスタックによって生成された値 (2 番目のスタックで定義されたリソースの ARN など) を使用するとします。この場合、この依存関係により、2 番目のスタックが最初のスタックより先に合成されます。addDependency()スタックのメソッドを使用して、スタック間の依存関係を手動で追加できます。

AWS環境のブートストラップ

CDK を使用してスタックをデプロイするには、AWS CDK特別な専用リソースをプロビジョニングする必要があります。cdk bootstrapこのコマンドにより、必要なリソースが自動的に作成されます。ブートストラップが必要なのは、これらの専用リソースを必要とするスタックをデプロイする場合に限られます。詳細については、「ブートストラッピング」を参照してください。

cdk bootstrap

次に示すように、引数なしでコマンドを実行すると、cdk bootstrapコマンドは現在のアプリケーションを合成し、そのスタックがデプロイされる環境をブートストラップします。環境を明示的に指定していない環境に依存しないスタックがアプリに含まれている場合は、デフォルトのアカウントとリージョン、またはを使用して指定された環境がブートストラップされます--profile

アプリの外部では、ブートストラップする環境を明示的に指定する必要があります。また、AWSアプリやローカルプロファイルで指定されていない環境をブートストラップする場合もあります。認証情報は、~/.aws/credentials指定されたアカウントとリージョンの設定などを行う必要があります。必要な認証情報を含むプロファイルを指定できます。

cdk bootstrap ACCOUNT-NUMBER/REGION # e.g. cdk bootstrap 1111111111/us-east-1 cdk bootstrap --profile test 1111111111/us-east-1
重要

このようなスタックをデプロイする各環境 (アカウントとリージョンの組み合わせ) は、個別にブートストラップする必要があります。

AWSAWS CDKブートストラップされたリソースに格納されている内容に対して料金が発生する場合があります。さらに-bootstrap-customer-key、を使用する場合は AWS KMS キーが作成されますが、これにも環境ごとの料金が発生します。

注記

以前のバージョンのブートストラップテンプレートでは、デフォルトで KMS キーが作成されていました。課金を避けるには、--no-bootstrap-customer-keyを使用して再起動してください。

注記

CDK Toolkit v2 は、CDK v1 でデフォルトで使用されていたレガシーテンプレートと呼ばれるオリジナルのブートストラップテンプレートをサポートしていません。

重要

最新のブートストラップテンプレートでは、AWS--trustによって暗示される権限がリスト内のどのアカウントにも効果的に付与されます。--cloudformation-execution-policiesデフォルトでは、これにより、ブートストラップアカウント内の任意のリソースに対する読み取りと書き込みの権限が拡張されます。ブートストラップスタックには、使い慣れたポリシーと信頼できるアカウントを設定してください

新しいアプリの作成

新しいアプリを作成するには、そのアプリ用のディレクトリを作成し、cdk initそのディレクトリ内で発行します。

mkdir my-cdk-app cd my-cdk-app cdk init TEMPLATE --language LANGUAGE

サポートされている言語 (言語) は以下のとおりです。

コード

言語

typescript

TypeScript

javascript

JavaScript

python

Python

java

Java

csharp

C#

テンプレートはオプションのテンプレートです。目的のテンプレートがデフォルトの app の場合は、省略できます。使用可能なテンプレートは以下のとおりです。

テンプレート

説明

app(デフォルト)

AWS CDK空のアプリを作成します。

sample-app

Amazon SQS キューと Amazon SNSAWS CDK トピックを含むスタックを使用してアプリケーションを作成します。

テンプレートは、プロジェクトフォルダの名前を使用して、新しいアプリケーションに含まれるファイルとクラスの名前を生成します。

リストスタック

AWS CDKアプリケーション内のスタックの ID のリストを表示するには、以下の対応するコマンドのいずれかを入力します。

cdk list cdk ls

アプリケーションに CDK Pipelines スタックが含まれている場合、CDK Toolkit はスタック名をパイプライン階層内の位置に応じたパスとして表示します。(たとえば、PipelineStackPipelineStack/ProdPipelineStack/Prod/MyServiceなど)

アプリに多数のスタックが含まれている場合は、一覧表示するスタックのスタック ID の全部または一部を指定できます。詳細については、「スタックを指定する」を参照してください。

--longフラグを追加すると、スタック名や環境 (AWSアカウントとリージョン) など、スタックに関する詳細情報が表示されます。

スタックの合成

cdk synthesizeコマンド(ほとんどの場合は省略されますsynth)は、 CloudFormation アプリで定義されたスタックをテンプレートに統合します。

cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
注記

CDK Toolkitは、ほとんどの操作(スタックのデプロイや比較など)の前に、実際にアプリを実行し、新しいテンプレートを合成します。これらのテンプレートは、cdk.outデフォルトでディレクトリに保存されます。cdk synthこのコマンドは、指定した 1 つ以上のスタックの生成されたテンプレートを出力するだけです。

cdk synth --help使用可能なすべてのオプションについては、を参照してください。次のセクションでは、最も頻繁に使用されるオプションをいくつか説明します。

コンテキスト値の指定

--contextor-c オプションを使用して、ランタイムコンテキスト値を CDK アプリに渡します。

# specify a single context value cdk synth --context key=value MyStack # specify multiple context values (any number) cdk synth --context key1=value1 --context key2=value2 MyStack

複数のスタックをデプロイする場合、指定されたコンテキスト値は通常、すべてのスタックに渡されます。必要に応じて、コンテキスト値の前にスタック名を付けることで、スタックごとに異なる値を指定できます。

# different context values for each stack cdk synth --context Stack1:key=value Stack2:key=value Stack1 Stack2

表示形式の指定

デフォルトでは、合成されたテンプレートは YAML 形式で表示されます。代わりに JSON--json 形式で表示するフラグを追加してください。

cdk synth --json MyStack

出力ディレクトリの指定

合成テンプレートを以外のディレクトリに書き込むには--output (-o) オプションを追加しますcdk.out

cdk synth --output=~/templates

スタックのデプロイ

cdk deployサブコマンドは、1AWS つ以上の指定されたスタックをアカウントにデプロイします。

cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
注記

CDK Toolkit は何かをデプロイする前にアプリを実行し、AWS CloudFormation新しいテンプレートを合成します。そのため、使用できるほとんどのコマンドラインオプションcdk synth (たとえば、--context) も使用できますcdk deploy

cdk deploy --help使用可能なすべてのオプションについては、を参照してください。次のセクションでは、最も便利なオプションをいくつか説明します。

合成のスキップ

cdk deployこのコマンドは通常、デプロイ前にアプリのスタックを合成して、デプロイにアプリの最新バージョンが反映されていることを確認します。前回からコードを変更していないことがわかっている場合はcdk synth、デプロイ時に重複する合成ステップを抑制できます。そのためには、cdk.out--appオプションでプロジェクトのディレクトリを指定します。

cdk deploy --app cdk.out StackOne StackTwo

ロールバックの無効化

AWS CloudFormationには、デプロイをアトミックに行えるように変更をロールバックする機能があります。つまり、全体として成功するか失敗するかのどちらかです。AWS CDKAWS CloudFormationはテンプレートを合成してデプロイするため、この機能が継承されます。

ロールバックにより、リソースは常に一貫した状態に保たれます。これは本番環境スタックにとって不可欠です。ただし、インフラストラクチャの開発中には避けられない障害もあり、失敗したデプロイをロールバックすると処理が遅くなる可能性があります。

このため、CDK Toolkit--no-rollbackcdk deploy ではコマンドに追加することでロールバックを無効にできます。このフラグを使用すると、失敗したデプロイはロールバックされません。代わりに、障害が発生したリソースの前にデプロイされたリソースはそのまま残り、次のデプロイは障害が発生したリソースから始まります。デプロイを待つ時間が大幅に短縮され、インフラストラクチャの開発により多くの時間を費やすことができます。

ホットスワップ

--hotswapフラグを使用して、AWS CloudFormationチェンジセットを生成してデプロイする代わりに、AWSリソースを直接更新してみてください。cdk deployホットスワップが不可能な場合、AWS CloudFormation展開は展開にフォールバックします。

現在、ホットスワップは Lambda 関数、Step Functions ステートマシン、および Amazon ECS コンテナイメージをサポートしています。--hotswapこのフラグはロールバックを無効にする (つまり、暗示する--no-rollback) こともできる。

重要

ホットスワップは本番環境への導入にはお勧めしません。

ウォッチモード

CDK Toolkit の監視モード (cdk watchまたは略して) はcdk deploy --watch、CDK アプリのソースファイルとアセットの変更を継続的に監視します。変更が検出されると、指定されたスタックのデプロイを直ちに実行します。

デフォルトでは、--hotswapこれらのデプロイではフラグが使用され、Lambda 関数への変更のデプロイが迅速に行われます。また、AWS CloudFormationインフラストラクチャ構成を変更した場合はデプロイにフォールバックします。cdk watchAWS CloudFormation常にフルデプロイを実行するようにするには、--no-hotswapにフラグを追加しますcdk watch

cdk watchすでにデプロイを実行している間に加えられた変更は 1 つのデプロイにまとめられ、進行中のデプロイが完了するとすぐに開始されます。

監視モードでは、"watch"プロジェクトのキーを使用して監視するファイルを決定します。cdk.jsonデフォルトでは、これらのファイルはアプリケーションファイルおよびアセットですが、"include""exclude""watch"キーのおよびエントリを変更することで変更できます。cdk.json次のファイルに、これらのエントリの例を示します。

{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }

cdk watch"build"cdk.json合成前にからのコマンドを実行してアプリをビルドします。デプロイで Lambda コード (または CDK アプリに含まれないもの) をビルドまたはパッケージ化するためのコマンドが必要な場合は、ここに追加してください。

Git スタイルのワイルドカード (との両方) は***"watch""build"とキーで使用できます。各パスは、cdk.jsonの親ディレクトリを基準にして解釈されます。includeのデフォルト値は**/*、プロジェクトのルートディレクトリにあるすべてのファイルとディレクトリを意味します。 excludeはオプションです。

重要

監視モードは、本稼働環境では推奨されていません。

AWS CloudFormationパラメーターの指定

AWS CDKツールキットは、AWS CloudFormationデプロイ時のパラメーターの指定をサポートします--parametersこれらはコマンドラインでフラグの後に指定できます。

cdk deploy MyStack --parameters uploadBucketName=UploadBucket

複数のパラメータを定義するには、--parameters複数のフラグを使用します。

cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket

複数のスタックをデプロイする場合、スタックごとにパラメータに異なる値を指定できます。そのためには、パラメーターの名前の前にスタック名とコロンを付けます。それ以外の場合は、同じ値がすべてのスタックに渡されます。

cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket

デフォルトでは、AWS CDKは以前のデプロイのパラメータ値を保持し、明示的に指定されていない場合は後のデプロイで使用します。--no-previous-parametersフラグを使用すると、すべてのパラメータを指定する必要があります。

出力ファイルの指定

AWS CloudFormationスタックで出力が宣言されている場合、これらは通常、デプロイの終了時に画面に表示されます。JSON 形式のファイルに書き込むには、--outputs-fileフラグを使用します。

cdk deploy --outputs-file outputs.json MyStack

セキュリティ関連の変更

セキュリティ体制に影響を及ぼす意図しない変更からユーザーを保護するために、AWS CDKツールキットはセキュリティ関連の変更を展開する前に承認するよう求めます。承認が必要な変更レベルを指定できます。

cdk deploy --require-approval LEVEL

LEVEL には次のいずれかを使用できます。

期間

意味

never

承認は不要です

any-change

IAM security-group-related または変更には承認が必要

broadening(デフォルト)

IAM ステートメントまたはトラフィックルールが追加される場合は承認が必要ですが、削除には承認は必要ありません

cdk.jsonこの設定はファイルでも構成できます。

{ "app": "...", "requireApproval": "never" }

スタックを比較します

cdk diffこのコマンドは、アプリに定義されているスタック (およびその依存関係) の現在のバージョンを、AWS CloudFormationデプロイ済みのバージョンまたは保存されたテンプレートと比較し、変更のリストを表示します。

Stack HelloCdkStack
IAM Statement Changes
┌───┬──────────────────────────────┬────────┬──────────────────────────────┬──────────────────────────────┬───────────┐
│   │ Resource                     │ Effect │ Action                       │ Principal                    │ Condition │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${Custom::S3AutoDeleteObject │ Allow  │ sts:AssumeRole               │ Service:lambda.amazonaws.com │           │
│   │ sCustomResourceProvider/Role │        │                              │                              │           │
│   │ .Arn}                        │        │                              │                              │           │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${MyFirstBucket.Arn}         │ Allow  │ s3:DeleteObject*             │ AWS:${Custom::S3AutoDeleteOb │           │
│   │ ${MyFirstBucket.Arn}/*       │        │ s3:GetBucket*                │ jectsCustomResourceProvider/ │           │
│   │                              │        │ s3:GetObject*                │ Role.Arn}                    │           │
│   │                              │        │ s3:List*                     │                              │           │
└───┴──────────────────────────────┴────────┴──────────────────────────────┴──────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐
│   │ Resource                                               │ Managed Policy ARN                                     │
├───┼────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Ro │ {"Fn::Sub":"arn:${AWS::Partition}:iam::aws:policy/serv │
│   │ le}                                                    │ ice-role/AWSLambdaBasicExecutionRole"}                 │
└───┴────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Parameters
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3Bucket AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F: {"Type":"String","Description":"S3 bucket for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3VersionKey AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626: {"Type":"String","Description":"S3 key for asset version \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/ArtifactHash AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A: {"Type":"String","Description":"Artifact hash for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}

Resources
[+] AWS::S3::BucketPolicy MyFirstBucket/Policy MyFirstBucketPolicy3243DEFD
[+] Custom::S3AutoDeleteObjects MyFirstBucket/AutoDeleteObjectsCustomResource MyFirstBucketAutoDeleteObjectsCustomResourceC52FCF6E
[+] AWS::IAM::Role Custom::S3AutoDeleteObjectsCustomResourceProvider/Role CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092
[+] AWS::Lambda::Function Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F
[~] AWS::S3::Bucket MyFirstBucket MyFirstBucketB8884501
 ├─ [~] DeletionPolicy
 │   ├─ [-] Retain
 │   └─ [+] Delete
 └─ [~] UpdateReplacePolicy
     ├─ [-] Retain
     └─ [+] Delete

アプリのスタックを既存のデプロイと比較するには:

cdk diff MyStack

CloudFormation アプリのスタックを保存済みのテンプレートと比較するには:

cdk diff --template ~/stacks/MyStack.old MyStack

構成 (cdk.json)

多くの CDK Toolkit コマンドラインフラグのデフォルト値は、cdk.json.cdk.jsonプロジェクトのファイルまたはユーザーディレクトリのファイルに保存できます。以下は、サポートされている構成設定のアルファベット順のリファレンスです。

キー メモ CDK Toolkit オプション
app CDK アプリケーションを実行するコマンド。 --app
assetMetadata その場合false、CDK はアセットを使用するリソースにメタデータを追加しません。 --no-asset-metadata
bootstrapKmsKeyId Amazon S3AWS KMS デプロイバケットの暗号化に使用されるキーの ID を上書きします。 --bootstrap-kms-key-id
build 合成前に CDK アプリケーションをコンパイルまたはビルドするコマンド。入室は許可されていません~/.cdk.json --build
browser cdk docsサブコマンドの Web ブラウザを起動するためのコマンド。 --browser
context ランタイムコンテキスト を参照してください。設定ファイル内のコンテキスト値はによって消去されませんcdk context --clear。(CDK Toolkitcdk.context.json はキャッシュされたコンテキスト値をに格納します)。 --context
debug その場合true、CDK Toolkit はデバッグに役立つより詳細な情報を出力します。 --debug
language 新しいプロジェクトの初期化に使用される言語。 --language
lookups その場合false、コンテキスト検索は許可されません。コンテキスト検索を実行する必要がある場合、合成は失敗します。 --no-lookups
notices If はfalse、セキュリティの脆弱性、リグレッション、およびサポートされていないバージョンに関するメッセージの表示を抑制します。 --no-notices
output 合成クラウドアセンブリが出力されるディレクトリの名前 (デフォルト"cdk.out")。 --outputs-file
outputsFile AWS CloudFormationデプロイされたスタックからの出力が書き込まれるファイル (JSON 形式)。 --outputs-file
pathMetadata その場合false、CDK パスメタデータは合成テンプレートに追加されません。 --no-path-metadata
plugin CDK を拡張するパッケージのパッケージ名またはローカルパスを指定する JSON 配列 --plugin
profile AWS地域とアカウントの認証情報を指定するために使用されるデフォルトプロファイルの名前。 --profile
progress に設定すると"events"、CDK ToolkitAWS CloudFormation はデプロイ中のすべてのイベントを、進行状況バーではなく表示します。 --progress
requireApproval セキュリティ変更のデフォルト承認レベル。「セキュリティ関連の変更」を参照してください。 --require-approval
rollback その場合false、失敗したデプロイはロールバックされません。 --no-rollback
staging その場合false、アセットは出力ディレクトリにコピーされません (ソースファイルのローカルデバッグに使用AWS SAM)。 --no-staging
tags スタックのタグ (キーと値のペア) を含む JSON オブジェクト。 --tags
toolkitBucketName Lambda 関数やコンテナイメージなどのアセットのデプロイに使用される Amazon S3 バケットの名前 (を参照)AWS環境のブートストラップ --toolkit-bucket-name
toolkitStackName ブートストラップスタックの名前 (を参照)AWS環境のブートストラップ --toolkit-stack-name
versionReporting の場合false、バージョンレポートをオプトアウトします。 --no-version-reporting
watch 変更時にどのファイルがプロジェクトの再構築をトリガーすべきか、"exclude"トリガーすべきでないかを示すキーを含む"include" JSON オブジェクト。ウォッチモード を参照してください。 --watch

ツールキットリファレンス

このセクションでは、AWS CDKヘルプから派生したツールキットのリファレンスを提供します。まず、すべてのコマンドで使用できるオプションに関する一般的なリファレンスがあります。次に (折りたたみ可能なセクションで)、特定のサブコマンドでのみ使用できるオプションを使用して、特定のリファレンスを見つけることができます。

Usage: cdk -a <cdk-app> COMMAND

Commands:

  cdk list [STACKS..]             Lists all stacks in the app      [aliases: ls]

  cdk synthesize [STACKS..]       Synthesizes and prints the CloudFormation
                                  template for this stack       [aliases: synth]

  cdk bootstrap [ENVIRONMENTS..]  Deploys the CDK toolkit stack into an AWS
                                  environment

  cdk deploy [STACKS..]           Deploys the stack(s) named STACKS into your
                                  AWS account

  cdk import [STACK]              Import existing resource(s) into the given
                                  STACK

  cdk watch [STACKS..]            Shortcut for 'deploy --watch'

  cdk destroy [STACKS..]          Destroy the stack(s) named STACKS

  cdk diff [STACKS..]             Compares the specified stack with the deployed
                                  stack or a local template file, and returns
                                  with status 1 if any difference is found

  cdk metadata [STACK]            Returns all metadata associated with this
                                  stack

  cdk acknowledge [ID]            Acknowledge a notice so that it does not show
                                  up anymore                      [aliases: ack]

  cdk notices                     Returns a list of relevant notices

  cdk init [TEMPLATE]             Create a new, empty CDK project from a
                                  template.

  cdk context                     Manage cached context values

  cdk docs                        Opens the reference documentation in a browser
                                                                  [aliases: doc]

  cdk doctor                      Check your set-up for potential problems

Options:

  -a, --app                REQUIRED: command-line for executing your app or a
                           cloud assembly directory (e.g. "node bin/my-app.js")
                                                                        [string]

      --build              Command-line for a pre-synth build           [string]

  -c, --context            Add contextual string parameter (KEY=VALUE)   [array]

  -p, --plugin             Name or path of a node package that extend the CDK
                           features. Can be specified multiple times     [array]

      --trace              Print trace for stack warnings              [boolean]

      --strict             Do not construct stacks with warnings       [boolean]

      --lookups            Perform context lookups (synthesis fails if this is
                           disabled and context lookups need to be performed)
                                                       [boolean] [default: true]

      --ignore-errors      Ignores synthesis errors, which will likely produce
                           an invalid output          [boolean] [default: false]

  -j, --json               Use JSON output instead of YAML when templates are
                           printed to STDOUT          [boolean] [default: false]

  -v, --verbose            Show debug logs (specify multiple times to increase
                           verbosity)                   [count] [default: false]

      --debug              Enable emission of additional debugging information,
                           such as creation stack traces of tokens
                                                      [boolean] [default: false]

      --profile            Use the indicated AWS profile as the default
                           environment                                  [string]

      --proxy              Use the indicated proxy. Will read from HTTPS_PROXY
                           environment variable if not specified        [string]

      --ca-bundle-path     Path to CA certificate to use when validating HTTPS
                           requests. Will read from AWS_CA_BUNDLE environment
                           variable if not specified                    [string]

  -i, --ec2creds           Force trying to fetch EC2 instance credentials.
                           Default: guess EC2 instance status          [boolean]

      --version-reporting  Include the "AWS::CDK::Metadata" resource in
                           synthesized templates (enabled by default)  [boolean]

      --path-metadata      Include "aws:cdk:path" CloudFormation metadata for
                           each resource (enabled by default)
                                                       [boolean] [default: true]

      --asset-metadata     Include "aws:asset:*" CloudFormation metadata for
                           resources that uses assets (enabled by default)
                                                       [boolean] [default: true]

  -r, --role-arn           ARN of Role to use when invoking CloudFormation
                                                                        [string]

      --staging            Copy assets to the output directory (use --no-staging
                           to disable, needed for local debugging the source
                           files with SAM CLI)         [boolean] [default: true]

  -o, --output             Emits the synthesized cloud assembly into a directory
                           (default: cdk.out)                           [string]

      --notices            Show relevant notices                       [boolean]

      --no-color           Removes colors and other style from console output
                                                      [boolean] [default: false]

      --version            Show version number                         [boolean]

  -h, --help               Show help                                   [boolean]

If your app has a single stack, there is no need to specify the stack name

If one of cdk.json or ~/.cdk.json exists, options specified there will be used
as defaults. Settings in cdk.json take precedence.
cdk list [STACKS..]

Lists all stacks in the app

Options:

  -l, --long               Display environment information for each stack
                                                      [boolean] [default: false]
cdk synthesize [STACKS..]

Synthesizes and prints the CloudFormation template for this stack

Options:

  -e, --exclusively        Only synthesize requested stacks, don't include
                           dependencies                                [boolean]

      --validation         After synthesis, validate stacks with the
                           "validateOnSynth" attribute set (can also be
                           controlled with CDK_VALIDATION)
                                                       [boolean] [default: true]

  -q, --quiet              Do not output CloudFormation Template to stdout
                                                      [boolean] [default: false]
cdk bootstrap [ENVIRONMENTS..]

Deploys the CDK toolkit stack into an AWS environment

Options:

  -b, --bootstrap-bucket-name,              The name of the CDK toolkit bucket;
  --toolkit-bucket-name                     bucket will be created and must not
                                            exist                       [string]

      --bootstrap-kms-key-id                AWS KMS master key ID used for the
                                            SSE-KMS encryption          [string]

      --bootstrap-customer-key              Create a Customer Master Key (CMK)
                                            for the bootstrap bucket (you will
                                            be charged but can customize
                                            permissions, modern bootstrapping
                                            only)                      [boolean]

      --qualifier                           String which must be unique for each
                                            bootstrap stack. You must configure
                                            it on your CDK app if you change
                                            this from the default.      [string]

      --public-access-block-configuration   Block public access configuration
                                            on CDK toolkit bucket (enabled by
                                            default)                   [boolean]

  -t, --tags                                Tags to add for the stack
                                            (KEY=VALUE)    [array] [default: []]

      --execute                             Whether to execute ChangeSet
                                            (--no-execute will NOT execute the
                                            ChangeSet) [boolean] [default: true]

      --trust                               The AWS account IDs that should be
                                            trusted to perform deployments into
                                            this environment (may be repeated,
                                            modern bootstrapping only)
                                                           [array] [default: []]

      --trust-for-lookup                    The AWS account IDs that should be
                                            trusted to look up values in this
                                            environment (may be repeated, modern
                                            bootstrapping only)
                                                           [array] [default: []]

      --cloudformation-execution-policies   The Managed Policy ARNs that should
                                            be attached to the role performing
                                            deployments into this environment
                                            (may be repeated, modern
                                            bootstrapping only)
                                                           [array] [default: []]

  -f, --force                               Always bootstrap even if it would
                                            downgrade template version
                                                      [boolean] [default: false]

      --termination-protection              Toggle CloudFormation termination
                                            protection on the bootstrap stacks
                                                                       [boolean]

      --show-template                       Instead of actual bootstrapping,
                                            print the current CLI's
                                            bootstrapping template to stdout for
                                            customization
                                                      [boolean] [default: false]

      --toolkit-stack-name                  The name of the CDK toolkit stack to
                                            create                      [string]

      --template                            Use the template from the given file
                                            instead of the built-in one (use
                                            --show-template to obtain an
                                            example)                    [string]
cdk deploy [STACKS..]

Deploys the stack(s) named STACKS into your AWS account

Options:

      --all                  Deploy all available stacks
                                                      [boolean] [default: false]

  -E, --build-exclude        Do not rebuild asset with the given ID. Can be
                             specified multiple times      [array] [default: []]

  -e, --exclusively          Only deploy requested stacks, don't include
                             dependencies                              [boolean]

      --require-approval     What security-sensitive changes need manual
                             approval
                         [string] [choices: "never", "any-change", "broadening"]

      --ci                   Force CI detection       [boolean] [default: false]

      --notification-arns    ARNs of SNS topics that CloudFormation will notify
                             with stack related events                   [array]

  -t, --tags                 Tags to add to the stack (KEY=VALUE), overrides
                             tags from Cloud Assembly (deprecated)       [array]

      --execute              Whether to execute ChangeSet (--no-execute will NOT
                             execute the ChangeSet)    [boolean] [default: true]

      --change-set-name      Name of the CloudFormation change set to create
                                                                        [string]

  -f, --force                Always deploy stack even if templates are identical
                                                      [boolean] [default: false]

      --parameters           Additional parameters passed to CloudFormation at
                             deploy time (STACK:KEY=VALUE) [array] [default: {}]

  -O, --outputs-file         Path to file where stack outputs will be written as
                             JSON                                       [string]

      --previous-parameters  Use previous values for existing parameters (you
                             must specify all parameters on every deployment if
                             this is disabled)         [boolean] [default: true]

      --toolkit-stack-name   The name of the existing CDK toolkit stack (only
                             used for app using legacy synthesis)       [string]

      --progress             Display mode for stack activity events
                                             [string] [choices: "bar", "events"]

      --rollback             Rollback stack to stable state on failure. Defaults
                             to 'true', iterate more rapidly with --no-rollback
                             or -R. Note: do **not** disable this flag for
                             deployments with resource replacements, as that
                             will always fail                          [boolean]

      --hotswap              Attempts to perform a 'hotswap' deployment, which
                             skips CloudFormation and updates the resources
                             directly, and falls back to a full deployment if
                             that is not possible. Do not use this in production
                             environments                              [boolean]

      --watch                Continuously observe the project files, and deploy
                             the given stack(s) automatically when changes are
                             detected. Implies --hotswap by default    [boolean]

      --logs                 Show CloudWatch log events from all resources in
                             the selected Stacks in the terminal. 'true' by
                             default, use --no-logs to turn off. Only in effect
                             if specified alongside the '--watch' option
                                                       [boolean] [default: true]
cdk destroy [STACKS..]

Destroy the stack(s) named STACKS

Options:

      --all                Destroy all available stacks
                                                      [boolean] [default: false]

  -e, --exclusively        Only destroy requested stacks, don't include
                           dependees                                   [boolean]

  -f, --force              Do not ask for confirmation before destroying the
                           stacks                                      [boolean]
cdk diff [STACKS..]

Compares the specified stack with the deployed stack or a local template file,
and returns with status 1 if any difference is found

Options:

  -e, --exclusively        Only diff requested stacks, don't include
                           dependencies                                [boolean]

      --context-lines      Number of context lines to include in arbitrary JSON
                           diff rendering                  [number] [default: 3]

      --template           The path to the CloudFormation template to compare
                           with                                         [string]

      --security-only      Only diff for broadened security changes
                                                      [boolean] [default: false]

      --fail               Fail with exit code 1 in case of diff
                                                      [boolean] [default: false]
cdk init [TEMPLATE]

Create a new, empty CDK project from a template.

Options:

  -l, --language           The language to be used for the new project (default
                           can be configured in ~/.cdk.json)
    [string] [choices: "csharp", "fsharp", "go", "java", "javascript", "python",
                                                                   "typescript"]

      --list               List the available templates                [boolean]

      --generate-only      If true, only generates project files, without
                           executing additional operations such as setting up a
                           git repo, installing dependencies or compiling the
                           project                    [boolean] [default: false]
cdk context

Manage cached context values

Options:

  -e, --reset              The context key (or its index) to reset      [string]

      --clear              Clear all context                           [boolean]