选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

配置 AWS CDK 使用情况数据报告

聚焦模式
配置 AWS CDK 使用情况数据报告 - AWS Cloud Development Kit (AWS CDK) v2

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

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

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

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

什么是 CDK 使用情况数据报告?

AWS Cloud Development Kit (AWS CDK) 应用程序配置为收集和报告使用情况数据,以深入了解 AWS CDK 其使用情况。CDK 团队使用这些数据来执行以下操作:

  • 与客户沟通 — 使用存在已知安全性或可靠性问题的结构识别堆栈,并就影响客户的话题进行沟通。

  • CDK 开发提供信息 — 深入了解 CDK 的使用情况,更好地为 CDK 开发提供信息。

  • 调查 CDK 问题 — 当报告错误时,使用情况数据可为 CDK 团队进行故障排除提供宝贵的见解。

收集了哪些使用数据?

CDK 收集的使用数据分为两类:

  • 一般使用数据

  • 其他使用数据

一般使用数据收集

CDK 从您的 CDK 应用程序中收集以下类型的常规使用数据:

  • 所使用的 CDK 库的版本。

  • 来自以下NPM模块的构造名称:

    • AWS CDK 核心模块

    • AWS 构造库模块

    • AWS 解决方案构造模块

    • AWS 渲染农场部署套件模块

注意

在 1.93.0 版本之前, AWS CDK 报告的是合成期间加载的模块的名称和版本,而不是堆栈中使用的构造。

其他使用情况数据收集

从 CDK 版本 2.178.0 开始,使用情况数据收集扩展到包括以下其他使用情况数据:

  • CDK-定义的属性键-当您使用 L2 构造的内置属性时,将收集属性密钥。这包括嵌套在字典对象中的内置属性键。

  • 来@@ 自 CDK 的布尔和枚举属性值——定义的属性键 ——对于 CDK 定义的属性键,将仅收集布尔和枚举类型的属性值。所有其他类型,例如字符串值或构造引用,都将被删除。

  • 布尔和枚举类型的方法名称、键和属性值 — 当您使用 L2 构造方法时,我们将收集布尔和枚举类型的方法名称、属性键以及属性值。

对于您唯一创建的属性键和值,将对整个对象进行密文处理。例如,如果你InlineApiDefinition用定义一个 OpenAPI 规范并将其传递到RestApi构造中,整个InlineApiDefinition对象将被编辑。

有关其他使用情况数据收集的更多信息,包括其好处和潜在问题,请参阅 aws- cdk 存储库中的 CDK 收集其他元数据(在功能标志下)#33198 讨论。

CDK 如何收集使用数据

合成时,CDK 会从您的应用程序收集使用情况数据并将其存储在AWS::CDK::Metadata资源中。以下是合成 AWS CloudFormation 模板上的一个示例:

CDKMetadata: Type: "AWS::CDK::Metadata" Properties: Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="

Analytics 属性是堆栈中构造的 gzip、base64 编码、前缀编码列表。

如何选择退出或选择加入使用情况数据报告

您选择退出或选择加入一般使用情况数据报告和其他使用情况数据报告的选项取决于您最初创建应用程序时使用的 CDK 版本。

默认情况下,CDK 应用程序配置为自动选择使用情况数据报告,如下所示:

  • 所有 CDK 应用程序 — 选择了常规使用情况数据报告。

  • 使用低@@ 于 v2.178.0 的版本创建的 CDK 应用程序 — 不会自动选择加入其他使用情况数据报告。

  • 使用 v2.178.0 或更高版本创建的 CDK 应用程序-选择了其他使用情况数据报告。

警告

如果您选择退出,CDK 将无法识别您是否受到安全问题的影响,也不会向您发送安全问题通知。

选择退出所有使用情况数据报告

要选择退出所有使用情况数据报告,您可以使用 AWS Cloud Development Kit (AWS CDK) 命令行界面 (CLI) 或配置项目的cdk.json文件。

选择退出使用 CDK 报告所有使用情况数据 CLI
  • 将该--no-version-reporting选项与任何 CDK 配合使用 CLI 命令选择退出单个命令。以下是模板合成期间选择退出的示例:

    $ cdk synth --no-version-reporting

    由于 CDK 在您运行时会自动合成模板cdk deploy,因此您还应该--no-version-reporting使用该cdk deploy命令。

