Amazon web services 将策略附加到IAM角色

Amazon web services 将策略附加到IAM角色,amazon-web-services,amazon-sqs,amazon-cloudformation,amazon-iam,Amazon Web Services,Amazon Sqs,Amazon Cloudformation,Amazon Iam,以下cloudformation模板在第9行出现错误: { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Policy to allow send receive message from SQS Queue", "Resources" : { "MyPolicy" : { "Type" : "AWS::IAM::Policy", "Properties" : { "PolicyName" :

以下cloudformation模板在第9行出现错误:

{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "Policy to allow send receive message from SQS Queue",
"Resources" : {
"MyPolicy" : {
  "Type" : "AWS::IAM::Policy",
    "Properties" : {
        "PolicyName" : "CFUsers",
        "Roles": [ { "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role" } ],
        "PolicyDocument" : {
            "Version" : "2012-10-17",
            "Statement": [
            {
                "Sid": "Sid1482400105445",
                "Effect": "Allow",
                "Principal": {
                    "AWS":         "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role"
                },
                "Action": [
                    "SQS:SendMessage",
                    "SQS:ReceiveMessage",
                    "SQS:DeleteMessage",
                    "SQS:GetQueueUrl"
                ],
                "Resource": "arn:aws:sqs:ap-south-1:710161973367:CFI-Trace"
            }
            ]
        }
    }
 }
 }
我希望角色Cognito\u CFIAuth\u角色在SQS队列CFI跟踪上具有消息发送/读取/删除前置项。如何将SQS操作权限附加到IAM角色

使用“AWS::IAM::Policy”资源,您正在创建一个内联策略。说明这将获取“AWS::IAM::Roles的名称”列表,我将其视为同一堆栈中定义的角色资源的逻辑名称

如果要将策略附加到先前存在的角色,则应改用ManagedPolicy类型。采用先前存在的角色的名称

使用“AWS::IAM::Policy”资源,您正在创建一个内联策略。说明这将获取“AWS::IAM::Roles的名称”列表,我将其视为同一堆栈中定义的角色资源的逻辑名称


如果要将策略附加到先前存在的角色,则应改用ManagedPolicy类型。采用先前存在的角色的名称

Cloudformation类型IAM::策略适用于用户和组。角色和实例配置文件适用于ec2。你把这两个想法混为一谈了。如果您在不同的CFN中预定义了角色,那么您只需要为EC2实例使用一个实例概要文件,如果没有,您也可以创建它,然后引用它

"RootInstanceProfile": {
     "Type": "AWS::IAM::InstanceProfile",
     "Properties": {
        "Path": "/",
        "Roles": [ {
           "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role"
        } ]
     }
  }

IAM政策

IAM角色

现在还有SQS政策
云信息类型IAM::策略适用于用户和组。角色和实例配置文件适用于ec2。你把这两个想法混为一谈了。如果您在不同的CFN中预定义了角色,那么您只需要为EC2实例使用一个实例概要文件,如果没有,您也可以创建它,然后引用它

"RootInstanceProfile": {
     "Type": "AWS::IAM::InstanceProfile",
     "Properties": {
        "Path": "/",
        "Roles": [ {
           "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role"
        } ]
     }
  }

IAM政策

IAM角色

现在还有SQS政策

首先,第9行包含JSON语法错误,应删除角色字符串周围的括号
{}

        "Roles": [ "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role" ],
其次,“s”属性接受“要附加到此策略的
AWS::IAM::Role
s的名称”,而不是完整的ARN,因此您的行应该是:

        "Roles": [ "Cognito_CFIAuth_Role" ],

您还需要在示例末尾缺少一个结束括号。

首先,第9行包含JSON语法错误,应删除角色字符串周围的括号
{}

        "Roles": [ "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role" ],
其次,“s”属性接受“要附加到此策略的
AWS::IAM::Role
s的名称”,而不是完整的ARN,因此您的行应该是:

        "Roles": [ "Cognito_CFIAuth_Role" ],

您还需要在示例的结尾处缺少一个结束括号。

严格地从语法角度来看,
[{“arn:aws:iam::710161973367:role/Cognito\u CFIAuth\u role”}],
确实是错误的,因为它是一个包含有键但没有值的对象的数组。
{
}
是不正确的。严格地说,从语法角度来看,
[{“arn:aws:iam::710161973367:role/Cognito\u CFIAuth\u role”}],
确实是错误的,因为它是一个数组,包含一个带键但没有值的对象。
{
}
不正确。此外,它必须是有效的JSON。请参阅@michael对您的问题的评论。此外,它必须是有效的JSON。请参阅@michael对您的问题的评论。