Esta es la guía para AWS CDK desarrolladores de la versión 2. 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.
Los aspectos son una forma de aplicar una operación a todos los constructos de un ámbito determinado. El aspecto podría modificar los constructos, por ejemplo, mediante el agregado de etiquetas. O podría verificar algo sobre el estado de los constructos, como asegurarse de que todos los bucket estén cifrados.
Para aplicar un aspecto a un constructo y a todos los constructos del mismo ámbito, llame a Aspects
.of(
con aspecto nuevo, como se muestra en el siguiente ejemplo.SCOPE
).add()
Aspects.of(myConstruct).add(new SomeAspect(...));
AWS CDK Utiliza aspectos para etiquetar los recursos, pero el marco también se puede utilizar para otros fines. Por ejemplo, puede usarlo para validar o cambiar los AWS CloudFormation recursos que definan para usted las construcciones de nivel superior.
Aspectos en detalle
Los aspectos emplean el patrón de visitantes
interface IAspect {
visit(node: IConstruct): void;}
Cuando llama a Aspects.of(
, el constructo agrega el aspecto a una lista interna de aspectos. Puede obtener la lista mediante SCOPE
).add(...)Aspects.of(
.SCOPE
)
Durante la fase de preparación, AWS CDK llama al visit
método del objeto para la construcción y a cada uno de sus elementos secundarios en orden descendente.
El método visit
puede cambiar cualquier aspecto del constructo. En lenguajes fuertemente tipados, convierta el constructo recibido en un tipo más específico antes de acceder a las propiedades o métodos específicos del constructo.
Los aspectos no se propagan a través de los límites Stage
de los constructos, porque los Stages
son autónomos e inmutables después de la definición. Aplique los aspectos en el propio Stage
del constructo (o en una parte inferior) si quiere que visiten los constructos que se encuentran dentro del Stage
.
Ejemplo
El siguiente ejemplo valida que todos los buckets creados en la pila tengan activado el control de versiones. El aspecto agrega una anotación de error a los constructos que no superan la validación. Esto provoca un error en la operación synth e impide implementar el ensamblaje de nube resultante.
class BucketVersioningChecker implements IAspect {
public visit(node: IConstruct): void {
// See that we're dealing with a CfnBucket
if (node instanceof s3.CfnBucket) {
// Check for versioning property, exclude the case where the property
// can be a token (IResolvable).
if (!node.versioningConfiguration
|| (!Tokenization.isResolvable(node.versioningConfiguration)
&& node.versioningConfiguration.status !== 'Enabled')) {
Annotations.of(node).addError('Bucket versioning is not enabled');
}
}
}
}
// Later, apply to the stack
Aspects.of(stack).add(new BucketVersioningChecker());