我正在嘗試撰寫一個 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這對我不起作用,因為我有一個物件串列而不是字串。
uj5u.com熱心網友回復:
你只能通過宏來做到這一點。如果您不想開發宏,則必須重新組織模板和設定,以便不必合并任何串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/436182.html
