

这是 AWS CDK v2 开发者指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段，并于 2023 年 6 月 1 日终止支持。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

将已部署的 AWS 资源、AWS CloudFormation 堆栈和 CloudFormation 模板迁移到新的 AWS CDK 项目中。

此命令会创建一个新的 CDK 应用程序，其中包含单个堆栈，该堆栈以您使用 `--stack-name` 提供的值命名。您可以使用 `--from-scan`、`--from-stack` 或 `--from-path` 来配置迁移源。

有关使用 `cdk migrate` 的更多信息，请参阅[将现有资源和 AWS CloudFormation 模板迁移到 AWS CDK](migrate.md)。

**注意**  
`cdk migrate` 命令处于试验阶段，将来可能会发生重大更改。

## 使用量
<a name="ref-cli-cdk-migrate-usage"></a>

```
$ cdk migrate <options>
```

## 选项
<a name="ref-cli-cdk-migrate-options"></a>

有关适用于所有 CDK CLI 命令的全局选项的列表，请参阅[全局选项](ref-cli-cmd.md#ref-cli-cmd-options)。

### 必需选项
<a name="ref-cli-cdk-migrate-options-required"></a><a name="ref-cli-cdk-migrate-options-stack-name"></a>

 `--stack-name <STRING>`   
AWS CloudFormation 堆栈的名称，迁移后将在 CDK 应用程序中进行创建。  
 *必需*：是

### 条件选项
<a name="ref-cli-cdk-migrate-options-conditional"></a><a name="ref-cli-cdk-migrate-options-from-path"></a>

 `--from-path <PATH>`   
要迁移的 AWS CloudFormation 模板的路径。提供此选项可指定本地模板。  
 *必填*：条件性。如果从本地 AWS CloudFormation 模板迁移，则为必需项。<a name="ref-cli-cdk-migrate-options-from-scan"></a>

 `--from-scan <STRING>`   
从 AWS 环境迁移已部署的资源时，请使用此选项来指定是否应启动新的扫描，或 AWS CDK CLI 是否应使用上次成功的扫描。  
 *必填*：条件性。如果从已部署的 AWS 资源迁移，则为必需项。  
 *接受的值*：`most-recent`、`new`<a name="ref-cli-cdk-migrate-options-from-stack"></a>

 `--from-stack <BOOLEAN>`   
提供此选项可从已部署的 AWS CloudFormation 堆栈迁移。使用 `--stack-name` 来指定已部署的 AWS CloudFormation 堆栈名称。  
 *必填*：条件性。如果从已部署的 AWS CloudFormation 堆栈迁移，则为必需项。

### 可选选项
<a name="ref-cli-cdk-migrate-options-optional"></a><a name="ref-cli-cdk-migrate-options-account"></a>

 `--account <STRING>`   
要从中检索 AWS CloudFormation 堆栈模板的账户。  
 *必需*：否  
 *默认*：AWS CDK CLI 从默认源获取账户信息。<a name="ref-cli-cdk-migrate-options-compress"></a>

 `--compress <BOOLEAN>`   
提供此选项可将生成的 CDK 项目压缩成 `ZIP` 文件。  
 *必需*：否<a name="ref-cli-cdk-migrate-options-filter"></a>

 `--filter <ARRAY>`   
从 AWS 账户和 AWS 区域迁移已部署资源时使用。此选项指定筛选条件来确定要迁移哪些已部署的资源。  
此选项接受键值对数组，其中**键**表示筛选条件类型，**值**表示要筛选的值。  
以下是可接受的键：  
+  `resource-identifier`：资源的标识符。值可以是资源逻辑或物理 ID。例如 `resource-identifier="ClusterName"`。
+  `resource-type-prefix` – AWS CloudFormation 资源类型前缀。例如，指定 `resource-type-prefix="AWS::DynamoDB::"` 以筛选所有 Amazon DynamoDB 资源。
+  `tag-key`：资源标签的键。例如 `tag-key="myTagKey"`。
+  `tag-value`：资源标签的值。例如 `tag-value="myTagValue"`。
为 `AND` 条件逻辑提供多个键值对。以下示例筛选了使用 `myTagKey` 作为标签键的所有 DynamoDB 资源：`--filter resource-type-prefix="AWS::DynamoDB::", tag-key="myTagKey"`。  
在单个命令中多次提供 `--filter` 选项，用于 `OR` 条件逻辑。以下示例筛选了所有属于 DynamoDB 资源或使用 `myTagKey` 标记为标签键的资源：`--filter resource-type-prefix="AWS::DynamoDB::" --filter tag-key="myTagKey"`。  
 *必需*：否<a name="ref-cli-cdk-migrate-options-help"></a>

 `--help, -h <BOOLEAN>`   
显示 `cdk migrate` 命令的命令参考信息。<a name="ref-cli-cdk-migrate-options-language"></a>

 `--language <STRING>`   
迁移期间创建的 CDK 项目使用的编程语言。  
 *必需*：否  
 *有效值*：`typescript`、`python`、`java`、`csharp`、`go`。  
 *默认值*：`typescript`<a name="ref-cli-cdk-migrate-options-output-path"></a>

 `--output-path <PATH>`   
已迁移的 CDK 项目的输出路径。  
 *必需*：否  
 *默认*：默认情况下，AWS CDK CLI 将使用您当前的工作目录。<a name="ref-cli-cdk-migrate-options-region"></a>

 `--region <STRING>`   
要从中检索 AWS CloudFormation 堆栈模板的 AWS 区域。  
 *必需*：否  
 *默认*：AWS CDK CLI 从默认源获取 AWS 区域信息。

## 示例
<a name="ref-cli-cdk-migrate-examples"></a>

### 从 CloudFormation 堆栈迁移的简单示例
<a name="ref-cli-cdk-migrate-examples-1"></a>

使用 `--from-stack` 从特定 AWS 环境中已部署的 CloudFormation 堆栈迁移。提供 `--stack-name` 来命名新的 CDK 堆栈。以下是将 `myCloudFormationStack` 迁移到使用 TypeScript: 的新 CDK 应用程序的示例：

```
$ cdk migrate --language typescript --from-stack --stack-name 'myCloudFormationStack'
```

### 从本地 CloudFormation 模板迁移的简单示例
<a name="ref-cli-cdk-migrate-examples-2"></a>

使用 `--from-path` 从本地 JSON 或 YAML CloudFormation 模板迁移。提供 `--stack-name` 来命名新的 CDK 堆栈。以下是在 TypeScript 中创建新 CDK 应用程序的示例，其中包含来自本地 `template.json` 文件的 `myCloudFormationStack` 堆栈：

```
$ cdk migrate --stack-name "myCloudFormationStack" --language typescript --from-path "./template.json"
```

### 从已部署的 AWS 资源迁移的简单示例
<a name="ref-cli-cdk-migrate-examples-3"></a>

使用 `--from-scan` 从未与 CloudFormation 堆栈关联的特定 AWS 环境中迁移已部署的 AWS 资源。CDK CLI 利用 IaC generator 服务来扫描资源并生成模板。然后，CDK CLI 引用该模板来创建新的 CDK 应用程序。以下是在 TypeScript 中创建新 CDK 应用程序的示例，其中包含新 `myCloudFormationStack` 堆栈，包含已迁移的 AWS 资源：

```
$ cdk migrate --language typescript --from-scan --stack-name "myCloudFormationStack"
```