2017-01-26 1 views
0

Ceci est l'extrait de rôle:Erreur dans le policyName lors de la création IAM rôle par CloudFormation

"InstanceRole": { 
    "Type": "AWS::IAM::Role", 
    "Properties": { 
    "AssumeRolePolicyDocument": { 
     "Version" : "2012-10-17", 
     "Statement": [ { 
     "Effect": "Allow", 
     "Principal": { 
      "Service" : [ { "Fn::FindInMap": [ "Region2Principal", { "Ref": "AWS::Region" },"EC2Principal" ] } ] }, 
     "Action" : [ "sts:AssumeRole" ] 
     }] 
    }, 
    "Path": "/", 
    "Policies": [{ 
     "PolicyName": {"Fn::Join" : ["",["AWS::StackName","InstanceApi"] ] }, 
     "PolicyDocument": { 
     "Statement": [{ 
      "Effect": "Allow", 
      "Action": "*", 
      "Resource": "*" 
     }] 
     } 
    }] 
    } 
}, 

Ceci est l'erreur: The specified value for policyName is invalid. It must contain only alphanumeric characters and/or the following: +=,[email protected]_-

La valeur de AWS::StackName je suis entré est tmplt-stack, et le nom de la politique générée cela donne l'erreur est:

Je ne comprends pas pourquoi la cloudformation refuse le nom même s'il ne contient que quelques caractères de '-' et cela est permis en fonction de l'erreur m essage et le reste sont tous des caractères alphanumériques.

Répondre

1

C'est l'énorme erreur que j'ai fait quand je le paramètre pseudo AWS :: StackName, je ne l'ai pas appelé avec « Ref »

"InstanceRole": { 
    "Type": "AWS::IAM::Role", 
    "Properties": { 
    "AssumeRolePolicyDocument": { 
     "Version" : "2012-10-17", 
     "Statement": [ { 
     "Effect": "Allow", 
     "Principal": { 
      "Service" : [ { "Fn::FindInMap": [ "Region2Principal", { "Ref": "AWS::Region" },"EC2Principal" ] } ] }, 
     "Action" : [ "sts:AssumeRole" ] 
     }] 
    }, 
    "Path": "/", 
    "Policies": [{ 
     "PolicyName": {"Fn::Join" : ["",[{"Ref":"AWS::StackName"},"InstanceApi"] ] }, 
     "PolicyDocument": { 
     "Statement": [{ 
      "Effect": "Allow", 
      "Action": "*", 
      "Resource": "*" 
     }] 
     } 
    }] 
    } 
},