gpt4 book ai didi

amazon-web-services - 合并cloudformation模板中的两个对象列表

转载 作者:行者123 更新时间:2023-12-03 07:22:45 25 4
gpt4 key购买 nike

我正在尝试编写一个 clouformation 模板来部署到 ECS。为此,我还想为任务定义定义环境变量。然而我面临的问题是环境的一部分是由映射决定的,另一部分是由模板参数决定的。

这是我目前正在尝试的(为简洁起见,减少了模板)。

Parameters:
Version:
AllowedPattern: '^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(((0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(\+([0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*))?$'
Description: The version number
Type: String
ParameterEnvironment:
Description: The environment
Type: String
AllowedValues:
- Beta
- Live
Default: Beta

Mappings:
EnvironmentData:
Beta:
Environment:
- Name: SOME_VARIABLE
Value: some_variable_value
Live:
Environment:
- Name: SOME_VARIABLE
Value: some_variable_value_when_live

Resources:
WebTaskDefinition:
Properties:
ContainerDefinitions:
Environment:
- Name: ENVIRONMENT
Value: !Ref Version
!FindInMap [ EnvironmentData, !Ref ParameterEnvironment, Environment ]
Type: 'AWS::ECS::TaskDefinition'

目标是将 !FindInMap [ EnvironmentData, !Ref ParameterEnvironment, Environment ] 结果与保存版本的单个名称、值对对象“合并”。

但是这会导致整个模板失败。

我也尝试过:

Mappings:
EnvironmentData:
Beta:
Environment:
- Name: VERSION
Value: !Ref Version
- Name: SOME_VARIABLE
Value: some_variable_value
Live:
Environment:
- Name: VERSION
Value: !Ref Version
- Name: SOME_VARIABLE
Value: some_variable_value_when_live

但这似乎也失败了,因为我认为 !Ref 不允许在映射中使用。

我四处寻找解决方案,但我能找到的只是使用 !Join!Split 的解决方案,这对我不起作用,因为我有一个列表对象而不是字符串。

最佳答案

您只能通过 macro 来做到这一点。如果您不想开发宏,则必须重新组织模板和设置,这样就不必合并任何列表。

关于amazon-web-services - 合并cloudformation模板中的两个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71308381/

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