cdk deploy - AWS Cloud Development Kit (AWS CDK) v2

これは AWS CDK v2 デベロッパーガイドです。古い v1 CDK は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

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

cdk deploy

AWS 環境に 1 つ以上の AWS CDK スタックをデプロイします。

デプロイ中、 CDKCLI は、コンソールから観察できるものと同様に、進行状況インジケータを AWS CloudFormation 出力します。

AWS 環境がブートストラップされていない場合、アセットがなく、合成されたテンプレートが 51,200 バイト未満のスタックのみが正常にデプロイされます。

使用方法

$ cdk deploy <arguments> <options>

引数

CDK スタック ID

デプロイするアプリケーションからのCDKスタックのコンストラクト ID。

型: 文字列

必須: いいえ

オプション

すべての で動作するグローバルオプションのリスト CDK CLI コマンドについては、「」を参照してくださいグローバルオプション

--all BOOLEAN

CDK アプリ内のすべてのスタックをデプロイします。

デフォルト値: false

--asset-parallelism BOOLEAN

アセットを並行して構築および公開するかどうかを指定します。

--asset-prebuild BOOLEAN

最初のスタックをデプロイする前に、すべてのアセットを構築するかどうかを指定します。このオプションは、失敗するのに役立ちます。Docker ビルド。

デフォルト値: true

--build-exclude, -E ARRAY

指定された ID でアセットを再構築しないでください。

このオプションは、1 つのコマンドで複数回指定できます。

デフォルト値: []

--change-set-name STRING

作成する AWS CloudFormation 変更セットの名前。

このオプションは --method='direct' と互換性がありません。

--concurrency NUMBER

スタック間の依存関係を考慮しながら、複数のスタックを並行してデプロイします。デプロイを高速化するには、このオプションを使用します。引き続き、 AWS CloudFormation やその他の AWS アカウント レート制限を考慮する必要があります。

実行する同時デプロイの最大数 (依存関係の許可) を指定する数値を指定します。

デフォルト値: 1

--exclusively, -e BOOLEAN

リクエストされたスタックのみをデプロイし、依存関係は含まれません。

--force, -f BOOLEAN

デプロイして既存のスタックを更新すると、 CDKCLI は、デプロイされたスタックのテンプレートとタグを、デプロイされるスタックと比較します。変更が検出されない場合、 CDKCLI はデプロイをスキップします。

この動作を上書きし、変更が検出されなくてもスタックを常にデプロイするには、このオプションを使用します。

デフォルト値: false

--help, -h BOOLEAN

cdk deploy コマンドのコマンドリファレンス情報を表示します。

--hotswap BOOLEAN

開発を高速化するためのホットスワップデプロイ。このオプションは、可能であれば、より高速なホットスワップデプロイの実行を試みます。例えば、CDKアプリで Lambda 関数のコードを変更すると、 CDKCLI は、 CloudFormation デプロイを実行するAPIs代わりに、 サービスを通じてリソースを直接更新します。

が CDK CLI は、ホットスワップをサポートしていない変更を検出し、それらの変更は無視され、メッセージが表示されます。フォールバックとしてフル CloudFormation デプロイを実行する場合は、--hotswap-fallback代わりに を使用します。

の CDK CLI は、現在の AWS 認証情報を使用してAPI呼び出しを実行します。@aws-cdk/core:newStyleStackSynthesis 機能フラグが に設定されている場合でも、ブートストラップスタックからロールを引き受けることはありませんtrue。これらのロールには、 を使用せずに AWS リソースを直接更新するために必要なアクセス許可はありません CloudFormation。そのため、認証情報がホットスワップデプロイを実行しているスタックと同じスタックのものであり AWS アカウント 、リソースを更新するために必要なIAMアクセス許可があることを確認してください。

ホットスワップは現在、以下の変更でサポートされています。

  • コードアセット ( Docker Lambda 関数のイメージとインラインコード)、タグの変更、および設定の変更 (説明変数と環境変数のみがサポートされています)。

  • Lambda バージョンとエイリアスの変更。

  • AWS Step Functions ステートマシンの定義の変更。

  • Amazon ECSサービスのコンテナアセットの変更。

  • Amazon S3 バケットデプロイのウェブサイトアセットの変更。

  • AWS CodeBuild プロジェクトのソースと環境の変更。

  • VTL AWS AppSync リゾルバーと関数のマッピングテンプレートの変更。

  • のスキーマの変更 AWS AppSync GraphQL APIs.

特定の CloudFormation 組み込み関数の使用は、ホットスワップデプロイの一部としてサポートされています。具体的には次のとおりです。

  • Ref

  • Fn::GetAtt – 部分的にのみサポートされています。サポートされているリソースと属性については、この実装を参照してください。

  • Fn::ImportValue

  • Fn::Join

  • Fn::Select

  • Fn::Split

  • Fn::Sub

