0

После шаблона CloudFormation дает ошибку в строке 9:Приложите политику к IAM роли

{ 
"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_CFIAuth_Role, чтобы отправить сообщение/чтение/удаление previleges по очереди SQS CFI-Trace. Как подключить права на работу SQS к роли IAM?

+1

Строго с точки зрения синтаксиса '[{" arn: aws: iam :: 710161973367: role/Cognito_CFIAuth_Role "}],' действительно неверно, поскольку это массив, содержащий объект с ключом, но не имеющий значения. '' '' И '' 'неверны. –

ответ

1

С ресурсом «AWS :: IAM :: Policy» вы создаете политику inline. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html объясняет, что это принимает список «Имена AWS :: IAM :: Роли», которые я принимаю как логическое имя ресурсов роли, определенных в одном стеке.

Если вы хотите приложить политику к существующей роли, вместо этого вы должны использовать тип ManagedPolicy. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-roles берет имя ранее существовавшей роли (-ов).

+0

Я сделал политику для управляемой политики, но я все равно получаю такую ​​же ошибку: –

+0

Кроме того, она должна быть действительной JSON. См. Комментарий @ michael к вашему вопросу. –

0

Тип облачной информации IAM :: Политика для пользователей и групп. Роли и профили экземпляров для ec2. Вы объединили обе идеи. Если роль предопределена в другом НКСЕ, то вы используете просто экземпляр профиль для экземпляра EC2, если вы не можете создать его тоже, а затем исй его

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

или

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Resources": { 
    "SQSRole": { 
     "Type": "AWS::IAM::Role", 
     "Properties": { 
     "AssumeRolePolicyDocument": { 
     "Version": "2012-10-17", 
     "Statement": [ 
      { 
      "Effect": "Allow", 
      "Principal": { 
       "Service": [ 
       "ec2.amazonaws.com" 
       ] 
      }, 
      "Action": [ 
       "sts:AssumeRole" 
      ] 
     } 
     ] 
    }, 
    "Path": "/", 
    "Policies": [ 
     { 
     "PolicyName": "root", 
     "PolicyDocument": { 
      "Version": "2012-10-17", 
      "Statement": [ 
      { 
       "Effect": "Allow", 
       "Action": [ 
       "SQS:SendMessage", 
       "SQS:ReceiveMessage", 
       "SQS:DeleteMessage", 
       "SQS:GetQueueUrl" 
       ], 
       "Resource": "arn:aws:sqs:ap-south-1:710161973367:CFI-Trace" 
      } 
      ] 
     } 
     } 
    ] 
    } 
}, 
    "RootInstanceProfile": { 
     "Type": "AWS::IAM::InstanceProfile", 
     "Properties": { 
     "Path": "/", 
     "Roles": [ 
      { 
      "Ref": "SQSRole" 
      } 
     ] 
     } 
    } 
    } 
} 

IAM политика

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html

IAM роль http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html

В настоящее время существует также SQS политика http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html

1

Во-первых, строка 9 содержит синтаксическую ошибку JSON, скобки {} вокруг вашей строки Роль должна быть удалена:

 "Roles": [ "arn:aws:iam::710161973367:role/Cognito_CFIAuth_Role" ], 

Во-вторых, AWS::IAM::Policy «s Roles недвижимость принимает «имена из AWS::IAM::Role s для присоединения к этой политике», а не полные ARN, поэтому ваша линия должна быть:

 "Roles": [ "Cognito_CFIAuth_Role" ], 

Вам также понадобится отсутствующая закрывающая скобка } в конце вашего примера.