Abh*_*mar 5 amazon-sqs amazon-web-services aws-api-gateway
我使用以下链接将 API 网关与 FIFO SQS 队列集成在一起 https://medium.com/@pranaysankpal/aws-api-gateway-proxy-for-sqs-simple-queue-service-5b08fe18ce50
以下是角色策略的片段
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sqs:SendMessageBatch",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Resource": "arn:aws:sqs:*:12345678:Stg"
}
]
}
Run Code Online (Sandbox Code Playgroud)
每当尝试从 API Gateway 测试它时,它都会抛出以下错误:-
"Message": "The request must contain the parameter MessageGroupId."
所以我尝试通过查询字符串发送它,但错误仍然存在。
我按照上面的链接为正文模板和标题执行了相同的步骤。
MessageGroupId=098
Run Code Online (Sandbox Code Playgroud)
只需在查询字符串中传递上面的值,正文在下面
{"ty":"ui"}
Run Code Online (Sandbox Code Playgroud)
小智 7
您需要添加MessageGroupId,并MessageDeduplicationId在URL查询字符串参数的方法执行。与您为MessageBody.
您还需要将MessageGroupId, 和添加MessageDeduplicationId到集成请求。再次以与MessageBody.
您可以从API网关的响应中提取MessageGroupId和。MessageDeduplicationId例如:如果有效负载如下所示,您可以从有效负载中提取任何属性。清晰的视频教程在这里。https://www.youtube.com/watch?v=dXa9KA-G9Dg
假设有效负载是这样的:
{
"data" :{
"jobNumber": "123456"
}
}
Run Code Online (Sandbox Code Playgroud)
那么api gateway中的模板如下。它从有效负载中提取jobNumber并设置为MessageGroupId。这里MessageDeduplicationId是从上下文中得到的。
#set($dedupId = $context.requestId)
#set($groupId = $input.json('$.data.jobNumber'))
Action=SendMessage&MessageBody=$input.body&MessageGroupId=$groupId&MessageDeduplicationId=$dedupId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |