不能使用来自Lambda的SQS

我做了什么:

我正在创建一个计划的lambda示例,需要从SQS队列中取消消息。 我已经使用无服务器框架和Kotlin创建了以下配置:

service: example provider: name: aws runtime: java8 region: eu-west-1 memorySize: 128 environment: sqs_url: Ref: MessagesQueue iamRoleStatements: - Effect: Allow Action: - sqs:* Resource: Fn::GetAtt: [ MessagesQueue, Arn ] package: artifact: target/example-1.0.0.jar functions: dequeue: handler: com.example.Handler events: - schedule: rate(2 minutes) resources: Resources: MessagesQueue: Type: AWS::SQS::Queue Properties: QueueName: ${self:service}-queue 

这是Handler类:

 package com.example import com.amazonaws.services.lambda.runtime.Context import com.amazonaws.services.lambda.runtime.RequestHandler import org.slf4j.LoggerFactory import com.amazonaws.services.sqs.AmazonSQSClientBuilder class Handler:RequestHandler<Map, Any> { override fun handleRequest(input:Map, context:Context):Any { LOG.info("Initializing SQS Client...") val sqs = AmazonSQSClientBuilder.defaultClient() LOG.info("SQS Client Initialized!") return Any() } companion object { private val LOG = LoggerFactory.getLogger(Handler::class.java) } } 

我在我的POM上使用了以下AWS依赖关系:

   com.amazonaws aws-java-sdk-sqs 1.11.251   com.amazonaws aws-lambda-java-core 1.1.0  

我的问题:

我的lambda记录如下:

 START RequestId: ac75e49e-e56e-11e7-ba03-39085056ac2f Version: $LATEST [2017-12-20 10:15:18.015] ac75e49e-e56e-11e7-ba03-39085056ac2f INFO cpHandler - Initializing SQS Client... END RequestId: ac75e49e-e56e-11e7-ba03-39085056ac2f REPORT RequestId: ac75e49e-e56e-11e7-ba03-39085056ac2f Duration: 6006.13 ms Billed Duration: 6000 ms Memory Size: 128 MB Max Memory Used: 60 MB 2017-12-20T10:15:23.185Z ac75e49e-e56e-11e7-ba03-39085056ac2f Task timed out after 6.01 seconds 

所以基本上,当我尝试初始化SQS客户端时会发生一些不好的事情,因为我看不到“完成”日志,导致Lambda超时。

我已经搜索了一些使用java的一个简单的lambda出列的工作示例,但我找不到任何有价值的,只有SQS SDK示例没有lambdaexpression式。

难道我做错了什么? 是否有可能需要在Lambda中使用另一个SDK?

Interesting Posts