我一直在使用我的CloudFormation Yaml模板中的!Sub函數。並且當它用作對象屬性值時,它對我很有用AWS Cloud Formation!AWS內部的Sub&!Ref函數:: Serverless :: Function Policies
Object:
Property1: !Sub some-value-with-a-${variable}-in-it
變量的值被替換爲預期值。
但是,我無法弄清楚如何使用!子功能在一個字符串數組
Array:
- !Sub some-value-with-a-${variable}-in-it
該數組元素只是被忽略的一個元素。
我在創建AWS :: Serverless :: Function類型資源的SAM模板的上下文中嘗試此操作。該政策屬性可以接受字符串數組:
lambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: api
FunctionName: !Sub api-${MyStageName}
Handler: Lambda:Api.Function::HandleAsync
Runtime: dotnetcore1.0
Policies:
- AWSLambdaBasicExecutionRole
- !Sub arn:aws:iam::${AWS::AccountId}:policy/some-policy
- arn:aws:iam::123456789:policy/another-policy
的子功能在FunctionName
物業工作在這個例子。但我最終只有2個政策附加到我生成的角色 - AWSLambdaBasicExecutionRole
和arn:aws:iam::123456789:policy/another-policy
。包含!Sub
函數的函數被忽略。
我試圖像把功能上的一個新的行選項:
Array:
-
!Sub some value with a ${variable} in it
誰能幫助?
更新
@湯姆梅洛指出,這是不是一個數組的問題,所以我已經調整了我的問題。
進一步調查發現這不是一個雲的形成問題究竟,但非常具體的AWS::Serverless::Function
資源類型,並在內部Policies
財產。我懷疑它做的事實Policies
特性如此靈活在什麼可以接受。它可以接受指向策略名稱或Arns的字符串,也可以接受描述新策略的策略文檔。我懷疑這意味着它無法支持這些功能。
在數組項目或映射值中使用'!Sub'應該沒有區別。這似乎是一個錯誤,應該這樣報告。我試圖在'!Sub'之後引用標量。也許這是一個解析器錯誤,如果是這樣,那可能是一個解決方法。 – flyx
感謝您的回覆。行情沒有工作,所以我會嘗試記錄一個錯誤 –
問題創建:https://forums.aws.amazon.com/thread.jspa?threadID=261756 –