【问题标题】:How do I pass arguments to AWS Lambda functions using GET requests?如何使用 GET 请求将参数传递给 AWS Lambda 函数?
【发布时间】:2016-03-27 00:10:40
【问题描述】:

假设从我的 Api 网关端点向我的 Lambda 函数发出 GET 请求时,我想在 URL 字符串中传递 val1 和 val2:

https://xyz.execute-api.amazonaws.com/prod/test?val1=5&val2=10

我有一个简单的函数,将两个输入 val1 和 val2 相加:

def lambda_handler(event, context):
    # How do I get at val1 and val2??
    return {'result': val1 + val2}

我已将 val1 和 val2 添加到 AWS API Gateway 上的方法请求的 URL 查询字符串参数中。但是如何在函数内部访问它们呢?

【问题讨论】:

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


【解决方案1】:

在API网关的方法请求部分定义查询字符串参数后,你需要在方法执行部分定义一个映射模板。

方法执行部分,选择映射模板,然后点击添加映射模板。为 Content Type 输入 application/json,然后创建一个如下所示的映射模板:

{
    "va1": "$input.params('val1')",
    "val2": "$input.params('val2')"
}

这将告诉 API Gateway 获取名为 val1val2 的输入参数(在路径中、在标头中或在查询参数中传递),并将它们作为 @ 发送到事件数据中的 Lambda 函数987654328@和val2

【讨论】:

  • 谢谢。我要补充一点,映射模板位于方法执行页面上的集成请求下。此链接很有帮助:forums.aws.amazon.com/thread.jspa?threadID=192601。仍然有一些问题,但至少我知道去哪里找。
  • 也许我会为所有这些层找到一些原因,但不得不说乍一看这比我想象的要复杂得多。 Python 是如此内省,以至于 AWS Lambda 可以通过检查函数签名自动创建映射。
  • 这个链接清除了一些关于如何在编辑映射模板时包含各种类型参数的细节:docs.aws.amazon.com/apigateway/latest/developerguide/…
  • 您不再需要定义映射模板来访问您的查询请求参数。另一个解决方案包括使用此答案中描述的 Lambda 代理集成。 stackoverflow.com/questions/31329958/…
【解决方案2】:

所有信息都可以从Event对象中获取。

例如: 变量 foo 的值可以从事件中检索为:event["foo"]

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 2017-12-25
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2015-08-27
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多