¿Cómo utilizo las escotillas de escape de CDK para recuperar objetos de construcción de nivel inferior de construcciones L3 y L2?

4 minutos de lectura
0

Quiero usar las escotillas de escape del AWS Cloud Development Kit (AWS CDK) para recuperar objetos secundarios de los componentes L2 y L3.

Descripción breve

Hay tres capas de abstracción de AWS CDK:

  • Los componentes L1 tienen relaciones 1:1 que se corresponden con los tipos de recursos de AWS CloudFormation relacionados. Esta es la capa de componente más fundamental para AWS CDK.
  • Los componentes L2 pueden incluir un número de componentes L1 y su objeto secundario predeterminado es el componente L1 del tipo de recurso correspondiente. Otros objetos secundarios de componente de nivel 1 se sintetizan en plantillas de AWS CloudFormation en función de las propiedades especificadas del objeto secundario de nivel 2.
  • Los componentes L3 son el nivel más alto de las capas de abstracción de AWS CDK y pueden incluir un número de componentes L2 y L1.

Para obtener más información, consulte abstracciones y escotillas de escape.

Resolución

Utilice las escotillas de escape de AWS CDK para recuperar objetos secundarios de un clúster de Amazon Elastic Kubernetes Service (Amazon EKS) con un componente L3.

**Nota:**En estos pasos se utiliza el lenguaje de programación Python. Los pasos son similares para cualquier otro lenguaje de programación. Asegúrese de ajustar la sintaxis del código para el lenguaje de programación que utilice.

Un ejemplo de clúster de Amazon EKS con una construcción L3 en Python:

vpc = ec2.Vpc(self, "Vpc",
            ip_addresses=ec2.IpAddresses.cidr("192.168.0.0/25")
        )

eks_object = eks.Cluster(self, "HelloEKS",
            version=eks.KubernetesVersion.V1_25,
            vpc=vpc,
            vpc_subnets=[ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS)]
        )

1.    Recupere todos los objetos secundarios de un componente L3 en un clúster de Amazon EKS mediante el atributo node.find_all():

for child in eks_object.node.find_all():
            print(child.node.id)

Tras utilizar el comando anterior, se imprimen todos los identificadores secundarios del componente L3.

Ejemplo de impresión:

HelloEKS

...
NodegroupDefaultCapacity
NodeGroupRole
...

2.    Tras imprimir los identificadores secundarios del componente L3, recupere el identificador secundario deseado mediante el atributo node.find_child():

**Importante:**Asegúrese de comprobar todos los comandos de la AWS Command Line Interface (AWS CLI) y de reemplazar todas las instancias de cadenas de ejemplo por sus valores. Por ejemplo, reemplace example_child_id por su ID de destino secundario.

l2_nodeGroup = eks_object.node.find_child(example_child_id)

Después de usar este comando, se imprime el componente L2 del identificador secundario deseado.

Ejemplo de impresión:

<aws_cdk.aws_eks.Nodegroup object at 0x7ffa9c7b2910>

**Nota:**Puede usar las variables l2_NodeGroup para invocar las propiedades Nodegroup, los atributos y los métodos para modificar los recursos asociados.

3.    Recupere todos los objetos secundarios del componente L2 mediante el atributo node.find_all():

for child in l2_nodeGroup.node.find_all():
         print(child.node.id)

Tras utilizar el comando anterior, se imprimirán todos los ID secundarios del componente L2.

Ejemplo de impresión:

NodegroupDefaultCapacity
NodeGroupRole
ImportNodeGroupRole

4.    Una vez impresos los identificadores secundarios del componente L2, recupere el identificador secundario deseado mediante el atributo node.find_child():

l2_nodeGroup_role = l2_nodeGroup.node.find_child(example_child_id)
     print(l2_nodeGroup_role)

Tras utilizar el comando anterior, un objeto de la capa L2 volverá al nivel aws_IAM.Role.

5.    Cuando esté en el nivel aws_IAM.Role, utilice el siguiente atributo node.default_child para llegar al objeto de componente CFNRole de nivel 1:

l1_nodeGroup_role = l2_nodeGroup_role.node.default_child
        print(l1_nodeGroup_role)

Tras utilizar el comando anterior, volverá el elemento secundario predeterminado de la capa L1.

Nota: Cuando usa node.find_all() o node.default_child para recuperar objetos secundarios, puede usar las funcionalidades de ese componente para aumentar los controles sobre una plantilla de CloudFormation.

Si sigue sin poder recuperar objetos secundarios, póngase en contacto con AWS Support o cree una nueva edición en el sitio web de GitHub para los problemas del CDK de AWS.

Información relacionada

¿Cómo puedo personalizar el valor de una propiedad de recurso cuando hay una brecha entre los componentes de nivel superior de CDK y un recurso de CloudFormation?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año