

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

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

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

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

1 つ以上のリソースを削除せずに AWS CloudFormation スタックから安全にデタッチします。これは、ダウンタイムやデータ損失なしで、あるコンストラクトタイプから別のコンストラクトタイプにリソースを移行する必要がある場合に便利です (DynamoDB `Table`を に移行するなど`TableV2`)。

CDK コードでコンストラクトタイプを変更すると、CloudFormation はこれをリソース置換として解釈し、既存のリソースを削除して新しいリソースを作成します。データベースやストレージなどのステートフルリソースの場合、これによりデータが失われます。`cdk orphan` コマンドは、最初にスタックからリソースをデタッチしてこれを解決するため、 を使用して新しいコンストラクトタイプで再インポートできます`cdk import`。

`cdk orphan` を使用すると、次のことが可能になります。
+ コンストラクトタイプを変更する前に、スタックからステートフルリソースをデタッチします。
+ データ損失なしでコンストラクトバージョン間 (DynamoDB など`TableV2`) を移行`Table`します。
+ 物理リソースを置き換えることなく、コンストラクトをバッキングする CloudFormation リソースタイプを変更します。

孤立コマンドは、3 つの CloudFormation デプロイを実行します。

1.  **リファレンスの解決**: 孤立したリソースへのクロスリソースリファレンス (`Ref`、`Fn::GetAtt`、`Fn::Sub`) を解決し、孤立したリソースが削除された後も、それらに依存するスタック内の他のリソースが引き続き機能するようにします。

1.  **デカップリング**: すべてのクロスリソース参照を解決されたリテラル値に置き換え、 `DeletionPolicy`を に設定し`Retain`、`DependsOn`エントリを削除して、スタックの残りの部分からリソースを分離します。

1.  **削除**: CloudFormation テンプレートからリソースを削除します。物理リソースは AWS アカウント内に引き続き存在します。

孤立したら、CDK コードを更新して新しいコンストラクトタイプを使用し、[cdk インポート](ref-cli-cmd-import.md)を使用してリソースを管理に戻します。

 **リソースを孤立させ、新しいコンストラクトタイプで再インポートするには**   

1. スタックをデプロイし、リソースが存在することを確認します。

1. リソースのコンストラクトパス`cdk orphan`を使用して を実行します。

   ```
   $ cdk orphan MyStack/MyTable --unstable=orphan
   ```

1. コマンドはリソースマッピングを出力します。これをインポートステップに保存します。

1. 新しいコンストラクトタイプを使用するように CDK コードを更新します (例: `Table`を に変更)`TableV2`。

1. 孤立出力からリソースマッピング`cdk import`を使用して を実行します。

   ```
   $ cdk import MyStack --resource-mapping-inline '{"MyTable":{"TableName":"my-table"}}'
   ```

1. インポートが完了すると、 はドリフト`cdk import`を検出し、デプロイするよう求めます。スタックを調整するプロンプトを受け入れます。

この機能には現在、以下の制限があります。
+ すべてのコンストラクトパスは、同じスタックを参照する必要があります。1 つのコマンドで複数のスタック間でリソースを孤立させることはサポートされていません。
+ ワイルドカードパターンはサポートされていません。パスは正確なプレフィックスとして一致します。
+ このコマンドには、デプロイロールに必要な IAM アクセス許可を含むブートストラップテンプレートのバージョン 32 が必要です。

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

```
$ cdk orphan <PATHS> <options>
```

## 引数
<a name="ref-cli-cmd-orphan-args"></a><a name="ref-cli-cmd-orphan-args-paths"></a>

 **パス**   
孤立する 1 つ以上のコンストラクトパス。形式は です`StackName/ConstructPath`。例えば、`MyStack/MyTable`。複数のパスを指定して、1 つのコマンドで複数のリソースを孤立させることができます。  
すべてのパスは同じスタックを参照する必要があります。  
 *タイプ*: 文字列  
 *必須*: はい

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

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

 `--help, -h <BOOLEAN>`   
`cdk orphan` コマンドのコマンドリファレンス情報を表示します。

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

### 1 つのリソースを孤立させる
<a name="ref-cli-cmd-orphan-examples-single"></a>

```
$ cdk orphan MyStack/MyTable --unstable=orphan
```

### 複数のリソースを孤立させる
<a name="ref-cli-cmd-orphan-examples-multiple"></a>

```
$ cdk orphan MyStack/MyTable MyStack/MyBucket --unstable=orphan
```

### 確認プロンプトをスキップする
<a name="ref-cli-cmd-orphan-examples-yes"></a>

```
$ cdk orphan MyStack/MyTable --unstable=orphan --yes
```