Sud*_*dip 7 json http-post aws-lambda aws-api-gateway
如何通过aws API网关将json对象发布到aws lambda函数?
ps-我的目标是在python中编写lambda函数,然后将其发布到aws SQS.
提前致谢.
我想到了.现在,我有一个API Gateway acceptiong客户端发布了指定格式的JSON数据,然后将其传递给AWS-Lambda函数,该函数将数据转储到AWS-SQS中.以下详细说明步骤 -
步骤1-
用任何支持的语言创建一个lambda函数(我使用过Python 3.6).这是一个示例代码.
import boto3
import json
def lambda_handler(event, context):
sqs = boto3.resource('sqs')
queue = sqs.get_queue_by_name(QueueName='userData')
response = queue.send_message(MessageBody=json.dumps(event))
return {
"status":"0",
"message":"",
"pubId":event["ClientID"],
"routetitle":event["routeTitle"]
}
Run Code Online (Sandbox Code Playgroud)
注意:我已经导入了aws上下文中可用的json和boto3库,无需再添加任何文件.另请注意,除了名称之外,我没有为SQS指定任何详细信息,因为我的Lambda函数和SQS都位于同一AWS区域.我将整个"事件"变量转储到SQS,因为它只包含发布的JSON数据.
第2步-
现在在AWS控制台中转到"API网关",然后创建一个新的API网关,然后在资源下创建一个"POST"操作.
现在,在post post下,单击"Integration request".现在添加一个身体模板,就像下面给出的例子一样 -
{
"userMobile" : "$input.params('userMobile')",
"ClientID" : "$input.params('ClientID')",
"routeTitle" : "$input.params('routeTitle')"
}
Run Code Online (Sandbox Code Playgroud)
另外,请确保将API的"集成类型"设置为"Lambda",并将我们在STEP-1中创建的Lambda函数连接到API.
现在,我们差不多完成了.现在我们所要做的就是为我们创建的API创建一个阶段并部署API.***
请注意部署后API的HTTP URL.
第3步
现在转到"简单排队服务(SQS)",然后创建一个简单的SQS并保留所有默认参数.确保队列名称与您在Lambda函数中提供的队列名称匹配,并且Lambda函数和SQS都在同一AWS区域中.
现在,您可以将相同格式的JSON数据POST到您的API,您的Lambda函数会将其转储到SQS队列,您可以在那里查看数据.
您还可以使用Fidler等工具测试API.
***确保每次对其进行更改时重新部署API.