json - 通过cloudformation创建IAM角色时policyName出错

标签 json roles aws-cloudformation amazon-iam

这是角色片段:

"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": "*"
        }]
      }
    }]
  }
},

这是错误:为策略名称指定的值无效。它必须仅包含字母数字字符和/或以下内容:+=,.@_-

我输入的 AWS::StackName 值是 tmplt-stack ,生成的给出错误的策略名称是:tmplt-stack-InstanceApi- O7KF5OL0TA2Q

我不明白为什么cloudformation拒绝该名称,即使它只包含几个“-”字符,并且根据错误消息是允许的,其余的都是字母数字字符。

最佳答案

这是我在使用伪参数AWS::StackName时犯的巨大错误,我没有用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": "*"
        }]
      }
    }]
  }
},

关于json - 通过cloudformation创建IAM角色时policyName出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870776/

相关文章:

javascript - 访问 json 文件中的数组值

android - 使用动态 JSON 对象名称解析 JSON?

ASP.net 角色和项目

bots - 无法读取未定义的 Discord.js 的属性 'roles'

amazon-web-services - 由于配置错误,执行失败:API Gateway 无权承担提供的角色 arn:aws:iam::XXXXXXXXXXXX:role/auth

javascript - Backbone Js - 解析数据问题

Java 返回 JSONArray

amazon-web-services - AWS CodePipeline : Get CloudFormation outputs in CodeBuild

Java EE 角色管理系统 - 它们存在吗?

amazon-web-services - AWS Cloudformation - 在 YAML 文件中导入 Jinja 定义的变量