POST JSON对象到aws lambda

Sud*_*dip 7 json http-post aws-lambda aws-api-gateway

如何通过aws API网关将json对象发布到aws lambda函数?

ps-我的目标是在python中编写lambda函数,然后将其发布到aws SQS.

提前致谢.

Sud*_*dip 5

我想到了.现在,我有一个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.