2015-12-20 106 views
14

说我想通过val1和val2的URL字符串一个GET请求,LAMBDA端点时:如何使用GET请求将参数传递给AWS Lambda函数?

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

而且我有一个简单的函数,求和两个输入,val1和值2:

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

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

+0

您是否尝试过打印'event'和'context'?您可以查看[文档中的示例](http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html) – albert

+0

如果您传递数据正确地说,你应该可以通过类似'event.val1'的方式访问'event'对象(至少你可以在JS中访问对象的属性) – JohnAllen

回答

16

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

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

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

这将告诉API网关采取的输入参数(无论是通过的道路上,或在头部,或查询参数),并将其发送到事件数据中的Lambda函数val1val2

+2

谢谢。我会补充说,映射模板在“方法执行”页面上的“集成请求”下。此链接很有帮助:https://forums.aws.amazon.com/thread.jspa?threadID=192601。仍然有一些问题,但至少我知道在哪里看。 – capitalistcuttle

+1

也许我会找到所有这些层次的一些理由,但不得不说,乍一看这比我想象的要复杂得多。 Python是如此的内省,AWS Lambda可以通过检查函数签名来自动创建映射。 – capitalistcuttle

+2

此链接在编辑映射模板时清除了一些关于如何包含各种参数的详细信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html #输入值变量引用 – python1981

相关问题