

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

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

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

使用 AWS 云开发工具包 (AWS CDK) 命令行界面 (CLI) `cdk gc` 命令对存储在引导堆栈资源中的未使用资产执行垃圾回收。使用此命令查看、管理和删除不再需要的资产。

对于 Amazon Simple Storage Service (Amazon S3) 资产，CDK CLI 会检查同一环境中现有的 AWS CloudFormation 模板，查看它们是否被引用。如果未被引用，则这些模板将被视为未使用，并符合垃圾回收条件。

**警告**  
正在为 AWS CDK 开发 `cdk gc` 命令。此命令的当前功能被视为生产就绪，可以安全使用。但是，此命令的范围和功能可能会发生变化。因此，您必须通过提供 `unstable=gc` 命令选择加入来使用此命令。

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

```
$ cdk gc <arguments> <options>
```

## 参数
<a name="ref-cli-cmd-gc-args"></a><a name="ref-cli-cmd-gc-args-env"></a>

 **AWS 环境**   
要对其执行垃圾回收操作的目标 AWS 环境。  
提供环境时，请使用以下格式：`aws://<account-id>/<region>`。例如 `aws://<123456789012>/<us-east-1>`。  
在单个命令中可以多次提供此参数，以便在多个环境中执行垃圾回收操作。  
默认情况下，CDK CLI 将对您在 CDK 应用程序中引用或作为参数提供的所有环境执行垃圾回收操作。如果您未提供环境，CDK CLI 将根据默认源确定环境。这些源包括您使用 `--profile` 选项、环境变量或默认 AWS CLI 源指定的环境。

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

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

 `--action <STRING>`   
垃圾回收期间 `cdk gc` 对您的资产执行的操作。  
+  `delete-tagged` – 删除所标记日期在您提供的缓冲天数范围内的资产，但不会标记新识别的未使用资产。
+  `full` – 执行所有垃圾回收操作。这包括删除您提供的缓冲天数范围内的资产，以及标记新识别的未使用资产。
+  `print` – 在命令提示符下输出未使用的资产数量，但不会对您的 AWS 环境进行任何实际更改。
+  `tag` – 标记任何新识别的未使用资产，但不会删除您提供的缓冲天数范围内的任何资产。
 *接受的值*：`delete-tagged`、`full`、`print`、`tag`  
 *默认值*：`full`<a name="ref-cli-cmd-gc-options-bootstrap-stack-name"></a>

 `--bootstrap-stack-name <STRING>`   
您的 AWS 环境中 CDK 引导堆栈的名称。如果您自定义了引导堆栈名称，请提供此选项。如果您使用的是默认 `CDKToolkit` 堆栈名称，则无需提供此选项。  
 *默认值*：`CDKToolkit`<a name="ref-cli-cmd-gc-options-confirm"></a>

 `--confirm <BOOLEAN>`   
指定 CDK CLI 在删除任何资产之前是否会请求您手动确认。  
指定 `false` 会自动删除资产而不提示您手动确认。  
 *默认值*：`true`<a name="ref-cli-cmd-gc-options-created-buffer-days"></a>

 `--created-buffer-days <NUMBER>`   
资产在符合垃圾回收操作条件之前必须存在的天数。  
当您提供一个数字时，在指定天数之外不存在的资产将从垃圾回收操作中筛选出来。  
 *默认值*：`1`<a name="ref-cli-cmd-gc-options-help"></a>

 `--help, -h <BOOLEAN>`   
显示 `cdk gc` 命令的命令参考信息。<a name="ref-cli-cmd-gc-options-rollback-buffer-days"></a>

 `--rollback-buffer-days <NUMBER>`   
资产在符合垃圾回收操作条件之前必须标记为隔离的天数。  
当您提供一个数字时，CDK CLI 会将未使用的资产标记为当前日期，而不是将其删除。CDK CLI 还会检查之前运行 `cdk gc` 命令时是否已标记任何资产。之前标记过的在您提供的缓冲天数范围内的资产将被删除。  
 *默认值*：`0`<a name="ref-cli-cmd-gc-options-type"></a>

 `--type <STRING>`   
引导堆栈中要执行垃圾回收操作的引导资源类型。  
+  `all` – 对引导的所有资源执行垃圾回收操作。
+  `ecr` – 对引导堆栈的 Amazon Elastic Container Registry (Amazon ECR) 存储库中的资产执行垃圾回收操作。
+  `s3` – 对引导堆栈的 Amazon S3 存储桶中的资产执行垃圾回收操作。
 *接受的值*：`all`、`ecr`、`s3`  
 *默认值*：`all`<a name="ref-cli-cmd-gc-options-unstable"></a>

 `--unstable <STRING>`   
允许使用仍在开发中的 CDK CLI 命令。  
要使用任何仍在开发中且可能发生变化的 CDK CLI 命令，需要此选项。  
可以在单个命令中多次提供此选项。  
要使用 `cdk gc`，请提供 `--unstable=gc`。

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

### 基本示例
<a name="ref-cli-cmd-gc-examples-basic"></a>

以下示例提示您手动确认对引导堆栈的 Amazon S3 存储桶中的资产执行默认垃圾回收操作：

```
$ cdk gc --unstable=gc --type=s3

 ⏳  Garbage Collecting environment aws://<account-id>/<region>...
Found 99 assets to delete based off of the following criteria:
- assets have been isolated for > 0 days
- assets were created > 1 days ago

Delete this batch (yes/no/delete-all)?
```

以下示例对引导堆栈的 Amazon S3 存储桶中的一系列资产执行垃圾回收操作。此范围包括已被 `cdk gc` 标记超过 30 天且创建时间超过 10 天的资产。此命令会在删除任何资产之前提示手动确认：

```
$ cdk gc --unstable=gc --type=s3 --rollback-buffer-days=30 --created-buffer-days=10
```

以下示例执行的操作是删除引导堆栈的 Amazon S3 存储桶中之前已标记且超过 30 天未使用的资产：

```
$ cdk gc --unstable=gc --type=s3 --action=delete-tagged --rollback-buffer-days=30
```