如何向队列添加权限以允许不同帐户的用户对该队列具有权限

时间:2019-03-07 13:28:56

标签: amazon-web-services amazon-sqs amazon-iam

sqs.addPermission("https://sqs.eu-west-1.amazonaws.com/111111111111/queueName", "remoteAccess",
        Arrays.asList("arn:aws:iam::222222222222:user/user.x@mycompany.com"), Arrays.asList(SQSActions.SendMessage.name()));

应该(IMO)向其他帐户中的用户添加队列上的权限。

我得到一个错误。

  

的值[arn:aws:iam :: 222222222222:user/user.x@mycompany.com]   参数PrincipalId无效。原因:无法验证。 (服务:   AmazonSQS;状态码:400;错误代码:InvalidParameterValue;

任何人都知道如何以编程方式将不同帐户中的特定用户授予队列访问权限吗?

这与我通过sqs网络控制台添加权限时看到的用户信息相同。

1 个答案:

答案 0 :(得分:1)

文档的此部分包含跨帐户SQS访问策略的示例:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html

您需要同时在队列级别和其他帐户的主体中应用策略。

例如,在队列级别

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": [
      "sqs:SendMessage",
      "sqs:ReceiveMessage"
    ],
    "Resource": ["arn:aws:sqs:*:123456789012:queue1"],
  }
}

如果您确实想授予对特定用户,组或角色的访问权限,则可以使用Principal字段,如下所示:

"Principal": {
         "AWS": [
            "arn:aws:iam::111122223333:role/role1",
            "arn:aws:iam::111122223333:user/username1"
         ]
      },

在另一个帐户中,将角色分配给需要访问队列的角色或用户(显然,您可以限制SQS API列表,这只是一个示例)

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "sqs:*",
    "Resource": "arn:aws:sqs:*:123456789012:queue1"
  }
}