2017-04-04 13 views
0

ラムダが1つ以上のプリンシパルにアクセスする必要があるので、CloudFormationテンプレートに必要なすべての呼び出し許可を作成する方法を探しています。例えば多くのプリンシパルを与える方法

は123と456は、このようなので、何かのMyFunctionにアクセスする必要がありますアカウントの意志ない作品:

Resources: 
    LambdaInvokePermission: 
    Type: AWS::Lambda::Permission 
    Properties: 
     FunctionName: arn:aws:lambda:us-west-2:${AWS::AccountId}:MyFunction 
     Action: lambda:InvokeFunction   
     Principal: "123,456" 

...とdocumentationはそれだけで文字列をとても受け入れることを言うので、それは動作しませんCommaDelimitedListパラメータをCloudFormationテンプレートに渡し、Fn:Joinを使用してジョブを実行できると考えました。このような何か:

Parameters: 
    MyAccounts: 
    Description: All accounts 
    Type: CommaDelimitedList 
... 
Resources: 
    CrossInvokePermission: 
    Type: AWS::Lambda::Permission 
    Properties: 
     Fn::Join: 
     - "" 
     - - '{"Principal": {"AWS": ["' 
      - Fn::Join: ['","', {Ref: MyAccounts} ] 
      - '"]}, "Action": "lambda:InvokeFunction", "FunctionName" : "' 
      - arn:aws:lambda:us-west-2:${AWS::AccountId}:function:MyFunction 
      - '"}' 

私の質問があり、それは私がしようとしている何をすることは可能でしょうか?これまでの私の努力は失敗しました。

答えて

1

現在のところ、CloudFormationのみを使用した単一リソースではこれが可能ではないと思います。

複数のリソースを持っていても構わない場合は、InvokePermissionブロックを異なるアカウントIDで複数回表示させることができます。私はそれがあなたが探しているものではないと仮定しています。

アクセスを許可する必要があるアカウントの数を正確に把握していない場合、またはあまりにも多くの繰り返しの定型文を必要としない場合は、テンプレートプリプロセッサを使用して、の入力。合理的に見える3つのヒット曲は、condensefab_awscloudformableですが、私の知るほとんどのデベロッパーは自分のニーズに合わせて何かを書いています。

関連する問題