

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

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

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

**重要**  
`cdk refactor` コマンドはプレビューリリースであり、変更される可能性があります。  
このコマンドを使用するときは、`--unstable=refactor` オプションを指定する必要があります。

AWS Cloud Development Kit (AWS CDK) アプリケーションでコードをリファクタリングするときに、デプロイされたリソースを保持します。

コンストラクトの名前を変更したり、それらを CDK コード内のスタック間で移動したりすると、CloudFormation は通常、これらを新しいリソースとして扱い、置き換えが発生してサービスの中断やデータ損失につながる可能性があります。`cdk refactor` コマンドはこれらの変更をインテリジェントに検出し、CloudFormation のリファクタリング API と連携して、論理 ID を更新しながらリソースを保持します。

`cdk refactor` を使用すると、次のことが可能になります。
+ コンストラクトの名前を変更して、リソースの置き換えを発生させることなく、コードベースをより明確にします。
+ リソースをスタック間で移動して、懸念事項の編成と分離を改善します。
+ 基盤となるクラウドリソースを保持しながら、コンストラクト階層を再編成します (新しい L3 コンストラクトで AWS リソースをグループ化するなど)。
+ バージョン間で論理 ID が変更されたときにリソースの置き換えをトリガーすることなく、サードパーティーの依存関係を含むコンストラクトライブラリを安全にアップグレードまたは切り替えます。

このコマンドは、変更を分析し、場所 (スタックおよび論理 ID) を変更するリソースのリストを表示し、ID と状態を維持しながら CloudFormation リソースを更新する複雑なプロセスを処理します。

実行すると、コマンドは現在のコードとデプロイされた状態を比較してマッピングを自動的に計算します。CDK アプリケーションにデプロイされた状態とまったく同じリソースセットが含まれ、コンストラクトツリー内の場所のみが異なることを確認します。コマンドがリソースの追加、削除、または変更を検出すると、リファクタリングオペレーションはエラーメッセージ付きで拒否されます。

計算のマッピング後、コマンドは提案された変更を表示し、ユーザーの確認後にリファクタリングを適用します。あいまいさが検出された場合 (複数の有効なマッピングが可能な場合)、明示的なマッピングを含むオーバーライドファイルを提供して、これらのケースを解決できます。

概要については、「[CDK コードのリファクタリング時にデプロイされたリソースを保持する](refactor.md)」を参照してください。

## 使用
<a name="ref-cli-cmd-refactor-usage"></a>

```
$ cdk refactor <arguments> <options>
```

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

 **CDK スタック ID**   
リファクタリングするアプリの CDK スタックのコンストラクト ID。  
複数のスタック ID を指定して、それらのスタックにリファクタリングオペレーションを集中させることができます。リソースがスタック間で移動されていて、それらのスタックの 1 つが明示的に含まれていない場合、リファクタリングコマンドは自動的に追加のスタックをオペレーションに含めます。  
スタック ID を指定しない場合、アプリ内のすべてのスタックがリファクタリング対象と見なされます。  
 *タイプ*: 文字列  
 *必須:* いいえ

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

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

 `--dry-run`   
マッピングを適用せずにコンソールに出力します。  
このオプションは、特に複雑なアプリケーションを操作するときに、実際にリファクタリングを実行する前に変更を検証するのに役立ちます。リソースを変更せずにどのような変更が行われるかを正確に示します。<a name="ref-cli-cmd-refactor-options-force"></a>

 `--force`   
ユーザーに確認を求めることなく、リファクタリングを続行します。  
これは、インタラクティブ環境で変更に自信があるときに役立ちます。CI/CD パイプラインなどの非インタラクティブ環境では、CDK CLI はプロンプトを表示せずに自動的に進行するため、このオプションは必要ありません。<a name="ref-cli-cmd-refactor-options-help"></a>

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

 `--override-file <FILE>`   
CDK CLI がリソースのリファクタリング解決を決定できない場合にオーバーライドを指定します。このファイルには、JSON 形式のリソースマッピングが含まれています。以下に例を示します。  

```
{
    "environments": [
        {
            "account": "123456789012",
            "region": "us-east-2",
            "resources": {
                "StackA.OldName": "StackB.NewName",
                "StackC.Foo": "StackC.Bar"
            }
        }
    ]
}
```<a name="ref-cli-cmd-refactor-options-revert"></a>

 `--revert <FILE>`   
前のリファクタリングを元に戻します。リソースマッピングを含むオーバーライドファイルを提供する必要があります。  
これにより、前のリファクタリングオペレーションが完全に元に戻されるわけではありません。リファクタリングを完全に元に戻すには、アプリケーションを前の状態にロールバックし、リファクタリングプロセスを再度実行する必要があります。