

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

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

# `cdk diff`
<a name="ref-cli-cmd-diff"></a>

 AWS CDK スタック間のインフラストラクチャの変更を確認するには、差分を実行します。

通常、このコマンドはローカル CDK アプリのスタックにおける現在の状態とデプロイされたスタックの違いを比較するために使用します。ただし、デプロイされたスタックを任意の local AWS CloudFormation テンプレートと比較することもできます。

## 使用方法
<a name="ref-cli-cmd-diff-usage"></a>

```
$ cdk diff <arguments> <options>
```

## 引数
<a name="ref-cli-cmd-diff-args"></a><a name="ref-cli-cmd-diff-args-stack-name"></a>

 **CDK スタック ID**   
差分を実行するアプリの CDK スタックのコンストラクト ID。  
 *タイプ*: 文字列  
 *必須:* いいえ

## オプション
<a name="ref-cli-cmd-diff-options"></a>

すべての CDK CLI コマンドで動作するグローバルオプションのリストについては、「[グローバルオプション](ref-cli-cmd.md#ref-cli-cmd-options)」を参照してください。<a name="ref-cli-cmd-diff-options-method"></a>

 `--method, -m <STRING>`   
差分を計算する方法を指定します。  
+  `auto` - デフォルト。正確な置き換え情報を表示する AWS CloudFormation 変更セットを作成します。変更セットを作成できない場合 (アクセス許可がないためなど）、 はテンプレートのみの差分にフォールバックします。デプロイロールを使用します。
+  `change-set` – 常に変更セットを作成し、作成できない場合は失敗します。保証された精度が必要な場合に使用します。デプロイロールを使用します。
+  `template` – CloudFormation テンプレートを直接比較します。高速ですが、精度は低くなります。リソース置換を必要とするプロパティに対して検出された変更は、変更が純粋に外観的であっても、リソース置換として表示されます。ルックアップロールを使用します。

   *デフォルト値*: `auto` <a name="ref-cli-cmd-diff-options-change-set"></a>

 `--change-set <BOOLEAN>` *(非推奨)*   
リソースの置き換えを分析する変更セットを作成するかどうかを指定します。代わりに `--method` を使用します。  
 `--change-set` は にマッピングされます`--method=auto`。 は に`--no-change-set`マッピングされます`--method=template`。<a name="ref-cli-cmd-diff-options-context-lines"></a>

 `--context-lines <NUMBER>`   
任意の JSON 差分レンダリングに含めるコンテキスト行の数。  
 *デフォルト値*: `3` <a name="ref-cli-cmd-diff-options-exclusively"></a>

 `--exclusively, -e <BOOLEAN>`   
差分が要求したスタックのみであり、依存関係は含まれません。<a name="ref-cli-cmd-diff-options-fail"></a>

 `--fail <BOOLEAN>`   
差異が検出された場合、`1` のコードで失敗して終了します。<a name="ref-cli-cmd-diff-options-help"></a>

 `--help, -h <BOOLEAN>`   
`cdk diff` コマンドのコマンドリファレンス情報を表示します。<a name="ref-cli-cmd-diff-options-processed"></a>

 `--processed <BOOLEAN>`   
テンプレートを既に処理された CloudFormation 変換と比較するかどうかを指定します。  
 *デフォルト値*: `false` <a name="ref-cli-cmd-diff-options-quiet"></a>

 `--quiet, -q <BOOLEAN>`   
変更が検出されないとき、CDK スタック名およびデフォルト `cdk diff` メッセージを `stdout` に出力しないでください。  
 *デフォルト値*: `false` <a name="ref-cli-cmd-diff-options-security-only"></a>

 `--security-only <BOOLEAN>`   
拡大されたセキュリティ変更の差分のみ。  
 *デフォルト値*: `false` <a name="ref-cli-cmd-diff-options-strict"></a>

 `--strict <BOOLEAN>`   
`cdk diff` 動作がより正確または厳密になるように変更します。true のとき、CDK CLI は ` AWS::CDK::Metadata` リソースや読み取り不可能な非 ASCII 文字を除外しません。  
 *デフォルト値*: `false` <a name="ref-cli-cmd-diff-options-template"></a>

 `--template <STRING>`   
CDK スタックを比較する CloudFormation テンプレートへのパス。を暗示します`--method=template`。

## 例
<a name="ref-cli-cmd-diff-examples"></a>

### MyStackName という名前の現在デプロイされているスタックとの差分
<a name="ref-cli-cmd-diff-examples-1"></a>

CDK CLI は、差分出力で次の記号を使用します。
+  `[+]` – 変更をデプロイするときに追加されるコードまたはリソースを識別します。
+  `[-]` – 変更をデプロイするときに削除されるコードまたはリソースを識別します。
+  `[~]` – 変更をデプロイするときに変更されるリソースまたはプロパティを識別します。

以下は、Lambda 関数へのローカルな変更の差分を示す例です。

```
$ cdk diff MyStackName
start: Building <asset-hash>:<account:Region>
success: Built <asset-hash>:<account:Region>
start: Publishing <asset-hash>:<account:Region>
success: Published <asset-hash>:<account:Region>
Hold on while we create a read-only change set to get a diff with accurate replacement information (use --method=template to use a less accurate but faster template-only diff)
Stack MyStackName
Resources
[~] AWS::Lambda::Function HelloWorldFunction <resource-logical-ID>
 └─ [~] Code
     └─ [~] .ZipFile:
         ├─ [-]
        exports.handler = async function(event) {
          return {
            statusCode: 200,
            body: JSON.stringify('Hello World!'),
          };
        };

         └─ [+]
        exports.handler = async function(event) {
          return {
            statusCode: 200,
            body: JSON.stringify('Hello from CDK!'),
          };
        };



✨  Number of stacks with differences: 1
```

変更されるリソースの `[~]` インジケータは、必ずしも完全なリソース置換を意味するわけではありません。
+ `Code` などの一部のリソースプロパティは、リソースを更新します。
+ `FunctionName` などの一部のリソースプロパティは、完全なリソース置換を引き起こす可能性があります。

### 特定の CloudFormation テンプレートとの差分
<a name="ref-cli-cmd-diff-examples-2"></a>

```
$ cdk diff MyStackName --app='node bin/main.js' --template-path='./MyStackNameTemplate.yaml'
```

### ローカルスタックをデプロイされたスタックとの差分を行います。変更が検出されない場合、stdout に出力しません。
<a name="ref-cli-cmd-diff-examples-3"></a>

```
$ cdk diff MyStackName --app='node bin/main.js' --quiet
```