

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護，並於 2023 年 6 月 1 日結束支援。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

**重要**  
`cdk orphan` 命令處於預覽版本中，可能會有所變更。  
使用此命令時，您必須提供 `--unstable=orphan`選項。

安全地從 an AWS CloudFormation 堆疊分離一或多個資源，而不將其刪除。當您需要將資源從一種建構類型遷移至另一種建構類型 （例如，將 DynamoDB 遷移`Table`至 `TableV2`) 而不會發生停機時間或資料遺失時，這會很有用。

當您在 CDK 程式碼中變更建構類型時，CloudFormation 會將此解譯為資源取代，這會刪除現有資源並建立新的資源。對於資料庫和儲存體等具狀態的資源，這會導致資料遺失。`cdk orphan` 命令會先從堆疊分離資源來解決此問題，因此您可以使用 在新的建構類型下重新匯入`cdk import`。

`cdk orphan` 可讓您：
+ 變更其建構類型之前，請先從堆疊分離具狀態的資源。
+ 在建構版本之間遷移 （例如，DynamoDB `Table`到 `TableV2`)，而不會遺失資料。
+ 變更支援建構的 CloudFormation 資源類型，而不取代實體資源。

孤立命令會執行三個 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`會偵測偏離並提示您部署。接受提示以協調堆疊。

這項功能目前具有下列限制：
+ 所有建構路徑都必須參考相同的堆疊。不支援在單一命令中跨多個堆疊孤立資源。
+ 不支援萬用字元模式。路徑會比對為確切的字首。
+ 此命令需要引導範本的第 32 版，其中包含部署角色所需的 IAM 許可。

## Usage
<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>

 **路徑**   
一或多個孤立的建構路徑，格式為 `StackName/ConstructPath`。例如 `MyStack/MyTable`。可在單一命令中提供多個路徑來孤立多個資源。  
所有路徑都必須參考相同的堆疊。  
 *類型：*字串  
 *必要*：是

## 選項
<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>

### 孤立單一資源
<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
```