Comment utiliser les trappes d'échappement CDK pour récupérer des objets de construction de niveau inférieur à partir de constructions L3 et L2 ?

Lecture de 4 minute(s)
0

Je souhaite utiliser les trappes d'échappement AWS Cloud Development Kit (AWS CDK) pour récupérer des objets enfants issus de constructions L2 et L3.

Brève description

Il existe trois couches d'abstraction AWS CDK :

  • Les constructions L1 ont des relations 1:1 qui correspondent aux types de ressources AWS CloudFormation associés. Il s'agit de la couche de construction la plus fondamentale pour AWS CDK.
  • Les constructions L2 peuvent encapsuler un certain nombre de constructions L1 et leur objet enfant par défaut est la construction L1 du type de ressource concerné. Les autres objets enfants de construction L1 sont synthétisés dans des modèles AWS CloudFormation en fonction des propriétés spécifiées de l'objet enfant L2.
  • Les constructions L3 constituent le niveau le plus élevé des couches d'abstraction AWS CDK et peuvent encapsuler un certain nombre de constructions L2 et L1.

Pour plus d'informations, voir Abstractions et trappes d'échappement.

Résolution

Utilisez les trappes d'échappement AWS CDK pour récupérer des objets enfants à partir d'un cluster Amazon Elastic Kubernetes Service (Amazon EKS) doté d'une structure L3.

**Remarque :**ces étapes utilisent le langage de programmation Python. Les étapes sont similaires pour tous les autres langages de programmation. Assurez-vous d'ajuster la syntaxe du code en fonction du langage de programmation que vous utilisez.

Exemple de cluster Amazon EKS avec une construction 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.    Récupérez tous les objets enfants d'une construction L3 dans un cluster Amazon EKS à l'aide de l'attribut node.find_all() :

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

Après avoir utilisé la commande précédente, tous les identifiants enfants de la construction L3 sont imprimés.

Exemple d'impression :

HelloEKS

...
NodegroupDefaultCapacity
NodeGroupRole
...

2.    Après avoir imprimé les identifiants enfants de la construction L3, récupérez l'identifiant enfant souhaité en utilisant l'attribut node.find_child() :

**Important :**n’oubliez pas de vérifier toutes les commandes de l'interface de la ligne de commande AWS (AWS CLI) et de remplacer toutes les instances d'exemple de chaînes par vos valeurs. Par exemple, remplacez example_child_id par votre identifiant d'enfant cible.

l2_nodeGroup = eks_object.node.find_child(example_child_id)

Après avoir utilisé cette commande, la construction L2 de l'identifiant d'enfant souhaité s'imprime.

Exemple d'impression :

<aws_cdk.aws_eks.Nodegroup object at 0x7ffa9c7b2910>

**Remarque :**vous pouvez utiliser les variables l2_nodeGroup pour invoquer les propriétés, les attributs et les méthodes du Groupe de nœud afin de modifier les ressources associées.

3.    Récupérez tous les objets enfants de la construction L2 en utilisant l'attribut node.find_all() :

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

Après avoir utilisé la commande précédente, tous les identifiants enfants de la construction L2 seront imprimés.

Exemple d'impression :

NodegroupDefaultCapacity
NodeGroupRole
ImportNodeGroupRole

4.    Une fois les identifiants enfants de la construction L2 imprimés, récupérez l'identifiant enfant souhaité en utilisant l'attribut node.find_child() :

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

Après avoir utilisé la commande précédente, un objet de la couche L2 sera renvoyé au niveau aws_iam.Role.

5.    Lorsque vous êtes au niveau aws_iam.Role, utilisez l’attribut suivant node.default_child pour atteindre l’objet de construction L1 CfnRole :

l1_nodeGroup_role = l2_nodeGroup_role.node.default_child
        print(l1_nodeGroup_role)

Après avoir utilisé la commande précédente, l'enfant par défaut de la couche L1 sera réactivé.

Remarque :lorsque vous utilisez node.find\ _all () ou node.default_child pour récupérer des objets enfants, vous pouvez utiliser les fonctionnalités de cette construction pour mieux contrôler un modèle CloudFormation.

Si vous ne parvenez toujours pas à récupérer les objets enfants, contactez AWS Support ou créez un nouveau problème sur le site Web GitHub pour les problèmes liés à AWS CDK.

Informations connexes

Comment personnaliser la valeur d'une propriété de ressource en cas d’écart entre les constructions de niveau supérieur du CDK et une ressource CloudFormation ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an