【问题标题】:How to pass parameters to an AWS Lambda Function using Python如何使用 Python 将参数传递给 AWS Lambda 函数
【发布时间】:2017-12-25 04:24:05
【问题描述】:

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

这是我现在的 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

【问题讨论】:

  • 我最终找到了原始问题的答案,因此我将工作代码发布为任何人都可以查看的资源。
  • 您可以粘贴您所做的作为答案并将其标记为已回答。
  • 当然,我应该删除帖子然后重新发布它作为答案吗? @AbhignaNagaraja
  • @DougAndres 没有必要转发。只需像一开始一样回滚问题中的更改 (stackoverflow.com/revisions/45198321/1),然后添加您所做的作为该问题的答案。然后,将其标记为已回答,就是这样! :-)

标签: python amazon-web-services aws-lambda aws-sdk aws-api-gateway


【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 2017-12-30
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多