amazon-web-services - 如何在 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
部分。
推荐阅读
- wordpress - 在 WordPress 中扩展媒体库
- javascript - 在控制台上手动抛出状态码错误
- google-bigquery - bigquery 中的 UNNEST 不起作用,出现“无法访问 ARRAY 类型值的字段”
- javascript - 使用 selenium 从 Sharechat 中抓取视频
- pandas - 如何将多条移动平均线动态添加到 Plotly Candlestick
- c# - System.Security.SecurityException:请求失败的异常
- flutter - Flutter ListTile 前导图放置
- ruby-on-rails - 升级到 Rails 7 时迁移加密的数据库字段
- c# - Telemetry Initializer 从 .net framework 4.6 Web 应用程序添加请求正文内容
- rust - 从函数返回一个扭曲过滤器