如何使用GET请求将参数传递给AWS Lambda函数?

cap*_*tle 20 python amazon-web-services aws-lambda aws-api-gateway

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

https://xyz.execute-api.amazonaws.com/prod/test?val1=5&val2=10
Run Code Online (Sandbox Code Playgroud)

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

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

我已经在AWS API网关上的方法请求中为URL查询字符串参数添加了val1和val2.但是如何在函数内部访问它们呢?

gar*_*aat 20

在API网关的" 方法请求"部分中定义查询字符串参数后,您需要在" 方法执行"部分中定义映射模板.

在" 方法执行"部分中,选择" 映射模板",然后单击" 添加映射模板".输入application/json内容类型,然后创建一个看起来是这样的一个映射模板:

{
    "va1": "$input.params('val1')",
    "val2": "$input.params('val2')"
}
Run Code Online (Sandbox Code Playgroud)

这将告诉API网关采取的输入参数(无论是通过的道路上,还是在头部,或查询参数)呼吁val1,并val2和它们发送到lambda函数在事件数据val1val2.

  • 谢谢.我将添加映射模板在方法执行页面上的集成请求下.此链接很有用:https://forums.aws.amazon.com/thread.jspa?threadID = 192601.还有一些问题,但至少我知道在哪里看. (3认同)
  • 也许我会为所有这些层找到一些原因,但不得不说乍一看这比我想象的要复杂得多。Python 是如此自省,以至于 AWS Lambda 可以通过检查函数签名来自动创建映射。 (2认同)
  • 此链接清除了有关在编辑映射模板时如何包含各种类型参数的一些详细信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#输入值变量引用 (2认同)

Bat*_*man 7

可以从Event对象中检索所有信息。

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