これは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 プロジェクトにインストールすることを検討してください。そのためには、-g
npm install
コマンドを省略してください。次にnpx aws-cdk
、を使用して呼び出します。これはローカルバージョンが存在する場合はそれを実行し、存在しない場合はグローバルバージョンにフォールバックします。
ツールキットコマンド
CDK Toolkit のすべてのコマンドはで始まりcdk
、その後にサブコマンド (list
、synthesize
deploy
、など) が続きます。一部のサブコマンドにはls
、同等の短いバージョン (synth
、など) があります。オプションと引数は、任意の順序でサブコマンドに続きます。使用可能なコマンドは、ここにまとめられています。
コマンド |
関数 |
---|---|
|
アプリ内のスタックを一覧表示します |
|
1 CloudFormation つまたは複数の指定されたスタックのテンプレートを合成して印刷します |
|
CDK Toolkit ステージングスタックをデプロイします。を参照してくださいブートストラッピング |
|
1 つ以上の Desired Stack をデプロイします |
|
1 つ以上の Desired Stack を破棄します |
|
指定されたスタックとその依存関係を、 CloudFormation デプロイされたスタックまたはローカルテンプレートと比較します |
|
指定されたスタックに関するメタデータを表示します |
|
指定されたテンプレートから現在のディレクトリに新しい CDK プロジェクトを作成します。 |
|
キャッシュされたコンテキスト値を管理します |
|
ブラウザで CDK API リファレンスを開きます |
|
CDK プロジェクトに潜在的な問題がないかチェックします |
各コマンドで使用できるオプションについては、ツールキットリファレンスまたはを参照してください組み込みヘルプ。
オプションとその値の指定
コマンドラインオプションは 2 つのハイフン (--
) で始まります。よく使用されるオプションには、1 つのハイフンで始まる単一文字の同義語 (たとえば、に同義語がある-a
)--app
があります。AWS CDKToolkit コマンドのオプションの順序は重要ではありません。
すべてのオプションには値を指定できますが、その値はオプション名の後に付ける必要があります。=
値は名前と空白または等号で区切ることができます。次の 2 つのオプションは同等です。
--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack
一部のオプションはフラグ (ブーリアン) です。true
false
値としてまたはを指定できます。値を指定しない場合、値は次のようになります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 version
AWS 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-reporting
cdk 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_ID
AWS_SECRET_ACCESS_KEY
、AWS_DEFAULT_REGION
および環境変数。1 つまたは 2 つだけでなく、常に 3 つの変数すべてを指定してください。 -
AWS
config
credentials
標準とファイルで定義され、--profile
cdk
コマンドのオプションを使用して指定された特定のプロファイル。 -
[default]
AWSconfig
credentials
標準とファイルのセクション。
注記
AWSconfig
credentials
標準とファイルは、と~/.aws/credentials
(macOS/Linux)%USERPROFILE%\.aws\config
またはと%USERPROFILE%\.aws\credentials
(Windows) にあります。~/.aws/config
AWS CDKenv
スタックのプロパティを使用してアプリで指定した環境は、合成時に使用されます。AWS CloudFormationこれは環境固有のテンプレートを生成するために使用され、デプロイ時には、前述の方法のいずれかで指定されたアカウントまたはリージョンを上書きします。詳細については、「環境」を参照してください。
AWS CLIがインストールされている場合、アカウント認証情報とデフォルトリージョンを設定する最も簡単な方法は、次のコマンドを実行することです。
aws configure
プロンプトが表示されたら、AWSアクセスキー ID、シークレットアクセスキー、デフォルトのリージョンを入力します。これらの値は、[default]
config
credentials
およびファイルのセクションに書き込まれます。
AWS CLIがインストールされていない場合は、config
credentials
およびファイルを手動で作成または編集して、デフォルトの認証情報とデフォルトのリージョンを含めることができます。次の形式を使用します。
-
で、
~/.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
セクションを 1 つ以上追加することもできます。ここで、NAME
]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
名前付きプロファイルは、config
credentials
必ずとファイルの両方に追加してください。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
デプロイ時には、などの合成クラウドアセンブリを含むディレクトリをの値として指定することもできます--app。cdk.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
--languageLANGUAGE
サポートされている言語 (言語
) は以下のとおりです。
コード |
言語 |
---|---|
|
TypeScript |
|
JavaScript |
|
Python |
|
Java |
|
C# |
テンプレートはオプションのテンプレートです
。目的のテンプレートがデフォルトの app の場合は、省略できます。使用可能なテンプレートは以下のとおりです。
テンプレート |
説明 |
---|---|
|
AWS CDK空のアプリを作成します。 |
|
Amazon SQS キューと Amazon SNSAWS CDK トピックを含むスタックを使用してアプリケーションを作成します。 |
テンプレートは、プロジェクトフォルダの名前を使用して、新しいアプリケーションに含まれるファイルとクラスの名前を生成します。
リストスタック
AWS CDKアプリケーション内のスタックの ID のリストを表示するには、以下の対応するコマンドのいずれかを入力します。
cdk list cdk ls
アプリケーションに CDK Pipelines スタックが含まれている場合、CDK Toolkit はスタック名をパイプライン階層内の位置に応じたパスとして表示します。(たとえば、PipelineStack
、PipelineStack/Prod
、PipelineStack/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
使用可能なすべてのオプションについては、を参照してください。次のセクションでは、最も頻繁に使用されるオプションをいくつか説明します。
コンテキスト値の指定
--context
or-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-rollback
cdk 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 watch
AWS 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
には次のいずれかを使用できます。
期間 |
意味 |
---|---|
|
承認は不要です |
|
IAM security-group-related または変更には承認が必要 |
|
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]