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

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

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

cdk deploy

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

デプロイ中、CDK CLIはコンソールから確認できるものと似た進行状況インジケータを出力します 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 アカウント レート制限 AWS CloudFormation も考慮する必要があります。

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

デフォルト値: 1

--exclusively, -e BOOLEAN

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

--force, -f BOOLEAN

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

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

デフォルト値: false

--help, -h BOOLEAN

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

--hotswap BOOLEAN

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

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

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

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

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

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

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

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

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

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

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

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

特定の 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 BOOLEAN

デプロイ中にリソースの作成または更新に失敗した場合、デプロイは CDK がCLI戻る前に最新の安定状態にロールバックされます。その時点までに行われたすべての変更は元に戻されます。作成されたリソースは削除され、更新はロールバックされます。

この動作を無効にするfalseには、 を指定します。リソースの作成または更新に失敗した場合、CDK CLI はその時点までに行われた変更をそのままにして、 を返します。これは、すぐに反復する開発環境で役立つ場合があります。

には--rollback=false--no-rollbackまたは を使用できます-R

注記

の場合false、リソースの置換を引き起こすデプロイは常に失敗します。このオプションは、新しいリソースを更新または作成するデプロイにのみ使用できます。

デフォルト値: true

--toolkit-stack-name STRING

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

このオプションは、レガシー合成を使用する CDK アプリケーションにのみ使用されます。

--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'