0

にポリシーをアタッチすると、9行目でエラーを与える:cloudformationテンプレート続き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がSQSキューCFI-トレースのprevilegesを削除/読み込み/送信メッセージを持っていると思います。 IAMロールにSQS操作権限を付与するにはどうすればよいですか?

+1

厳密に言えば、キーを持つが値を持たないオブジェクトを含む配列であるため、 '[{" arn:aws:iam :: 710161973367:role/Cognito_CFIAuth_Role "}]は本当に間違っています。 '{'と '}'は間違っています。 –

答えて

1

"AWS :: IAM :: Policy"リソースを使用すると、インラインポリシーが作成されます。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.htmlは、これが "AWS :: IAM :: Rolesの名前"のリストを取ることを説明しています。これは、同じスタック内で定義されたロールリソースの論理名になります。

ポリシーを既存の役割に付加する場合は、代わりにManagedPolicyタイプを使用する必要があります。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-managedpolicy.html#cfn-iam-managedpolicy-rolesは、既存のロールの名前をとります。

+0

管理ポリシーにポリシーを適用しましたが、同じエラーが表示されます: –

+0

さらに、有効なJSONである必要があります。あなたの質問に対する@ michaelのコメントを参照してください。 –

0

雲の種類IAM :: Policyは、ユーザーとグループです。ロールとインスタンスのプロファイルはec2用です。あなたは両方のアイデアを融合させました。あなたが別のCFNで事前定義された役割を持っているなら、あなたはあなたの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ポリシーにrefをすることができない場合

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

は今も http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html

1

まずSQSポリシーがあり、9行目は、JSONの構文エラーが含まれている、あなたの役割文字列の周りの括弧{}を削除する必要があります。

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

第二に、AWS::IAM::PolicyさんRolesプロパティ「の名前はAWS::IAM::Roleですが、このポリシーに添付する」とは完全なARNではないため、次のように入力してください:

 "Roles": [ "Cognito_CFIAuth_Role" ], 

また、例の最後に閉じ括弧}が不足している必要があります。

関連する問題