Como utilizo as escotilhas de escape do CDK para recuperar objetos de construção de nível inferior das construções L3 e L2?

4 minuto de leitura
0

Quero usar as escotilhas de escape do AWS Cloud Development Kit (AWS CDK) para recuperar objetos secundários das construções L2 e L3.

Breve descrição

Há três camadas de abstração do AWS CDK:

  • As construções L1 têm relações 1:1 que são mapeadas para os tipos de recursos relacionados do AWS CloudFormation. Essa é a camada de construção mais fundamental para o AWS CDK.
  • As construções L2 podem envolver várias construções L1 e seu objeto filho padrão é a construção L1 do tipo de recurso relevante. Outros objetos secundários de construção L1 são sintetizados em modelos do AWS CloudFormation com base nas propriedades especificadas do objeto filho L2.
  • As construções L3 são o nível mais alto das camadas de abstração do AWS CDK e podem envolver várias construções L2 e L1.

Para obter mais informações, consulte abstrações e escotilhas de escape.

Resolução

Use as escotilhas de escape do AWS CDK para recuperar objetos secundários de um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) com uma construção L3.

Observação: essas etapas usam a linguagem de programação Python. As etapas são semelhantes para qualquer outra linguagem de programação. Certifique-se de ajustar a sintaxe do código para a linguagem de programação que você está usando.

Um exemplo de cluster Amazon EKS com uma construção L3 em 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 os objetos secundários de uma construção L3 em um cluster do Amazon EKS usando o atributo node.find_all():

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

Depois de usar o comando anterior, todos os IDs secundários da construção L3 são impressos.

Exemplo de impressão:

HelloEKS

...
NodegroupDefaultCapacity
NodeGroupRole
...

2.    Depois de imprimir os IDs secundários da construção L3, recupere o ID secundário desejado usando o atributo node.find_child():

Importante: certifique-se de verificar todos os comandos da AWS Command Line Interface (AWS CLI) e substituir todas as instâncias de exemplos de strings por seus valores. Por exemplo, substitua example_child_id pelo ID do child de destino.

l2_nodeGroup = eks_object.node.find_child(example_child_id)

Depois de usar esse comando, a construção L2 do ID infantil desejado é impressa.

Exemplo de impressão:

<aws_cdk.aws_eks.Nodegroup object at 0x7ffa9c7b2910>

Observação: você pode usar as variáveis l2_nodeGroup para invocar as propriedades, atributos e métodos do grupo de nós para modificar os recursos associados.

3.    Recupere todos os objetos secundários da construção L2 usando o atributo node.find_all():

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

Depois de usar o comando anterior, todos os IDs secundários da construção L2 serão impressos.

Exemplo de impressão:

NodegroupDefaultCapacity
NodeGroupRole
ImportNodeGroupRole

4.    Depois que os IDs secundários da construção L2 forem impressos, recupere o ID secundário desejado usando o atributo node.find_child():

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

Depois de usar o comando anterior, um objeto na camada L2 retornará no nível aws_iam.Role.

5.    Quando você estiver no nível aws_iam.Role, use o seguinte atributo node.default_child para alcançar o objeto de construção CfnRole L1:

l1_nodeGroup_role = l2_nodeGroup_role.node.default_child
        print(l1_nodeGroup_role)

Depois de usar o comando anterior, o filho padrão na camada L1 retornará.

Observação: ao usar node.find_all() ou node.default_child para recuperar objetos secundários, use as funcionalidades dessa construção para aumentar os controles sobre um modelo do CloudFormation.

Se você ainda não conseguir recuperar objetos secundários, entre em contato com o AWS Support ou crie um novo problema no site do GitHub para problemas do AWS CDK.

Informações relacionadas

Como personalizo o valor de uma propriedade de recurso quando há uma lacuna entre as construções de nível superior do CDK e um recurso do CloudFormation?

AWS OFICIAL
AWS OFICIALAtualizada há um ano