如何使用 Python 将参数传递到 AWS Lambda 函数

问题描述 投票:0回答:3

我用 Python 编写了一个 AWS Lambda 函数,该函数可以过滤实例并根据实例的标记方式打开或关闭它们。这将向您展示一个工作功能以及使其工作所需的设置。如果您有任何疑问,请在评论中留言。

这是我现在的 Lambda 函数:

import boto3
def lambda_handler(event, context):
    startStop = event['startStop']
    vertical = event['vertical']
    isRunning = ''

    if(startStop == 'start'):
        isRunning = 'stopped'
    elif (startStop == 'stop'):
        isRunning = 'running'

    ec2 = boto3.resource('ec2')
    filters = [
        {
            'Name': 'instance-state-name', 
            'Values': [isRunning] 
        },
        {
            'Name': 'tag:Vertical',
            'Values': [vertical]
        }
    ]

    instances = ec2.instances.filter(Filters=filters)

    runningInstances = [instance.id for instance in instances]

    if len(runningInstances) > 0:
        if(startStop == 'start'):
            shuttingDown = ec2.instances.filter(InstanceIds=runningInstances).start()
        elif (startStop == 'stop'):
            shuttingDown = ec2.instances.filter(InstanceIds=runningInstances).stop()

作为参考,这是我的映射模板:

{
    "startStop":"$input.params('startStop')",
    "vertical":"$input.params('vertical')"
}

这就是我在 URL 中传递参数的方式:

https://awslambdaapiurl.../prod/-params?startStop=start&vertical=TEST
python amazon-web-services aws-lambda aws-sdk aws-api-gateway
3个回答
4
投票

在映射模板中传入参数值:

{
    "startStop":"$input.params('startStop')",
    "vertical":"$input.params('vertical')"
}

通过

event
对象读取参数值:

    startStop = event['startStop']
    vertical = event['vertical']

2
投票

您可以在 event 对象上使用 queryStringParameters

request_data = event['queryStringParameters']
startStop = request_data['startStop']
vertical = request_data['vertical']

0
投票

提问者通过编辑帖子回答了他们的问题,但对于其他新手来说: 通过 URL 传递参数时,

event
函数中的
lambda_handler
参数是一个字典,其中 URL 参数位于
queryStringParameters
键中:

在浏览器中输入

https://awslambdaapiurl/?startStop=start&vertical=TEST
将由 python 在
lambda_handler
函数中访问为:

event['queryStringParameters']['startStop']
event['queryStringParameters']['vertical']
© www.soinside.com 2019 - 2024. All rights reserved.