このオプションは、ネストされたスタックとも互換性があります。

注記
  • このオプションは、デプロイを高速化するために CloudFormation スタックに意図的にドリフトを導入します。このため、開発目的でのみ使用してください。本番稼働環境のデプロイには、このオプションを使用しないでください。

  • このオプションは実験的と見なされ、将来、重大な変更が生じる可能性があります。

  • 特定のパラメータのデフォルトは、ホットスワップパラメータと異なる場合があります。例えば、Amazon ECSサービスの最小正常率は、現在 に設定されます0。これが発生した場合は、それに応じてソースを確認します。

デフォルト値: false

--hotswap-fallback BOOLEAN

このオプションは に似ています--hotswap。違いは--hotswap-fallback、必要な変更が検出された場合、 がフォールバックして完全な CloudFormation デプロイを実行することです。

このオプションの詳細については、「--hotswap」を参照してください。

デフォルト値: false

--ignore-no-stacks BOOLEAN

CDK アプリケーションにスタックが含まれていない場合でも、デプロイを実行します。

このオプションは、次のシナリオで役立ちます。 devや など、複数の環境を持つアプリがある場合がありますprod。開発を開始すると、prod アプリにリソースがない、またはリソースがコメントアウトされる可能性があります。これにより、アプリケーションにスタックがないことを示すメッセージを含むデプロイエラーが発生します。を使用して、このエラー--ignore-no-stacksをバイパスします。

デフォルト値: false

--logs BOOLEAN

選択したスタック内のすべてのリソースからのすべてのイベントの標準出力 (stdout) に Amazon CloudWatch ログを表示します。

このオプションは、 とのみ互換性があります--watch

デフォルト値: true

--method, -m STRING

デプロイを実行するように メソッドを設定します。

  • change-set – デフォルトのメソッド。の CDK CLI は、デプロイされる CloudFormation 変更を含む変更セットを作成し、デプロイを実行します。

  • direct – 変更セットを作成しないでください。代わりに、変更をすぐに適用します。これは通常、変更セットを作成するよりも高速ですが、進行状況情報が失われます。

  • prepare-change-set – 変更セットを作成しますが、デプロイは実行しません。これは、変更セットを検査する外部ツールがある場合や、変更セットの承認プロセスがある場合に便利です。

有効な値: change-setdirectprepare-change-set

デフォルト値: change-set

--notification-arns ARRAY

スタック関連イベントについて CloudFormation 通知する Amazon SNSトピックARNsの 。

--outputs-file, -O STRING

デプロイからのスタック出力が書き込まれるパス。

デプロイ後、スタック出力は指定された出力ファイルに JSON 形式で書き込まれます。

このオプションは、プロジェクトの cdk.json ファイルまたはローカル開発マシンの ~/.cdk.jsonで設定できます。

{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }

複数のスタックがデプロイされている場合、出力は同じ出力ファイルに書き込まれ、スタック名を表すキーで編成されます。

--parameters ARRAY

デプロイ CloudFormation 中に追加のパラメータを に渡します。

このオプションは、次の形式の配列を受け入れます。 STACK:KEY=VALUE

  • STACK – パラメータを関連付けるスタックの名前。

  • KEY – スタックの パラメータの名前。

  • VALUE – デプロイ時に渡す値。

スタック名が指定されていない場合、または *がスタック名として指定されている場合、パラメータはデプロイされるすべてのスタックに適用されます。スタックが パラメータを使用しない場合、デプロイは失敗します。

パラメータはネストされたスタックには伝達されません。ネストされたスタックにパラメータを渡すには、 NestedStackコンストラクトを使用します。

デフォルト値: {}

--previous-parameters BOOLEAN

既存のパラメータには以前の値を使用します。

このオプションを に設定する場合はfalse、すべてのデプロイですべてのパラメータを指定する必要があります。

デフォルト値: true

--progress STRING

の設定方法 CDK CLI にデプロイの進行状況が表示されます。

  • bar – スタックデプロイイベントをプログレスバーとして表示し、リソースのイベントは現在デプロイされています。

  • events – すべての CloudFormation イベントを含む完全な履歴を提供します。

このオプションは、プロジェクトの cdk.json ファイルまたはローカル開発マシンの ~/.cdk.jsonで設定することもできます。

{ "progress": "events" }

有効な値:barevents|

デフォルト値: bar

--require-approval STRING

