gpt4 book ai didi

java - AWS Lambda Java/Kotlin 向 SQS 发送消息

转载 作者:行者123 更新时间:2023-11-30 10:21:17 25 4
gpt4 key购买 nike

我一直在使用 Kotlin 创建 AWS Lambda 函数。该函数运行良好,但似乎无法将 SQS 消息发送到 FIFO 队列。我在 Cloudwatch 中收到以下消息:

REPORT RequestId: 9119da93-e775-11e7-820a-5bbbb7403f93  Duration: 10010.16 ms   Billed Duration: 10000 ms Memory Size: 128 MB   Max Memory Used: 54 MB  

2017-12-23T00:09:49.483Z 9119da93-e775-11e7-820a-5bbbb7403f93 Task timed out after 10.01 seconds

我重写了我的代码以使用 Node JS,它执行得很好,我为 lambda 函数设置了相关的权限,通过控制台权限模拟器进行了测试,以将消息放在指定的队列中。由于它在 Node 中工作得很好,所以我不得不假设我的 Java/Kotlin 版本有问题。

如果我删除下面的代码,该函数将到达终点并返回 ok。我尝试了多种方法来创建客户端(包括已弃用的选项)和 EnvironmentVariableCredentialsProviderDefaultAWSCredentialsProviderChain

我也曾尝试将超时时间增加到 20 秒,但这也没有任何区别。

如有任何想法,我们将不胜感激!

val sqs = AmazonSQSClientBuilder.standard()
.withRegion(Regions.US_WEST_2)
.withCredentials(DefaultAWSCredentialsProviderChain())
.build()

val sendMessageRequest = SendMessageRequest()
.withMessageDeduplicationId("deduplicationId")
.withMessageGroupId("test")
.withQueueUrl("https://sqs.us-west-2.amazonaws.com/00000000/test.fifo")
.withMessageBody("test")

val sendResult = sqs.sendMessage(sendMessageRequest)

更新:这是返回给 Lambda 的响应代码。此代码似乎无需调用 SQS 即可工作。我已尝试将 try/catch 添加到 sendMessage() 方法,但 Lambda 仍然超时。

    val responseBody = JsonObject()
responseBody.addProperty("message", "ok")

val headerJson = JsonObject()
headerJson.addProperty("test", "test")

val responseJson = JsonObject()
responseJson.addProperty("statusCode", 200)
responseJson.add("headers", headerJson)
responseJson.addProperty("body", responseBody.toString())

val writer = OutputStreamWriter(output, "UTF-8")
writer.write(responseJson.toString())
writer.close()

最佳答案

检查 sqs 端点的端口 80 和 443 上的出站和入站安全组。您提到 node.js 正在运行 - 但配置可能有所不同。

关于java - AWS Lambda Java/Kotlin 向 SQS 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com