Pour donner suite à cette question: Filter CloudWatch Logs to extract Instance IDComment accéder à l'objet événement avec python dans AWS Lambda?
Je pense qu'il laisse la question incomplète parce qu'elle ne dit pas comment accéder à l'objet de l'événement avec python.
Mon but est de:
- lu l'instance qui a été déclenchée par un changement d'état en cours d'exécution
- obtenir une valeur d'étiquette associée à l'instance
- départ toutes les autres instances qui ont la même étiquette
L'événement déclencheur CloudWatch est:
{
"source": [
"aws.ec2"
],
"detail-type": [
"EC2 Instance State-change Notification"
],
"detail": {
"state": [
"running"
]
}
}
Je peux voir des exemples comme ceci:
def lambda_handler(event, context):
# here I want to get the instance tag value
# and set the tag filter based on the instance that
# triggered the event
filters = [{
'Name': 'tag:StartGroup',
'Values': ['startgroup1']
},
{
'Name': 'instance-state-name',
'Values': ['running']
}
]
instances = ec2.instances.filter(Filters=filters)
je peux voir l'objet événement, mais je ne vois pas comment percer vers le bas dans la balise de l'instance qui l'avait changé en cours d'exécution est l'état.
S'il vous plaît, ce qui est l'objet d'attribut par lequel je peux obtenir une étiquette de l'instance déclenchée?
Je soupçonne que c'est quelque chose comme:
myTag = event.details.instance-id.tags["startgroup1"]
Merci, Vaisakh. Cela aide beaucoup. Je vois l'objet d'événement et la section de détail, mais s'il vous plaît, comment obtient-on une balise spécifique, en utilisant python, pour cet ID d'instance. Est-ce un exercice d'analyse JSON? Ou cela peut-il être fait avec des attributs d'objet? La valeur de l'étiquette de l'instance ne semble pas figurer dans l'objet d'événement. Merci, Chris. – Chrisjx