【发布时间】:2018-05-28 23:05:08
【问题描述】:
是否可以在没有 API 网关的情况下使用 AWS SAM 在 Lambda 函数前面启动 SQS 队列等基础设施?
我只看到sam local invoke "Lambda" -e event.json 和sam local start-api 的选项
当我运行试图从消息队列中读取消息的 lambda 时,它没有找到如下引用的消息队列 URL:
NotificationFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
Handler: index.handler
Runtime: nodejs8.10
Role: !Sub ${ConsumerLambdaRole.Arn}
Timeout: 10
Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object
Variables:
NODE_ENV: 'dev'
MANDRILL_API_KEY: 'PUyIU3DAxJzIlt7KbBE5ow'
SQS_URL: !Ref MessageQueue
MessageQueue:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 60
RedrivePolicy:
deadLetterTargetArn: !Sub ${DeadLetterQueue.Arn}
maxReceiveCount: 10
# this is where any failed messages will go to
DeadLetterQueue:
Type: AWS::SQS::Queue
【问题讨论】:
-
sam local仅启动 sam 规范的 lambda 部分。其余部分必须通过启动 docker 手动连接,检查AWS_SAM_LOCAL以更改代码中的端点等。
标签: amazon-web-services amazon-sqs sam