我有lambda函数来创建新的AMI并附加到当前的自动缩放组。当我创建一个测试自定义测试用例并传递负载时,这个函数就完成了。当我从SNS触发此问题时发生:
import json
import boto3
import time
import sys
asObj = boto3.client('autoscaling')
ec2Obj = boto3.client('ec2')
def lambda_handler(event, context):
targetASG = event[‘Records’][0][‘Sns’][‘Message’]
ASG = asObj.describe_auto_scaling_groups(AutoScalingGroupNames=[event['targetASG']])
sourceInstanceId = ASG.get('AutoScalingGroups')[0]['Instances'][0]['InstanceId']
Date=time.strftime("%d%m%y")
Time=time.strftime("%H%M%S")
amiName = "Automated_%s_%s" % (Date, Time)
configName = "Automated_%s_%s" % (Date, Time)
CreateNewImage = ec2Obj.create_image(
InstanceId = sourceInstanceId,
Name = amiName,
Description = 'Automatically Created Image from Lambda Service',
NoReboot = True)
Image = []
Image.append(CreateNewImage)
def getCreatedID(Image):
for i in Image:
ID = i['ImageId']
return ID
AMINewID = getCreatedID(Image)
CreateNewConfig = asObj.create_launch_configuration(
LaunchConfigurationName = configName,
ImageId = AMINewID,
InstanceId = sourceInstanceId)
updateASG = asObj.update_auto_scaling_group(
AutoScalingGroupName = event['targetASG'],
LaunchConfigurationName = configName)
return 'A new AMI has been Created `%s` Updated ASG `%s` with new launch configuration `%s` which includes AMI `%s`.' % (amiName,event['targetASG'], configName, AMINewID)
为了触发lambda函数,我使用awsns主题并发布了一条消息 以下消息,消息类型:原始
{ "targetASG": "pre-production-xxx" }
但我得到一个错误:
'targetASG': KeyError Traceback (most recent call last): File "/var/task/lambda_function.py", line 13, in lambda_handler ASG = asObj.describe_auto_scaling_groups(AutoScalingGroupNames=[event['targetASG']]) KeyError: 'targetASG'
我如何解决这个问题?在
ASG = asObj.describe_auto_scaling_groups(AutoScalingGroupNames=[event['targetASG']])
我认为
targetASG
不是SNS事件的一部分。。SNS事件如下:{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:EXAMPLE", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "1970-01-01T00:00:00.000Z", "Signature": "EXAMPLE", "SigningCertUrl": "EXAMPLE", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "EXAMPLE", "TopicArn": "arn:aws:sns:EXAMPLE", "Subject": "TestInvoke" } } ] }
您应该获取消息并从那里解析
targetASG
值,例如相关问题 更多 >
编程相关推荐