2016-03-09 19 views
7

Ho il seguente ruolo. Da dentro voglio usare una politica gestita esistente da un altro stack.Cloudformation come fare riferimento a criteri gestiti da un altro stack

Come posso fare?

"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" 
    } 

risposta

1

Ora è disponibile un metodo supportato per eseguire questa operazione utilizzando Imports/Exports. In sostanza, lo stack che crea il criterio ha un output che contiene il nome del criterio (o ARN, non è sicuro quale sia necessario in questo caso) e lo dichiara come esportazione con un nome univoco regionalmente. Quindi, altri stack possono consumarlo utilizzando la funzione Importa.

Ad esempio, se il seguente stack (diciamo prende il nome FooStack) crea la politica gestita, può avere il seguente nella sua produzione:

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

L'altro stack può usarlo:

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

Secondo il docs della funzione CF Ref, si dovrebbe essere in grado di usarlo per recuperare la risorsa politica gestita attraverso il suo nome logico.

Ad esempio:

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

dove "MyManagedPolicy" sarebbe il nome della risorsa definita nel modello CF:

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

Spero che questo aiuti?

+0

Hai ragione se fosse all'interno del mio stack, ma volevo fare riferimento a un criterio da un altro stack. – lony

Problemi correlati