J'utilise le code Python Boto3. Lorsqu'une instance est terminée à partir du groupe Auto Scaling, il notifie SNS qui publie le message dans SQS. Lambda est également déclenché lors de la notification de SNS, qui exécute un script boto pour récupérer le message de SQS. J'utilise le code de référence Sending and Receiving Messages in Amazon SQS.Extraction de EC2InstanceId à partir du message Auto Scaling SNS/SQS
Voici l'extrait de code:
if messages.get('Messages'):
m = messages.get('Messages')[0]
body = m['Body']
print('Received and deleted message: %s' % body)
Le résultat est:
START RequestId: 1234-xxxxxxxx Version: $LATEST
{
"Type" : "Notification",
"MessageId" : "d1234xxxxxx",
"TopicArn" : "arn:aws:sns:us-east-1:xxxxxxxxxx:AutoScale-Topic",
"Subject" : "Auto Scaling: termination for group \"ASG\"",
"Message" : "{\"Progress\":50,\"AccountId\":\"xxxxxxxxx\",\"Description\":\"Terminating EC2 instance: i-123456\",\"RequestId\":\"db-xxxxx\",\"EndTime\":\"2017-07-13T22:17:19.678Z\",\"AutoScalingGroupARN\":\"arn:aws:autoscaling:us-east-1:360695249386:autoScalingGroup:fef71649-b184xxxxxx:autoScalingGroupName/ASG\",\"ActivityId\":\"db123xx\",\"EC2InstanceId\":\"i-123456\",\"StatusCode\"\"}",
"Timestamp" : "2017-07-",
"SignatureVersion" : "1",
"Signature" : "",
"SigningCertURL" : "https://sns.us-east-1.amazonaws.com/..",
"UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/
}
Je ne ai besoin EC2InstanceId
de l'instance terminée et non le message entier. Comment puis-je extraire l'identifiant?
Vous devrez peut-être faire une correspondance regex pour extraire l'ID d'instance – Ashan