首页 > 解决方案 > 尝试运行 Lambda 函数来调用 ssm 并定义 EC2 标签以在多个实例上推送相同的标签

问题描述

尝试运行 Lambda 函数来调用 SSM 并定义 EC2 标签以使用以下脚本在多个实例上推送相同的标签。尝试执行时出现以下错误。我刚刚开始学习编写脚本并第一次使用 aws lambda。请帮我修复。

import boto3
ssm = boto3.client('ssm')
ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
    filters = (
        Name = 'tag:Product',
        Values = ['Essay']
    )
instances = ('filters')
response = ssm.send_command(
    InstanceIds=instances,
    DocumentName='xxxxxxxxxxxxx',
    DocumentVersion='$DEFAULT',
    DocumentHash='916fdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdcdbe7940',
    DocumentHashType='Sha256'
    )
print(response)

错误 :

Response:
{
  "errorMessage": "Syntax error in module 'lambda_function': invalid syntax (lambda_function.py, line 7)",
  "errorType": "Runtime.UserCodeSyntaxError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\" Line 7\n            Name = 'tag:Product',\n"
  ]
}

Request ID:
"8cb4cd39-b744-41da-befb-5f60b6e49fa4"

Function logs:
START RequestId: 8cb4cd39-b744-41da-befb-5f60b6e49fa4 Version: $LATEST
[ERROR] Runtime.UserCodeSyntaxError: Syntax error in module 'lambda_function': invalid syntax (lambda_function.py, line 7)
Traceback (most recent call last):
  File "/var/task/lambda_function.py" Line 7
            Name = 'tag:Product',END RequestId: 8cb4cd39-b744-41da-befb-5f60b6e49fa4
REPORT RequestId: 8cb4cd39-b744-41da-befb-5f60b6e49fa4

标签: amazon-web-servicesamazon-ec2aws-lambdatagsaws-ssm

解决方案


有几个问题:

错误的缩进。

python中没有这样的东西

    filters = (
        Name = 'tag:Product',
        Values = ['Essay']
    )

也许你的意思是字典?:

    filters = {
        'Name':'tag:Product',
        'Values': ['Essay']
    }

InstanceIds=instances应该是字符串列表,而不是'filters'.

修复代码的结束时间如下:

import boto3

ssm = boto3.client('ssm')
ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
    filters = [{
        'Name':'tag:Product',
        'Values': ['Essay']
    }]
    instances = [instance.id for instance in ec2.instances.filter(Filters = filters)]
    
    response = ssm.send_command(
        InstanceIds=instances,
        DocumentName='xxxxxxxxxxxxx',
        DocumentVersion='$DEFAULT',
        DocumentHash='916fdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdcdbe7940',
        DocumentHashType='Sha256'
        )
    print(response)


推荐阅读