Come posso utilizzare le escape hatch CDK per recuperare oggetti dei costrutti di livello inferiore dai costrutti L3 e L2?

4 minuti di lettura
0

Voglio usare le escape hatch del Kit di sviluppo per il cloud AWS (AWS CDK) per recuperare oggetti secondari dei costrutti L2 e L3.

Breve descrizione

Esistono tre livelli di astrazione AWS CDK:

  • I costrutti L1 hanno relazioni 1:1 che sono mappati sui tipi di risorse AWS CloudFormation correlati. Questo è il livello di costrutto più fondamentale per AWS CDK.
  • I costrutti L2 possono racchiudere una serie di costrutti L1 e il loro oggetto secondario predefinito è il costrutto L1 del tipo di risorsa pertinente. Altri oggetti secondari del costrutto L1 vengono sintetizzati in modelli AWS CloudFormation in base alle proprietà specificate dell'oggetto secondario L2.
  • I costrutti L3 sono il livello più alto dei livelli di astrazione di AWS CDK e possono racchiudere una serie di costrutti L2 e L1.

Per ulteriori informazioni, consulta astrazioni ed escape hatch.

Risoluzione

Usa gli escape hatch di AWS CDK per recuperare oggetti secondari da un cluster Amazon Elastic Kubernetes Service (Amazon EKS) con un costrutto L3.

Nota: Questi passaggi utilizzano il linguaggio di programmazione Python. I passaggi sono simili per qualsiasi altro linguaggio di programmazione. Assicurati di regolare la sintassi del codice per il linguaggio di programmazione che stai utilizzando.

Un esempio di cluster Amazon EKS con un costrutto L3 in 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. Recupera tutti gli oggetti secondari di un costrutto L3 in un cluster Amazon EKS utilizzando l'attributo node.find_all():
for child in eks_object.node.find_all():
            print(child.node.id)

Dopo aver usato il comando precedente, vengono stampati tutti gli ID secondari del costrutto L3.

Esempio di stampa:

HelloEKS

...
NodegroupDefaultCapacity
NodeGroupRole
...
  1. Dopo aver stampato gli ID secondari del costrutto L3, recupera l'ID secondario desiderato utilizzando l'attributo node.find_child():

Importante: Assicurati di controllare tutti i comandi dell’Interfaccia della linea di comando AWS (AWS CLI) e di sostituire tutte le istanze di stringhe di esempio con i tuoi valori. Ad esempio, sostituisci example_child_id con il tuo ID secondario di destinazione.

l2_nodeGroup = eks_object.node.find_child(example_child_id)

Dopo aver usato questo comando, viene stampato il costrutto L2 dell'ID secondario desiderato.

Esempio di stampa:

<aws_cdk.aws_eks.Nodegroup object at 0x7ffa9c7b2910>

Nota: È possibile utilizzare le variabili l2_NodeGroup per richiamare le proprietà, gli attributi e i metodi di Nodegroup per modificare le risorse associate.

  1. Recupera tutti gli oggetti secondari del costrutto L2 utilizzando l'attributo node.find_all():
for child in l2_nodeGroup.node.find_all():
         print(child.node.id)

Dopo aver usato il comando precedente, verranno stampati tutti gli ID secondari del costrutto L2.

Esempio di stampa:

NodegroupDefaultCapacity
NodeGroupRole
ImportNodeGroupRole
  1. Dopo la stampa degli ID secondari del costrutto L2, recupera l'ID secondario desiderato utilizzando l'attributo node.find_child():
l2_nodeGroup_role = l2_nodeGroup.node.find_child(example_child_id)
     print(l2_nodeGroup_role)

Dopo aver usato il comando precedente, un oggetto al livello L2 tornerà al livello aws_IAM.role.

  1. Quando sei al livello aws_iam.Role, usa il seguente attributo node.default_child per raggiungere l'oggetto del costrutto L1 CFNRole:
l1_nodeGroup_role = l2_nodeGroup_role.node.default_child
        print(l1_nodeGroup_role)

Dopo aver usato il comando precedente, tornerà l’oggetto secondario predefinito al livello L1.

Nota: Quando usi node.find_all() o node.default_child per recuperare oggetti secondari, puoi utilizzare le funzionalità di quel costrutto per maggiori controlli su un modello CloudFormation.

Se ancora non riesci a recuperare oggetti secondari, contatta il supporto AWS o crea un nuovo problema sul sito web di GitHub per problemi con AWS CDK.

Informazioni correlate

Come posso personalizzare il valore di una proprietà di risorsa quando c'è un divario tra i costrutti di livello superiore di CDK e una risorsa CloudFormation?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa