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

2024-09-25 08:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: instancesinstancelambda函数eventifparamsfilter
1条回答
网友
1楼 · 发布于 2024-09-25 08:33:51

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

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

通过event对象读取参数值:

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

相关问题 更多 >