amazon-cloudformation - Sub 和 Join 逗号分隔列表
问题描述
我正在尝试构建一个 ECS(Fargate)任务定义,它使用传递给 Command 的可变数量的环境变量。每个变量名称都与 SecretsManager 中的一个密钥匹配。
我无法以有意义的方式组合这些功能。以下代码只是将所有变量作为字符串列表传递给 Command。
SpecEnvVars:
Type: CommaDelimitedList
Default: "greeting,name,title,rank"
Description: |
The Environmental Variables to pull into the container, defined by their
associated Secrets names
ContainerDefinitions:
- Name: !Ref 'ServiceName'
Command: !Split
- ','
- !Join
- ','
- !Ref SpecEnvVars
但是,我需要将列表中的项目解析为机密 JSON。解决秘密是这样完成的:
!Sub '{{resolve:secretsmanager:test/${greeting}}}'
如何将 Fn::Sub 与 Split/Join 集成以返回 SecretsManager JSON 字符串列表?
解决方案
我花了一段时间才找到正确的函数组合,但我做到了:
ContainerDefinitions:
- Name: !Ref 'ServiceName'
Command: !Split
- ','
- !Sub
- '{{resolve:secretsmanager:test/${inner}}}'
- inner: !Join
- '}},{{resolve:secretsmanager:test/'
- Ref: "SpecEnvVars"
我想为这个答案提供支持:https ://stackoverflow.com/a/50060983/9671763因为它实际上给了我答案——我只需要根据我的用例调整它。
推荐阅读
- python - Windows 10、Anaconda、Jupyter 和 DLL 在导入 Seaborn 时出错,尽管它已安装
- python - 我可以仅卸载并重新安装 Spyder,而不是整个 Anaconda 框架吗?
- html - TikTok 的应用内浏览器未加载视频的 html/css 代码
- typescript - 如何在 TypeScript 中导出增强类型(扩展)
- applescript - 如何使用 AppleScript for BBEdit 替换选择?
- javascript - 消除两个内联块 DIV 之间的 1px 空间(已经尝试过标准解决方案)
- rust - NEAR 跨合约调用异常如何处理?
- codenameone - 是否有比 6.5.1 更稳定的代号 1 版本?还是我做错了什么?
- networking - 当你取消一个网络请求时究竟会发生什么?
- python - 如何将 webdriver 类型代码作为整数