これは AWS CDK v2 デベロッパーガイドです。古い CDKv1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CDKリファレンスCLI
AWS Cloud Development Kit (AWS CDK) コマンドラインインターフェイス (AWS CDK CLI) はCDK、 とも呼ばれToolkit、 AWS CDK アプリとやり取りするための主要なツールです。アプリケーションを実行し、定義したアプリケーションモデルを調べ、 によって生成された AWS CloudFormation テンプレートを生成してデプロイします AWS CDK。また、 AWS CDK プロジェクトの作成や操作に役立つ他の機能も提供します。このトピックでは、 CDK の一般的なユースケースについて説明しますCLI。
CDK CLI は Node Package Manager と共にインストールされます。ほとんどの場合、グローバルにインストールすることをお勧めします。
npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
ヒント
の複数のバージョンを定期的に使用する場合は AWS CDK、個々のCDKプロジェクトCDKCLIに の一致するバージョンをインストールすることを検討してください。これを行うには、 npm install
コマンド-g
から を省略します。次にnpx aws-cdk
、 を使用して呼び出します。これにより、ローカルバージョンが存在する場合は実行され、存在しない場合はグローバルバージョンにフォールバックします。
CDKCLI コマンド
すべてのCDKCLIコマンドは で始まりcdk
、その後にサブコマンド (list
、synthesize
、 deploy
など) が続きます。一部のサブコマンドにはls
、同等の短いバージョン (synth
、 など) があります。オプションと引数は、任意の順序でサブコマンドに従います。
すべてのサブコマンド、オプション、引数の説明については、「」を参照してくださいAWS CDK CLI コマンドリファレンス。
オプションとその値を指定する
コマンドラインオプションは 2 つのハイフン () で始まります--
。頻繁に使用されるオプションの中には、単一のハイフンで始まる単一文字のシノニム (シノニム があるなど) --app
があるものがあります-a
。CDK CLI コマンドのオプション順序は重要ではありません。
すべてのオプションは値を受け入れ、オプション名に従う必要があります。値は、名前から空白または等号 で区切ることができます=
。次の 2 つのオプションは同等です。
--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack
一部のオプションはフラグ (ブール値) です。値false
として true
または を指定できます。値を指定しない場合、値は と見なされます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
できます。これらは、CDKCLIヘルプに [array]
と入力すると記録されます。例:
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
組み込みヘルプ
CDK CLI にはヘルプが統合されています。ユーティリティに関する一般的なヘルプと提供されたサブコマンドのリストは、次の発行で確認できます。
cdk --help
例えば など、特定のサブコマンドのヘルプを表示するにはdeploy
、 --help
フラグの前に指定します。
cdk deploy --help
のバージョンcdk version
を表示する問題CDKCLI。サポートをリクエストするときに、この情報を入力します。
バージョンレポート
AWS CDK の使用方法を把握するために、 AWS CDK アプリケーションで使用されるコンストラクトは、 として識別されるリソースを使用して収集および報告されますAWS::CDK::Metadata
。このリソースは AWS CloudFormation テンプレートに追加され、簡単に確認できます。この情報は、セキュリティまたは信頼性の既知の問題があるコンストラクトを使用してスタックを識別 AWS するために でも使用できます。また、重要な情報をユーザーに連絡するためにも使用できます。
注記
バージョン 1.93.0 以前は、 は、スタックで使用されるコンストラクトではなく、合成中にロードされたモジュールの名前とバージョン AWS CDK を報告していました。
デフォルトでは、 はスタックで使用される次のNPMモジュールでのコンストラクトの使用を AWS CDK レポートします。
-
AWS CDK コアモジュール
-
AWS ライブラリモジュールの構築
-
AWS ソリューション構築モジュール
-
AWS Farm Deployment Kit モジュールをレンダリングする
AWS::CDK::Metadata
リソースは次のようになります。
CDKMetadata: Type: "AWS::CDK::Metadata" Properties: Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="
Analytics
プロパティは、スタック内のコンストラクトの、gzipped、base64 エンコード、プレフィックスエンコードされたリストです。
バージョンレポートをオプトアウトするには、次のいずれかの方法を使用します。
-
引--no-version-reporting数を指定して cdk コマンドを使用して、1 つのコマンドをオプトアウトします。
cdk --no-version-reporting synth
はデプロイ前に新しいテンプレートをCDKCLI合成するため、
--no-version-reporting
cdk deploy
コマンドにも を追加する必要があります。 -
./cdk.json
または で false versionReportingに設定します~/.cdk.json
。これは、個々のコマンド--version-reporting
で を指定してオプトインしない限りオプトアウトします。{ "app": "...", "versionReporting": false }
による認証 AWS
AWS リソースへのプログラムによるアクセスを設定する方法は、環境と利用可能な AWS アクセスに応じて異なります。
認証方法を選択し、 用に設定するにはCLI、CDK「」を参照してくださいのセキュリティ認証情報を設定する AWS CDKCLI。
雇用主から認証方法が与えられていないローカルで開発している新規ユーザーには、 を設定することをお勧めします AWS IAM Identity Center。この方法には、設定を容易に AWS CLI するために をインストールしたり、 AWS アクセスポータルに定期的にサインインしたりすることが含まれます。この方法を選択した場合、「 AWS SDKsおよびツールリファレンスガイド」のIAM「Identity Center 認証」の手順を完了した後、環境に次の要素が含まれている必要があります。
-
アプリケーションを実行する前に AWS アクセスポータルセッションを開始 AWS CLIするために使用する 。
-
から参照できる設定値のセットを持つ
[default]
プロファイルを持つ共有 AWSconfig
ファイル AWS CDK。このファイルの場所を確認するには、「」およびAWS SDKs「ツールリファレンスガイド」の「共有ファイルの場所」を参照してください。 -
共有
config
ファイルはregion
設定を設定します。これにより、デフォルトの が設定され AWS リージョン AWS CDK 、 が AWS リクエストCDKCLIに使用します。 -
CDK CLI は、 にリクエストを送信する前に、プロファイルのSSOトークンプロバイダー設定を使用して認証情報を取得します AWS。IAM Identity Center アクセス許可セットに接続されたIAMロールである
sso_role_name
値では、アプリケーションで AWS のサービス 使用されている へのアクセスを許可する必要があります。次のサンプル
config
ファイルは、SSOトークンプロバイダー設定で設定されたデフォルトのプロファイルを示しています。プロファイルのsso_session
設定は、指定されたsso-session
セクションを参照します。sso-session
セクションには、 AWS アクセスポータルセッションを開始するための設定が含まれています。[default] sso_session =
my-sso
sso_account_id =111122223333
sso_role_name =SampleRole
region =us-east-1
output = json [sso-sessionmy-sso
] sso_region =us-east-1
sso_start_url =https://provided-domain.awsapps.com/start
sso_registration_scopes = sso:account:access
AWS アクセスポータルセッションを開始する
にアクセスする前に AWS のサービス、 が IAM Identity Center 認証を使用して認証情報を解決CDKCLIするためのアクティブな AWS アクセスポータルセッションが必要です。設定したセッションの長さによっては、アクセスが最終的に期限切れになり、 で認証エラーCDKCLIが発生します。で次のコマンドを実行して AWS CLI 、 AWS アクセスポータルにサインインします。
aws sso login
SSO トークンプロバイダー設定でデフォルトプロファイルの代わりに名前付きプロファイルを使用している場合、コマンドは ですaws sso login --profile
。--profile オプションまたはNAME
AWS_PROFILE
環境変数を使用してcdkコマンドを発行する場合は、このプロファイルも指定します。
既にアクティブなセッションがあるかどうかをテストするには、次の AWS CLI コマンドを実行します。
aws sts get-caller-identity
このコマンドへのレスポンスは、共有config
ファイルに設定されている IAM Identity Center アカウントとアクセス許可セットを報告する必要があります。
注記
既にアクティブな AWS アクセスポータルセッションがあり、 を実行している場合はaws sso login
、認証情報を指定する必要はありません。
サインインプロセスにより、データ AWS CLI へのアクセスを許可するように求められる場合があります。 AWS CLI は SDK for Python 上に構築されているため、アクセス許可メッセージにはbotocore
名前のバリエーションが含まれている可能性があります。
リージョンとその他の設定を指定する
は、デプロイ先の AWS リージョンと、 で認証する方法を知るCDKCLI必要があります AWS。これは、デプロイオペレーションや合成中にコンテキスト値を取得するために必要です。アカウントとリージョンが一緒に環境 を構成します。
リージョンは、環境変数または設定ファイルで指定できます。これらは、 やさまざまな などの他の AWS ツールで使用される変数 AWS CLI やファイルと同じです AWS SDKs。は、この情報を次の順序でCDKCLI検索します。
-
AWS_DEFAULT_REGION
環境変数。 -
標準 AWS
config
ファイルで定義され、cdk
コマンドの--profile
オプションを使用して指定された名前付きプロファイル。 -
標準 AWS
config
ファイルの[default]
セクション。
[default]
セクションで AWS 認証とリージョンを指定するだけでなく、1 つ以上の[profile
セクションを追加することもできます。NAME
]NAME
はプロファイルの名前です。名前付きプロファイルの詳細については、「」および「ツールリファレンスガイド」の「共有設定ファイルと認証情報ファイル」を参照してください。 AWS SDKs
標準 AWS config
ファイルは、 ~/.aws/config
(macOS /Linux) または %USERPROFILE%\.aws\config
(Windows) にあります。詳細と代替の場所については、「 およびAWS SDKsツールリファレンスガイド」の「共有設定ファイルと認証情報ファイルの場所」を参照してください。
スタックの env
プロパティを使用して AWS CDK アプリケーションで指定する環境は、合成中に使用されます。これは環境固有の AWS CloudFormation テンプレートを生成するために使用され、デプロイ中に、前述の方法のいずれかで指定されたアカウントまたはリージョンを上書きします。詳細については、「の環境 AWS CDK」を参照してください。
注記
AWS CDK は、 SDKsを含む他の AWS ツールや と同じソースファイルの認証情報を使用しますAWS Command Line Interface。ただし、 AWS CDK の動作は、これらのツールとは多少異なる場合があります。内部 AWS SDK for JavaScript の を使用します。の認証情報の設定の詳細については AWS SDK for JavaScript、「認証情報の設定」を参照してください。
オプションで --role-arn
(または -r
) オプションを使用して、デプロイに使用する IAMロールARNの を指定できます。このロールは、使用する AWS アカウントによって引き受け可能である必要があります。
アプリコマンドを指定する
の多くの機能CDKCLIでは、1 つ以上の AWS CloudFormation テンプレートを合成する必要があります。合成するには、アプリケーションの実行が必要です。は、さまざまな言語で記述されたプログラム AWS CDK をサポートしています。したがって、設定オプションを使用して、アプリケーションの実行に必要な正確なコマンドを指定します。このオプションは 2 つの方法で指定できます。
まず、最も一般的には、ファイル 内の app
キーを使用して指定できますcdk.json
。これは AWS CDK プロジェクトのメインディレクトリにあります。を使用して新しいプロジェクトを作成する場合、 は適切なコマンドCDKCLIを提供しますcdk init
。例えば、新しい TypeScript プロジェクトの cdk.json
を次に示します。
{ "app": "npx ts-node bin/hello-cdk.ts" }
は、アプリを実行しようとすると、現在の作業ディレクトリcdk.json
で CDKCLIを検索します。このため、CDKCLIコマンドを発行するために、プロジェクトのメインディレクトリでシェルを開いたままにしておくことができます。
では、 でアプリキーが見つからない場合、 で ~/.cdk.json
(つまり、ホームディレクトリで) アプリキーCDKCLIも検索されます./cdk.json
。アプリコマンドをここに追加すると、通常、同じ言語でCDKコードを操作する場合に便利です。
他のディレクトリにいる場合、または のコマンド以外のコマンドを使用してアプリケーションを実行する場合はcdk.json
、 --app
(または -a
) オプションを使用して指定します。
cdk --app "npx ts-node bin/hello-cdk.ts" ls
デプロイ時に、 などの合成されたクラウドアセンブリを含むディレクトリを cdk.out
の値として指定することもできます--app。指定されたスタックはこのディレクトリからデプロイされます。アプリは合成されません。
スタックを指定する
多くのCDKCLIコマンド ( などcdk deploy
) は、アプリケーションで定義されたスタックで機能します。アプリケーションにスタックが 1 つだけ含まれている場合、 CDKCLIはスタックを明示的に指定しない場合にスタックが 1 つであると仮定します。
それ以外の場合は、使用するスタックを指定する必要があります。これを行うには、コマンドラインで ID で目的のスタックを個別に指定します。ID は、スタックをインスタンス化するときに 2 番目の引数で指定された値であることを思い出してください。
cdk synth PipelineStack LambdaStack
ワイルドカードを使用して、パターンIDsに一致する を指定することもできます。
-
?
は任意の 1 文字に一致します -
*
は任意の数の文字に一致します (*
のみすべてのスタックに一致します) -
**
は階層内のすべてのものと一致します。
--all オプションを使用して、すべてのスタックを指定することもできます。
アプリがCDKパイプライン を使用している場合、 はスタックとステージを階層としてCDKCLI理解します。また、 --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
注記
スタックを指定する順序は、必ずしも処理される順序ではありません。CDK CLI は、スタックの処理順序を決定する際に、スタック間の依存関係を考慮します。例えば、あるスタックが別のスタックによって生成された値 (2 番目のスタックで定義されたリソースARNの など) を使用しているとします。この場合、この依存関係のため、2 番目のスタックは最初のスタックの前に合成されます。スタックの addDependency()
メソッドを使用して、スタック間に手動で依存関係を追加できます。
AWS 環境のブートストラップ
を使用してスタックをデプロイCDKするには、特別な専用 AWS CDK リソースをプロビジョニングする必要があります。cdk bootstrap
コマンドは、必要なリソースを作成します。これらの専用リソースを必要とするスタックをデプロイする場合にのみ、ブートストラップする必要があります。詳細については、「AWS CDK ブートストラップ」を参照してください。
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
重要
このようなスタックをデプロイする各環境 (アカウント/リージョンの組み合わせ) は、個別にブートストラップする必要があります。
ブートストラップされたリソース内の AWS CDK ストアに対して AWS 料金が発生する場合があります。さらに、 を使用する場合-bootstrap-customer-key
、 AWSKMSキーが作成され、環境ごとに料金が発生します。
注記
以前のバージョンのブートストラップテンプレートでは、デフォルトでKMSキーが作成されていました。料金が発生しないようにするには、 を使用してブートストラップし直します--no-bootstrap-customer-key
。
注記
CDK CLI v2 は、デフォルトで CDKv1 で使用されるレガシーテンプレートと呼ばれる元のブートストラップテンプレートをサポートしていません。
重要
最新のブートストラップテンプレートは、 が暗示するアクセス許可--cloudformation-execution-policies
を--trust
リスト内の任意の AWS アカウントに効果的に付与します。デフォルトでは、これにより、ブートストラップされたアカウントの任意のリソースに対する読み取りと書き込みのアクセス許可が拡張されます。ブートストラップスタックには、使い慣れたポリシーと信頼できるアカウントを設定してください。
新しいアプリケーションを作成する
新しいアプリケーションを作成するには、そのアプリケーション用のディレクトリを作成し、ディレクトリ内で を発行しますcdk init
。
mkdir my-cdk-app cd my-cdk-app cdk init
TEMPLATE
--languageLANGUAGE
サポートされている言語 (LANGUAGE
) は次のとおりです。
コード |
[言語] |
---|---|
|
TypeScript |
|
JavaScript |
|
Python |
|
Java |
|
C# |
TEMPLATE
はオプションのテンプレートです。目的のテンプレートがアプリケーション の場合、デフォルトは省略できます。使用可能なテンプレートは次のとおりです。
テンプレート |
説明 |
---|---|
|
空の AWS CDK アプリケーションを作成します。 |
|
Amazon SQSキューと Amazon SNSトピックを含むスタックを使用して AWS CDK アプリケーションを作成します。 |
テンプレートは、プロジェクトフォルダの名前を使用して、新しいアプリケーション内のファイルとクラスの名前を生成します。
スタックを一覧表示する
AWS CDK アプリケーション内のIDsスタックのリストを表示するには、次のいずれかの同等のコマンドを入力します。
cdk list cdk ls
アプリケーションにCDKパイプラインスタックが含まれている場合、 はパイプライン階層内の場所に応じてスタック名をパスとしてCDKCLI表示します。(例えば、PipelineStack
、PipelineStack/Prod
、および など)PipelineStack/Prod/MyService
。
アプリケーションに多数のスタックが含まれている場合は、一覧表示するスタックIDsのフルスタックまたはパーシャルスタックを指定できます。詳細については、「スタックを指定する」を参照してください。
--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
注記
はCDKCLI実際にアプリケーションを実行し、ほとんどのオペレーション (スタックのデプロイ時や比較時など) の前に新しいテンプレートを合成します。これらのテンプレートは、デフォルトで cdk.out
ディレクトリに保存されます。cdk synth
コマンドは、1 つ以上の指定されたスタックに対して生成されたテンプレートを単に出力します。
使用可能なすべてのオプションcdk synth --help
については、「」を参照してください。最も頻繁に使用されるオプションのいくつかを次のセクションで説明します。
コンテキスト値を指定する
--context
または -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
サブコマンドは、指定した 1 つ以上のスタックを AWS アカウントにデプロイします。
cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
注記
はアプリCDKCLIを実行し、何もデプロイする前に新しい AWS CloudFormation テンプレートを合成します。したがって、 で使用できるほとんどのコマンドラインオプション cdk synth
( など--context
) は、 でも使用できますcdk deploy
。
使用可能なすべてのオプションcdk deploy --help
については、「」を参照してください。次のセクションでは、最も有用なオプションをいくつか紹介します。
合成をスキップする
cdk deploy コマンドは通常、デプロイ前にアプリケーションのスタックを合成して、デプロイがアプリケーションの最新バージョンを反映していることを確認します。前回の 以降にコードを変更していないことがわかっている場合はcdk synth、デプロイ時に冗長合成ステップを抑制できます。そのためには、 --appオプションでプロジェクトのcdk.out
ディレクトリを指定します。
cdk deploy --app cdk.out StackOne StackTwo
ロールバックを無効にする
AWS CloudFormation には、デプロイがアトミックになるように変更をロールバックする機能があります。つまり、全体として成功または失敗します。は AWS CloudFormation テンプレートを合成してデプロイするため、この機能を AWS CDK 継承します。
ロールバックにより、リソースは常に一貫した状態になります。これは、本番稼働用スタックにとって不可欠です。ただし、インフラストラクチャを開発している間は、一部の障害は避けられず、失敗したデプロイをロールバックすると速度が低下する可能性があります。
このため、 CDKCLIでは、 cdk deploy
コマンド--no-rollback
に を追加してロールバックを無効にできます。このフラグでは、失敗したデプロイはロールバックされません。代わりに、失敗したリソースの前にデプロイされたリソースはそのまま残り、次のデプロイは失敗したリソースから始まります。デプロイを待つ時間が大幅に短縮され、インフラストラクチャの開発に費やす時間が長くなります。
ホットスワップ
--hotswap
フラグを とともに使用cdk deploy
して、 AWS CloudFormation 変更セットを生成してデプロイするのではなく、 AWS リソースを直接更新しようとします。ホットスワップが不可能な場合、デプロイは AWS CloudFormation デプロイにフォールバックします。
現在、ホットスワップは Lambda 関数、Step Functions ステートマシン、および Amazon ECSコンテナイメージをサポートしています。--hotswap
フラグはロールバックも無効にします (つまり、 を意味します--no-rollback
)。
重要
ホットスワップは、本番デプロイにはお勧めしません。
監視モード
CDK CLIのウォッチモード ( または略cdk watchして ) はcdk deploy --watch、CDKアプリのソースファイルとアセットの変更を継続的にモニタリングします。変更が検出されると、指定されたスタックのデプロイがすぐに実行されます。
デフォルトでは、これらのデプロイは --hotswap
フラグを使用します。これにより、Lambda 関数への変更のデプロイが高速に追跡されます。また、インフラストラクチャ設定を変更 AWS CloudFormation した場合は、 を通じてデプロイされます。がcdk watch
常にフル AWS CloudFormation デプロイを実行するには、 --no-hotswap
フラグを に追加しますcdk watch
。
cdk watch
が既にデプロイを実行している間に加えられた変更は 1 つのデプロイに統合され、進行中のデプロイが完了するとすぐに開始されます。
監視モードでは、プロジェクトの の"watch"
キーを使用してcdk.json
、監視するファイルを決定します。デフォルトでは、これらのファイルはアプリケーションファイルとアセットですが、"watch"
キーの "include"
および "exclude"
エントリを変更することで変更できます。次の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 CloudFormation パラメータの指定CDKCLIをサポートしています。これらは、 --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
セキュリティ関連の変更を承認する
セキュリティ体制に影響する意図しない変更から保護するために、 はセキュリティ関連の変更をデプロイする前に承認するようにCDKCLI促します。承認が必要な変更のレベルを指定できます。
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 import
コマンドを使用して、特定の AWS CDK スタック CloudFormation の の管理下にリソースを配置できます。これは、 に移行する場合 AWS CDK、またはスタック間でリソースを移動する場合、または論理 ID を変更する場合に便利です。 は CloudFormation リソースのインポート cdk import
を使用します。ここでインポートできるリソースのリストを参照してください。
既存のリソースを AWS CDK スタックにインポートするには、次のステップに従います。
-
リソースが現在他の CloudFormation スタックによって管理されていないことを確認します。その場合は、まずリソースが現在存在するスタック
RemovalPolicy.RETAIN
の削除ポリシーを に設定し、デプロイを実行します。次に、スタックからリソースを削除し、別のデプロイを実行します。このプロセスにより、リソースは によって管理されなくなり CloudFormation 、削除されなくなります。 -
を実行して
cdk diff
、リソースをインポートする AWS CDK スタックに保留中の変更がないことを確認します。「インポート」オペレーションで許可される変更は、インポートする新しいリソースの追加のみです。 -
スタックにインポートするリソースのコンストラクトを追加します。例えば、Amazon S3 バケットをインポートする場合は、 のようなものを追加します
new s3.Bucket(this, 'ImportedS3Bucket', {});
。他のリソースに変更を加えないでください。また、リソースが現在定義に持っている状態を正確にモデル化する必要があります。バケットの例については、 AWS KMS キー、ライフサイクルポリシー、およびバケットに関連するその他のものを必ず含めてください。そうしないと、後続の更新オペレーションが期待どおりに動作しない可能性があります。
物理バケット名を含めるかどうかを選択できます。通常、リソースを複数回デプロイしやすくするために、 AWS CDK リソース定義にリソース名を含めないことをお勧めします。
-
cdk import
を実行します。STACKNAME
-
リソース名がモデルにない場合、 CLIはインポートするリソースの実際の名前を渡すよう促すプロンプトを表示します。その後、インポートが開始されます。
-
が成功
cdk import
を報告すると、リソースは AWS CDK と によって管理されるようになりました CloudFormation。 AWS CDK アプリケーション内のリソースプロパティに後続の変更を加えると、コンストラクト設定は次回のデプロイに適用されます。 -
AWS CDK アプリのリソース定義がリソースの現在の状態と一致することを確認するには、CloudFormation ドリフト検出オペレーション を開始できます。
この機能は現在、ネストされたスタックへのリソースのインポートをサポートしていません。
設定 (cdk.json
)
多くのCDKCLIコマンドラインフラグのデフォルト値は、プロジェクトの cdk.json
ファイルまたはユーザーディレクトリの .cdk.json
ファイルに保存できます。以下は、サポートされている構成設定のアルファベット順のリファレンスです。
キー | メモ | CDK CLI オプション |
---|---|---|
app |
CDK アプリケーションを実行するコマンド。 | --app |
assetMetadata |
の場合false 、 CDKはアセットを使用するリソースにメタデータを追加しません。 |
--no-asset-metadata |
bootstrapKmsKeyId |
Amazon S3 デプロイバケットの暗号化に使用される AWS KMS キーの ID を上書きします。 Amazon S3 | --bootstrap-kms-key-id |
build |
合成前にCDKアプリケーションをコンパイルまたは構築するコマンド。では許可されません~/.cdk.json 。 |
--build |
browser |
cdk docs サブコマンドのウェブブラウザを起動するためのコマンド。 |
--browser |
context |
「コンテキスト値と AWS CDK」を参照してください。設定ファイルのコンテキスト値は、 によって消去されませんcdk context --clear。( はキャッシュされたコンテキスト値を CDKCLIに配置しますcdk.context.json 。) |
--context |
debug |
の場合true 、デバッグに役立つより詳細な情報がCDKCLI出力されます。 |
--debug |
language |
新しいプロジェクトの初期化に使用される言語。 | --language |
lookups |
の場合false 、コンテキスト検索は許可されません。コンテキスト検索を実行する必要がある場合、合成は失敗します。 |
--no-lookups |
notices |
の場合false 、セキュリティの脆弱性、リグレッション、サポートされていないバージョンに関するメッセージの表示を抑制します。 |
--no-notices |
output |
合成されたクラウドアセンブリが出力されるディレクトリの名前 (デフォルトは "cdk.out" )。 |
--output |
outputsFile |
デプロイされたスタックからの AWS CloudFormation 出力が書き込まれるファイル ( JSON 形式)。 | --outputs-file |
pathMetadata |
の場合false 、CDKパスメタデータは合成されたテンプレートに追加されません。 |
--no-path-metadata |
plugin |
JSON を拡張するパッケージのパッケージ名またはローカルパスを指定する 配列 CDK | --plugin |
profile |
リージョンとアカウントの認証情報の指定に使用されるデフォルト AWS プロファイルの名前。 | --profile |
progress |
に設定すると"events" 、 はデプロイ中のすべての AWS CloudFormation イベントを、進行状況バーではなくCDKCLI表示します。 |
--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 |
JSON オブジェクトには"include" 、変更時にプロジェクトの再構築をトリガーする (またはトリガーしない) ファイルを示す キーと "exclude" キーが含まれています。「監視モード」を参照してください。 |
--watch |