Esta es la guía para desarrolladores de AWS CDK v2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configurar los informes de datos de uso de la biblioteca de AWS CDK
¿Qué son los informes de datos de uso de la biblioteca de CDK?
Las aplicaciones del AWS Cloud Development Kit (AWS CDK) están configuradas para recopilar e informar sobre los datos de uso a fin de obtener información sobre cómo se utiliza el AWS CDK. El equipo de CDK utiliza estos datos para hacer lo siguiente:
-
Comuníquese con los clientes: identifique pilas con un constructo con problemas de seguridad o fiabilidad conocidos y envíe comunicaciones sobre temas que afecten a los clientes.
-
Informe sobre el desarrollo del CDK: obtenga información sobre el uso del CDK para informar mejor sobre el desarrollo del CDK.
-
Investigue los problemas relacionados con el CDK: cuando se notifican errores, los datos de uso proporcionan información valiosa al equipo de CDK a la hora de solucionar problemas.
¿Qué datos de uso se recopilan?
Hay dos categorías de datos de uso de aplicaciones recopilados por el CDK:
-
Datos de uso general
-
Datos de uso adicional
Recopilación de datos de uso general
El CDK recopila los siguientes tipos de datos de uso general de sus aplicaciones de CDK:
-
Versiones de las bibliotecas de CDK utilizadas.
-
Nombres de los constructos utilizados en los siguientes módulos
NPM:-
Módulos principales de AWS CDK
-
módulos de la Biblioteca de constructos de AWS
-
módulo de constructos de soluciones de AWS
-
módulo del kit de implementación de la granja de renderizado de AWS
-
nota
Antes de la versión 1.93.0, el AWS CDK indicaba los nombres y las versiones de los módulos cargados durante la síntesis, en lugar de los constructos utilizados en la pila.
Recopilación de datos de uso adicional
A partir de la versión 2.178.0 de CDK, la recopilación de datos de uso se amplió para incluir los siguientes datos de uso adicional:
-
Claves de propiedad definidas por CDK: cuando se utiliza una propiedad integrada de un constructo de nivel 2, se recopilará la clave de propiedad. Esto incluye las claves de propiedad integradas anidadas en los objetos del diccionario.
-
Valores de propiedades booleanas y de enumeración de las claves de propiedad definidas por CDK: en el caso de las claves de propiedad definidas por CDK, solo se recopilarán los valores de propiedad de los tipos booleano y de enumeración. Todos los demás tipos, como los valores de cadena o las referencias a constructos, se redactarán.
-
Nombre del método, las claves y los valores de propiedad de los tipos booleano y de enumeración: cuando utilice un método de constructo de nivel 2, recopilaremos el nombre del método, las claves de propiedad y los valores de propiedad de los tipos booleano y de enumeración.
En el caso de las claves de propiedad y los valores que cree de forma exclusiva, todo el objeto se redactará. Por ejemplo, si se utiliza
InlineApiDefinition
para definir una especificación OpenAPI y pasarla a un componente
RestApi
fijo, se redactará todo el objeto InlineApiDefinition.
Para obtener más información sobre la recopilación de datos de uso adicionales, incluidas sus ventajas y posibles problemas, consulte el debate #33198 sobre la recopilación de metadatos adicionales (bajo la marca de características) por parte de CDK
Cómo CDK recopila los datos de uso de las aplicaciones
En síntesis, el CDK recopila los datos de uso de la aplicación y los almacena en el recurso
AWS::CDK::Metadata. A continuación, se muestra un ejemplo de esto en la plantilla de AWS CloudFormation:
CDKMetadata: Type: "AWS::CDK::Metadata" Properties: Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="
La propiedad Analytics es una lista de los constructos de la pila comprimida con gzip, codificada en base64 y codificada con prefijos.
Cómo habilitar o deshabilitar la presentación de informes de datos de uso
Las opciones para optar por no participar en los informes de datos de uso generales y en los informes de datos de uso adicionales dependen de la versión de CDK que utilizó para crear originalmente su aplicación.
De forma predeterminada, las aplicaciones de CDK están configuradas para habilitar de forma automática los informes de datos de uso de la siguiente manera:
-
Todas las aplicaciones de CDK: habilitó la presentación de informes de datos de uso general.
-
Aplicaciones CDK creadas con una versión anterior a la v2.178.0: no se habilitaron de forma automática para recibir informes de datos de uso adicionales.
-
Aplicaciones de CDK creadas con la versión 2.178.0 o posterior: se optó por la generación de informes de datos de uso adicionales.
aviso
Si elige excluirse, el CDK no podrá identificar si ha experimentado problemas de seguridad ni le enviará notificaciones al respecto.
Excluya todos los informes de datos de uso
Para excluirse de todos los informes de datos de uso, puede usar la interfaz de la línea de comandos (CLI) del AWS Cloud Development Kit (AWS CDK) o configurar el archivo cdk.json de su proyecto.
- Para desactivar todos los informes de datos de uso con la CLI de CDK
-
-
Utilice la opción
--no-version-reportingcon cualquier comando de la CLI de CDK para desactivar un solo comando. A continuación, se muestra un ejemplo de desactivación durante la síntesis de plantillas:$ cdk synth --no-version-reportingComo el CDK sintetiza las plantillas automáticamente cuando ejecuta
cdk deploy, también debería utilizar--no-version-reportingcon el comandocdk deploy.
-
- Para desactivar todos los informes de datos de uso con la configuración el archivo cdk.json
-
-
Configure
versionReportingcomofalseen./cdk.jsono~/.cdk.json. Esto lo desactiva de forma predeterminada. A continuación, se muestra un ejemplo:{ "app": "...", "versionReporting": false } -
Después de la configuración, puede anular este comportamiento y activarlo especificando
--version-reportingen un comando individual.
-
Excluya solo los informes de datos de uso adicional
Si su aplicación de CDK se creó con una versión de CDK anterior a la versión 2.178.0, quedará automáticamente excluido de los informes de datos de uso adicional, incluso si optó por los informes de datos de uso general. No tiene que hacer nada para excluirse de los informes de datos de uso adicionales.
Si su aplicación de CDK se creó con la versión 2.178.0 o posterior de CDK, debe excluirse de todos los informes de datos de uso. Puede excluirse únicamente de los informes de datos de uso adicionales
Opte por los informes de datos de uso
Si su aplicación de CDK se creó con la versión 2.178.0 o posterior de CDK, debe excluirse de todos los informes de datos de uso mediante la configuración de versionReporting en true. Este es el comportamiento predeterminado de las aplicaciones de CDK.
Si su aplicación de CDK se creó con una versión de CDK posterior a 2.178.0, puede excluirse de todos los informes de datos de uso generales si configura versionReporting en true. Para optar por recibir informes de datos de uso adicionales, debe habilitar una marca de características.
nota
Estos pasos son para las aplicaciones de CDK que se crearon originalmente con una versión anterior a la versión 2.178.0
-
Compruebe que ahora esté utilizando la versión 2.178.0 o posterior del CDK.
-
En el archivo de configuración del CDK, especifique
@aws-cdk/core:enableAdditionalMetadataCollectioncomotrue. A continuación, se muestra un ejemplo:{ "context": { "@aws-cdk/core:enableAdditionalMetadataCollection": "true" } } -
También puede usar el valor
ENABLE_ADDITIONAL_METADATA_COLLECTIONcon la claseFeatureFlags. A continuación, se muestra un ejemplo: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');
Ejemplos
Datos de uso generales y adicionales recopilados de una aplicación de CDK
A continuación, se muestra un ejemplo de una aplicación de 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();
En síntesis, los datos de uso se recopilan, comprimen y almacenan en el recurso
AWS::CDK::Metadata.
El siguiente es un ejemplo de datos de uso general recopilados con una versión de CDK anterior a la versión 2.178.0:
{ "fqn": "aws-cdk-lib.aws-s3.Bucket", "version": "v2.170.0" }
El siguiente es un ejemplo de los datos de uso recopilados, incluidos los datos de uso adicionales introducidos en la versión 2.178.0 del CDK:
{ "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": "*", } } } ] }