允许跨区域访问 AWS SQS 队列

Allow AWS SQS queue access across regions

我有一个 AWS SQS 队列,其权限策略如下所示:

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-east-1:123123123:default_staging/SQSDefaultPolicy",
  "Statement": [
    {
      "Sid": "Sid123123123123",
      "Effect": "Allow",
      "Principal": {
        "AWS": "123123123123"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:us-east-1:123123123123123:default_staging"
    }
  ]
}

不幸的是,我无法从我在不同区域的 AWS 服务器向 default_staging 队列添加消息。

如果我将权限策略设置为完全开放,我可以从我的其他地区向default_staging添加消息。

如何调整我的策略以允许在我的所有区域执行 SQS:* 操作?

通过正确的 IAM 权限和最重要的 SQS URL 可以跨区域共享 SQS 您需要提供给 AWS SDK.

在这里您可以找到更多关于 Queue and Message Identifiers 的信息。

这是一个策略示例,可以应用于队列以授予名为 SQSUser 的 IAM 用户对该队列的权限:

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-east-1:123123123123:default_staging/SQSDefaultPolicy",
  "Statement": [
    {
      "Sid": "Sid89345945989988",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123123123123:user/SQSUser"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:us-east-1:123123123123:default_staging"
    }
  ]
}

这是重要的部分:

      "Principal": {
        "AWS": "arn:aws:iam::123123123123:user/SQSUser"
      },