2016-03-09 11 views
7

私は以下の役割を持っています。そこから、別のスタックの既存の管理ポリシーを使用したいと思います。クラウドフォーメーション別のスタックから管理ポリシーを参照する方法

どうすればいいですか?

"TestRole": { 
    "Properties": { 
     "AssumeRolePolicyDocument": { 
     "Statement": [ 
      { 
      "Action": [ 
       "sts:AssumeRole" 
      ], 
      "Effect": "Allow", 
      "Principal": { 
       "Service": [ 
       "lambda.amazonaws.com" 
       ] 
      } 
      } 
     ], 
     "Version": "2012-10-17" 
     }, 
     "Path": "/lambda/", 
     "Policies": [ 
     ?????? 
     ] 
    }, 
    "Type": "AWS::IAM::Role" 
    } 

答えて

1

Imports/Exportsを使用してこれを行う方法がサポートされました。基本的に、ポリシーを作成するスタックには、ポリシー名(またはこの場合は必要なものがないかどうかわからないARN)を含む出力があり、それを地域固有の名前を持つエクスポートとして宣言します。次に、他のスタックは、インポート機能を使用してそれを消費することができます。

次のスタックは、(のは、それがFooStackという名前だとしましょう)管理ポリシーを作成した場合、それはその出力に次のように持つことができますが:

"Outputs" : { 
    "MyManagedPolicy" : { 
     "Value" : { "Ref" : "MyManagedPolicy" }, 
     "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-MyManagedPolicy" }} 
    } 
} 

他のスタックは、それを使用することができます。

"Policies": [ 
    { "Fn::ImportValue" : "FooStack-MyManagedPolicy" } 
] 
0

Ref CF機能のdocsによると、あなたはその論理名を使用して管理ポリシーリソースを取得するためにそれを使用することができるはずです。例えば

Policies: [ 
    { "Ref" : "MyManagedPolicy" } 
] 

"MyManagedPolicyは" あなたのCFテンプレートで定義されたリソースの名前のようになります。

"MyManagedPolicy" : { 
    "Type": "AWS::IAM::ManagedPolicy", 
    "Properties": { 
    "Description" : String, 
    "Groups" : [ String, ... ], 
    "Path" : String, 
    "PolicyDocument" : JSON object, 
    "Roles" : [ String, ... ], 
    "Users" : [ String, ... ] 
    } 
} 

・ホープ、このことができますか?

+0

私のスタックの中にいるのは間違いありませんが、私は別のスタックのポリシーを参照したいと思っていました。 – lony

関連する問題