手動で承認する必要があるセキュリティ上重要な変更を指定します。

  • any-change – スタックへの変更には手動承認が必要です。

  • broadening – 変更に許可またはセキュリティグループルールの拡張が含まれる場合は、手動による承認が必要です。

  • never – 承認は必要ありません。

有効な値: any-changebroadeningnever

デフォルト値: broadening

--rollback | --no-rollback, -R

デプロイ中にリソースを作成または更新できない場合、デプロイは の前に最新の安定状態に戻ります。 CDKCLI は を返します。それまでに行われたすべての変更は元に戻されます。作成されたリソースは削除され、更新はロールバックされます。

を指定--no-rollbackして、この動作をオフにします。リソースの作成または更新に失敗した場合、 CDKCLI は、その時点までに行われた変更をそのままにして、戻ります。これにより、デプロイは失敗した一時停止状態になります。ここからコードを更新し、デプロイを再試行できます。これは、すぐに反復する開発環境に役立ちます。

で実行されたデプロイが--no-rollback失敗し、デプロイをロールバックすることを決定した場合は、 cdk rollback コマンドを使用できます。詳細については、「cdk rollback」を参照してください。

注記

では--no-rollback、リソースの置き換えの原因となるデプロイは常に失敗します。このオプション値は、新しいリソースを更新または作成するデプロイにのみ使用できます。

デフォルト値: --rollback

--toolkit-stack-name STRING

既存の CDK Toolkit スタックの名前。

デフォルトでは、 は指定された AWS 環境に という名前のスタックCDKToolkitcdk bootstrapデプロイします。ブートストラップスタックに別の名前を指定するには、このオプションを使用します。

の CDK CLI はこの値を使用してブートストラップスタックのバージョンを検証します。

--watch BOOLEAN

CDK プロジェクトファイルを継続的に監視し、変更が検出されたときに指定されたスタックを自動的にデプロイします。

このオプションは--hotswap、デフォルトで暗黙的です。

このオプションには同等の CDK CLI コマンド。詳細については、「cdk watch」を参照してください。

という名前のスタックをデプロイする MyStackName

$ cdk deploy MyStackName --app='node bin/main.js'

アプリケーションに複数のスタックをデプロイする

cdk list を使用してスタックを一覧表示します。

$ cdk list CdkHelloWorldStack CdkStack2 CdkStack3

すべてのスタックをデプロイするには、 --allオプションを使用します。

$ cdk deploy --all

デプロイするスタックを選択するには、スタック名を引数として指定します。

$ cdk deploy CdkHelloWorldStack CdkStack3

パイプラインスタックをデプロイする

cdk list を使用してスタック名をパスとして表示し、パイプライン階層内の場所を示します。

$ cdk list PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService

--all オプションまたはワイルドカード*を使用して、すべてのスタックをデプロイします。上記のスタックの階層がある場合、 --all *は最上位のスタックのみに一致します。階層内のすべてのスタックを一致させるには、 を使用します**

これらのパターンを組み合わせることができます。ステージ内のすべてのスタックをデプロイしますProd

$ cdk deploy PipelineStack/Prod/**

デプロイ時にパラメータを渡す

CDK スタック内のパラメータを定義します。Amazon SNSトピックTopicNameParamに という名前のパラメータを作成する例を次に示します。

new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });

パラメータ値として を指定するにはparameterized、以下を実行します。

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

--force オプションを使用してパラメータ値を上書きできます。以下は、以前のデプロイからトピック名を上書きする例です。

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force

デプロイ後にスタック出力をファイルに書き込む

CDK スタックファイル内の出力を定義します。関数 の出力を作成する例を次に示しますARN。

const fn = new lambda.Function(this, "fn", { handler: "index.handler", code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`), runtime: lambda.Runtime.NODEJS_LATEST }); new cdk.CfnOutput(this, 'FunctionArn', { value: fn.functionArn, });

スタックをデプロイし、出力を に書き込みますoutputs.json

$ cdk deploy --outputs-file outputs.json

デプロイoutputs.json後の例を次に示します。

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }

この例では、 キーはCfnOutputインスタンスの論理 ID FunctionArnに対応します。

以下は、複数のスタックがデプロイされた場合のデプロイoutputs.json後の例です。

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }

デプロイ方法を変更する

変更セットを使用せずに迅速にデプロイするには、 を使用します--method='direct'

$ cdk deploy --method='direct'

変更セットを作成し、デプロイしない場合は、 を使用します--method='prepare-change-set'。デフォルトでは、 という名前の変更セットcdk-deploy-change-setが作成されます。この名前の以前の変更セットが存在する場合、上書きされます。変更が検出されない場合、空の変更セットは引き続き作成されます。

変更セットに名前を付けることもできます。以下に例を示します。

$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'