如何解决如何在 serverless.yaml
我正在尝试部署一个无服务器应用程序,其变量取决于不同的环境。
到目前为止我只需要根据环境修改customDomain
块中的custom
:
custom:
domainName: my-domain.example.com
certificateArn: arn:aws:acm:us-west-2:123123123:certificate/acm-id-based-on-env
我想根据我是否使用以下方法调用无服务器部署来设置 domainName 和 certificateArn:
serverless deploy --stage dev <<--- use some vars for domainName and certficiateArn
serverless deploy --stage prod <<--- use different vars for domainName and certificateArn
似乎在资源块中我应该被允许做这样的事情:
resources:
Mappings:
config:
dev:
domain_name: dev-domain.example.com
acm_arn: arn:aws:acm:us-west-2:123123123:certificate/prod-id
prod:
domain_name: prod-domain.other-domain.com
acm_arn: arn:aws:acm:us-west-2:123123123:certificate/dev-id
但我不知道如何在自定义块中引用这些,甚至不知道这是否可行。
解决方法
在 resources
中指定一个 CloudFormation 模板,除非您想在 CloudFormation 中使用它而不是它应该去的地方。
我猜您想在函数中添加变量作为环境变量,这是无服务器框架中最常见的方法:
custom:
domain_name:
dev: dev-domain.example.com
prod: prod-domain.other-domain.com
acm_arn:
dev: arn:aws:acm:us-west-2:123123123:certificate/dev-id
prod: arn:aws:acm:us-west-2:123123123:certificate/prod-id
...
provider:
...
environment:
DOMAIN_NAME: ${self:custom.domain_name.${self:provider.stage}}
ACM_ARN: ${self:custom.acm_arn.${self:provider.stage}}
您在 custom
中为每个阶段添加它们,然后在 environment
部分中引用和插入它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。