

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

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

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

使用 [AWS CloudFormation 资源导入](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html)将现有 AWS 资源导入 CDK 堆栈。

使用此命令，您可以获取使用其他方法创建的现有资源，并开始使用 AWS CDK 管理这些资源。

在考虑将资源移动到 CDK 管理时，有时可以创建新资源，例如使用 IAM 角色、Lambda 函数和事件规则来创建。对于其他资源，例如 Amazon S3 存储桶和 DynamoDB 表等有状态资源，创建新资源可能会对您的服务产生影响。您可以使用 `cdk import` 导入现有资源，同时最大限度地减少对服务的干扰。有关支持的 AWS 资源列表，请参阅《AWS CloudFormation 用户指南》**中的[资源类型支持](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html)。

 **将现有资源导入 CDK 堆栈**   

1. 运行 `cdk diff` 以确保 CDK 堆栈没有待处理的更改。执行 `cdk import` 时，导入操作中唯一允许的更改是添加正在导入的新资源。

1. 为要导入到堆栈的资源添加构造。例如，为 Amazon S3 存储桶添加以下内容：

   ```
   new s3.Bucket(this, 'ImportedS3Bucket', {});
   ```

   请勿添加任何其他更改。您还必须确保对资源当前具有状态进行准确建模。以存储桶为例，请务必包含 AWS KMS 密钥、生命周期策略以及与存储桶相关的任何其他内容。否则，后续更新操作可能无法达到您的预期。

1. 运行 `cdk import`。如果 CDK 应用程序中有多个堆栈，请传递一个特定的堆栈名称作为参数。

1. CDK CLI 将提示您传入正在导入的资源的实际名称。提供此信息后，将开始导入。

1. `cdk import` 报告成功后，该资源将由 CDK 管理。构造配置中的任何后续更改都将反映在资源上。

目前，此功能具有以下限制：
+ 无法将资源导入嵌套堆栈。
+ 不会检查您为导入的资源指定的属性是否正确和完整。导入后尝试启动偏差检测操作。
+ 依赖其他资源的资源必须按正确的顺序一起或单独导入。否则，CloudFormation 部署将因引用未解析而失败。
+ 此命令使用部署角色凭证，这是读取加密暂存存储桶所必需的。这需要版本 12 的引导模板，其中包括部署角色所必需的 IAM 权限。

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

```
$ cdk import <arguments> <options>
```

## 参数
<a name="ref-cli-cmd-import-args"></a><a name="ref-cli-cmd-import-args-stack-name"></a>

 **CDK 堆栈 ID**   
应用程序中要向其中导入资源的 CDK 堆栈的构造 ID。可以在单个命令中多次提供此参数。  
 *类型*：字符串  
 *必需*：否

## 选项
<a name="ref-cli-cmd-import-options"></a>

有关适用于所有 CDK CLI 命令的全局选项的列表，请参阅[全局选项](ref-cli-cmd.md#ref-cli-cmd-options)。<a name="ref-cli-cmd-import-options-change-set-name"></a>

 `--change-set-name <STRING>`   
要创建的 CloudFormation 更改集的名称。<a name="ref-cli-cmd-import-options-execute"></a>

 `--execute <BOOLEAN>`   
指定是否执行更改集。  
 *默认值*：`true`<a name="ref-cli-cmd-import-options-force"></a>

 `--force, -f <BOOLEAN>`   
默认情况下，如果模板差异包含更新或删除，CDK CLI 将退出该进程。指定为 `true` 以覆盖此行为，并始终继续导入。<a name="ref-cli-cmd-import-options-help"></a>

 `--help, -h <BOOLEAN>`   
显示 `cdk import` 命令的命令参考信息。<a name="ref-cli-cmd-import-options-record-resource-mapping"></a>

 `--record-resource-mapping, -r <STRING>`   
使用此选项生成现有物理资源到将要导入的 CDK 资源的映射。该映射将写入您提供的文件路径。不会执行任何实际的导入操作。<a name="ref-cli-cmd-import-options-resource-mapping"></a>

 `--resource-mapping, -m <STRING>`   
使用此选项来指定用于定义资源映射的文件。CDK CLI 将使用此文件将物理资源映射到要导入的资源，而不是以交互方式询问您。  
此选项可以从脚本运行。<a name="ref-cli-cmd-import-options-rollback"></a>

 `--rollback <BOOLEAN>`   
失败时将堆栈回滚到稳定状态。  
要指定 `false`，您可以使用 `--no-rollback` 或 `-R`。  
指定 `false` 以更快地进行迭代。包含资源替换的部署将始终失败。  
 *默认值*：`true`<a name="ref-cli-cmd-import-options-toolkit-stack-name"></a>

 `--toolkit-stack-name <STRING>`   
要创建的 CDK Toolkit 堆栈的名称。  
默认情况下，`cdk bootstrap` 会将名为 `CDKToolkit` 的堆栈部署到指定的 AWS 环境中。使用此选项可为引导堆栈提供不同的名称。  
CDK CLI 使用此值来验证引导堆栈版本。