gpt4 book ai didi

amazon-web-services - Cloudformation KeyValuePair 列表作为参数

转载 作者:行者123 更新时间:2023-12-04 12:51:32 24 4
gpt4 key购买 nike

在创建 ECS 基础设施时,我们描述了我们的 Task Definitions与云形成。我们希望能够动态地将环境变量作为参数传递给模板。根据文档,Environment有一个KeyValuePair类型,但 CloudFormation 参数没有此类型。我们不能将环境变量硬编码到模板中,因为该模板用作嵌套堆栈,因此环境变量将在其中动态传递。

到目前为止,我看到的唯一可能的方法是将所有参数作为 CommaDelimitedList 传递,然后使用 CloudFormation functions 以某种方式解析和映射它。 。我可以 Fn::Split 键和值中的每个实体,但是如何在 CloudFormation 中动态构建 KeyValuePair 数组?

或者也许有一个更简单的方法,但我错过了一些东西?预先感谢您的任何想法。

最佳答案

我知道已经晚了,而且您已经找到了解决方法。然而,以下是我最接近解决这个问题的方法。仍然不完全动态,因为预期参数必须定义为占位符。因此,应该知道预期的环境变量的最大数量。

答案是基于这个blog 。所有功劳归作者所有。

Parameters:
EnvVar1:
Type: String
Description: A possible environment variable to be passed on to the container definition.
Should be a key-value pair combined with a ':'. E.g. 'envkey:envval'
Default: ''
EnvVar2:
Type: String
Description: A possible environment variable to be passed on to the container definition.
Should be a key-value pair combined with a ':'. E.g. 'envkey:envval'
Default: ''
EnvVar3:
Type: String
Description: A possible environment variable to be passed on to the container definition.
Should be a key-value pair combined with a ':'. E.g. 'envkey:envval'
Default: ''
Conditions:
Env1Exist: !Not [ !Equals [!Ref EnvVar1, '']]
Env2Exist: !Not [ !Equals [!Ref EnvVar2, '']]
Env3Exist: !Not [ !Equals [!Ref EnvVar3, '']]
Resources:
TaskDefinition:
ContainerDefinitions:
-
Environment:
- !If
- Env1Exist
-
Name: !Select [0, !Split [":", !Ref EnvVar1]]
Value: !Select [1, !Split [":", !Ref EnvVar1]]
- !Ref "AWS::NoValue"
- !If
- Env2Exist
-
Name: !Select [0, !Split [":", !Ref EnvVar2]]
Value: !Select [1, !Split [":", !Ref EnvVar2]]
- !Ref "AWS::NoValue"
- !If
- Env3Exist
-
Name: !Select [0, !Split [":", !Ref EnvVar3]]
Value: !Select [1, !Split [":", !Ref EnvVar3]]
- !Ref "AWS::NoValue"

关于amazon-web-services - Cloudformation KeyValuePair 列表作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47821408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com