私はpython Boto3コードを使用しています。インスタンスがAuto Scalingグループから終了するとSQSにメッセージを発行するSNSに通知します。ラムダは、SNSに通知されるとトリガされ、SQSからメッセージを取得するためにbotoスクリプトを実行します。SNS/SQS自動スケーリングメッセージからEC2InstanceIdを抽出
Sending and Receiving Messages in Amazon SQSの参照コードを使用しています。ここで
は、コードスニペットです:
if messages.get('Messages'):
m = messages.get('Messages')[0]
body = m['Body']
print('Received and deleted message: %s' % body)
結果は次のとおりです。
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/
}
私は終了し、インスタンス全体ではなく、メッセージのEC2InstanceId
を必要とします。どのようにIDを抽出できますか?
インスタンスIDを抽出するために正規表現マッチングを行う必要があります – Ashan