【发布时间】:2018-06-18 15:48:15
【问题描述】:
问题:在基于无服务器框架的 Lambda 上拥有可选资源的最佳方式是什么?
我想让 Serverless 关心 Lambda 在较低环境(开发、测试、暂存)上所需的资源,并为较高环境(如生产)提供独立的资源。
我正在考虑使用类似的东西
resources:
Resources: ${file(../${self:provider.stage}-resources.yml)}
我的资源 yml 如下:
SQSQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: ${self:service}-${self:provider.stage}-queue
SNSTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: TEST SNS Topic
TopicName: ${self:service}-${self:provider.stage}-topic
SNSSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: mail@email.com
Protocol: email
TopicArn: { "Fn::Join" : ["", ["arn:aws:sns:${self:provider.region}:", { "Ref" : "AWS::AccountId" }, ":${self:resources.Resources.SNSTopic.Properties.TopicName}" ] ] }
但它不起作用。关于实现这一目标的最佳实践有什么想法吗?
【问题讨论】:
-
这似乎是对的,我正在做类似的事情。 cloudformation 堆栈 json 是否添加了您的变量?你能分享一下你的
stage-resource.yml的结构吗? -
你的
*-resources.yml文件里面有什么? -
@dege 我用更多信息更新了我的问题。问题是,当我尝试这样部署它时,它会卡住,做任何事情。
-
抱歉@abierto 看不到问题,您是否试图访问路径错误的文件?您是否尝试在 serverless.yml 上设置自定义变量并在转到外部文件之前使用?
-
@dege 如我所见,如果我只加载队列并且主题一切都很好。当我尝试同时加载订阅时,它不起作用。
标签: amazon-web-services resources aws-lambda serverless-framework serverless