通过配置cdk.json文件选择退出所有使用情况数据报告
  1. ./cdk.json~/.cdk.json 中将 versionReporting 设置为 false 默认情况下,这会让您选择退出。以下是示例:

    { "app": "...", "versionReporting": false }
  2. 配置完成后,您可以覆盖这一行为,通过在单个命令中指定 --version-reporting 来选择加入。

仅选择退出其他使用情况数据报告

如果您的 CDK 应用程序是使用低于 2.178.0 的 CDK 版本创建的,那么即使您选择了常规使用情况数据报告,您也会自动选择退出其他使用情况数据报告。您无需执行任何操作即可选择退出其他使用情况数据报告。

如果您的 CDK 应用程序是使用 CDK 版本 2.178.0 或更高版本创建的,则必须选择退出所有使用情况数据报告。您不能只选择退出额外的使用数据报告。

选择使用情况数据报告

如果您的 CDK 应用程序是使用 CDK 版本 2.178.0 或更高版本创建的,则可以通过将设置为来选择加入所有使用情况数据报告。versionReporting true这是 CDK 应用程序的默认行为。

如果您的 CDK 应用程序是使用低于 2.178.0 的 CDK 版本创建的,则可以通过将设置为来选择常规使用情况数据报告。versionReporting true要选择加入其他使用情况数据报告,您必须启用功能标记。

选择加入其他使用情况数据报告
注意

这些步骤适用于最初使用低于 2.178.0 的版本创建的 CDK 应用程序

  1. 确认您现在使用的是 CDK 版本 2.178.0 或更高版本。

  2. 在您的 CDK 配置文件中,指定@aws-cdk/core:enableAdditionalMetadataCollection为。true以下是示例:

    { "context": { "@aws-cdk/core:enableAdditionalMetadataCollection": "true" } }
  3. 您也可以在FeatureFlags类中使用该ENABLE_ADDITIONAL_METADATA_COLLECTION值。以下是示例:

    import * as cdk from 'aws-cdk-lib'; import { FeatureFlags } from 'aws-cdk-lib'; import * as cx_api from 'aws-cdk-lib/cx-api'; import { Construct } from 'constructs'; export class MyStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Set the feature flag ENABLE_ADDITIONAL_METADATA_COLLECTION to true FeatureFlags.of(this).add(cx_api.ENABLE_ADDITIONAL_METADATA_COLLECTION, true); // Your stack resources go here new cdk.aws_s3.Bucket(this, 'MyBucket'); } } const app = new cdk.App(); new MyStack(app, 'MyStack');

示例

从 CDK 应用程序收集的一般和其他使用数据

以下是 CDK 应用程序的示例:

import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as s3 from 'aws-cdk-lib/aws-s3'; class MyStack extends cdk.Stack { constructor(scope, id, props) { super(scope, id, props); // Create an S3 bucket (L2 construct) const myBucket = new s3.Bucket(this, 'MyBucket', { bucketName: 'my-cdk-example-bucket', // String type versioned: true, // Boolean type removalPolicy: cdk.RemovalPolicy.DESTROY, // ENUM type lifecycleRules: [{ // Array of object type expirationDate: new Date('2019-10-01'), objectSizeLessThan: 600, objectSizeGreaterThan: 500, }], }); // Use a method of the L2 construct to define additional properties myBucket.addLifecycleRule({ id: 'ExpireOldObjects', enabled: true, // Boolean expiration: cdk.Duration.days(90), // Expire objects after 90 days }); } } // Define the CDK app and stack const app = new cdk.App(); new MyStack(app, 'MyStack'); app.synth();

合成时,使用数据会被收集、压缩并存储在AWS::CDK::Metadata资源中。

以下是使用低于 2.178.0 的 CDK 版本收集的一般使用数据示例:

{ "fqn": "aws-cdk-lib.aws-s3.Bucket", "version": "v2.170.0" }

以下是收集的使用数据示例,包括 CDK 版本 2.178.0 中引入的其他使用情况数据:

{ "fqn": "aws-cdk-lib.aws_s3.Bucket", "version": "2.170.0", "metadata": [ { "type": "aws:cdk:analytics:construct", "data": { "bucketName": "*", "versioned": true, "removalPolicy": "cdk.RemovalPolicy.DESTROY", "lifecycleRules": [ { "expirationDate": "*", "objectSizeLessThan": "*", "objectSizeGreaterThan": "*" } ] } }, { "type": "aws:cdk:analytics:method", "data": { "name": "addLifecycleRule", "prop": { "id": "*", "enabled": true, "expiration": "*", } } } ] }
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。