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

19

我用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

我最终找到了我的原始问题的答案,所以我已经发布了工作代码作为任何人查看的资源。 - Doug Andres
2
你可以将你所做的内容粘贴为答案,并将此标记为已回答吗? - Abhigna Nagaraja
当然,我应该只需删除该帖子,然后将其作为回答重新发布吗?@AbhignaNagaraja - Doug Andres
@DougAndres 不需要重新发布。只需将问题中的更改回滚到最初状态(https://stackoverflow.com/revisions/45198321/1),并将您所做的内容作为此问题的答案添加即可。然后,将其标记为已回答,就这样! :-) - JonDoe297
2个回答

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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接