AWS Lambda Java / Kotlin发送消息给SQS

我一直在使用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 

我已经重写了我的代码使用节点JS,它执行良好,我有相关的权限设置的lambda函数,通过控制台权限模拟器测试好措施,把消息放在指定的队列。 由于它在Node中完全正常工作,所以我不得不假定我的Java / Kotlin版本有问题。

如果我删除下面的代码,该function到达结束,并返回正常。 我已经尝试了各种方法来创建客户端(包括不推荐使用的选项)和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() 

Interesting Posts