私のCloudFormation Yamlテンプレートで!Sub関数を使用しています。オブジェクトのプロパティ値として使用すると、それは私のために動作しますAWSクラウドフォーメーションAWS :: Serverless :: Function Policies内のSub&!Ref関数
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
誰でも助けることができますか?
更新
@Tomメロは、私は私の質問を調整しているので、これは、アレイ上の問題ではないことを指摘しました。
詳しい調査の結果、それがまさに雲の形成の問題ではありません明らかにしたが、AWS::Serverless::Function
リソースタイプに非常に具体的、かつにおける内Policies
プロパティました。私はそれがPolicies
プロパティは非常に柔軟であるという事実とは何かを持っている疑いがありますそれが受け入れられるものである。ポリシー名やArnを参照する文字列を受け入れることができ、新しいポリシーを記述するポリシー文書を受け入れることもできます。私はそれが機能をサポートすることができないことを意味すると思う。
'!Sub'を配列項目またはマッピング値と使用しても違いはありません。これはバグと思われ、そのように報告されるべきです。私は '!Sub'の後にスカラーを引用しようとします。多分それはパーサのバグです、もしそうなら、それは回避策かもしれません。 – flyx
お返事ありがとうございます。引用が機能しなかったので、バグを記録しようとします –
問題が作成されました:https://forums.aws.amazon.com/thread.jspa?threadID=261756 –