我正在尝试更新SSM参数存储中的参数,并得到以下错误。我犯了什么错?请澄清。
Lambda代码:
#Lambda code
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ssm_client = boto3.client('ssm')
parameter_name = ''
def lambda_handler(event, context):
logger.info('Printing event: {}'.format(event))
process_sns_event(event)
return None
def process_sns_event(event):
for record in (event['Records']):
event_message = record['Sns']['Message']
# convert the event message to json
message_json = json.loads(event_message)
# obtain the image state
image_state = (message_json['state']['status'])
# obtain the image name
image_name = (message_json['name'])
# assign SSM parameter based on image_name
#parameter_name = f'/ec2-image-builder/{{image_name}}/latest'
def path(imagename):
first = "/ec2-image-builder/"
last = "/latest"
result = first + imagename + last
return result
parameter_name = path(image_name)
logger.info('image_name: {}'.format(image_name))
logger.info('ssm_parameter_name: {}'.format(parameter_name))
# update the SSM parameter if the image state is available
if (image_state == 'AVAILABLE'):
logger.info('Image is available')
# obtain ami id
ami = message_json['outputResources']['amis'][0]
recipe_name = message_json['name']
logger.info('AMI ID: {}'.format(ami['image']))
# update SSM parameter
response = ssm_client.put_parameter(
#Name=parameter_name,
Name='/ec2-image-builder/linux/latest',
Description='Latest AMI ID',
Value=ami['image'],
Type='String',
Overwrite=True,
Tier='Standard'
)
logger.info('SSM Updated: {}'.format(response))
# add tags to the SSM parameter
ssm_client.add_tags_to_resource(
ResourceType='Parameter',
ResourceId=ssm_parameter_namee,
Tags=[
{
'Key': 'Source',
'Value': 'EC2 Image Builder'
},
{
'Key': 'AMI_REGION',
'Value': ami['region']
},
{
'Key': 'AMI_ID',
'Value': ami['image']
},
{
'Key': 'AMI_NAME',
'Value': ami['name']
},
{
'Key': 'RECIPE_NAME',
'Value': recipe_name
},
{
'Key': 'SOURCE_PIPELINE_ARN',
'Value': message_json['sourcePipelineArn']
},
],
)不退货
误差输出
对试验的答复:
{ "errorMessage":“未定义名称'ssm_parameter_namee‘”,
"errorType":"NameError","requestId":"54ad245c-84f3-4c46-9e9b-1798f86a8bce","stackTrace":“File”/var/task/lambda_Func.py,第19行,在lambda_handler\n process_sns_event(事件)\n中,“File”/var/task/lambda_function.py. 19,第71行,在process_sns_event\n ResourceId=ssm_parameter_namee中,\n }。
发布于 2022-07-22 09:59:46
答案是你的错误..。
打错名字还是叫namee?是ssm_parameter_namee还是ssm_parameter_name?
我强烈推荐使用IDE,指的是这样简单的东西:)
logger.info('ssm_parameter_name: {}'.format(parameter_name))
ResourceId=ssm_parameter_nameehttps://stackoverflow.com/questions/73030894
复制相似问题