

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon SQS 控制台为队列订阅 Amazon SNS 主题
<a name="sqs-configure-subscribe-queue-sns-topic"></a>

您可以为一个或多个 Amazon SQS 队列订阅 Amazon SNS 主题。当您将消息发布到主题时，Amazon SNS 将向每个已订阅队列发送此消息。Amazon SQS 负责管理订阅并处理所需的权限。有关 Amazon SNS 的更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[什么是 Amazon SNS？](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)

当您为 Amazon SQS 队列订阅 Amazon SNS 主题时，Amazon SNS 会使用 HTTPS 将消息转发给 Amazon SQS。有关将 Amazon SNS 用于加密的 Amazon SQS 队列的信息，请参阅[为 AWS 服务配置 KMS 权限](sqs-key-management.md#compatibility-with-aws-services)。

**重要**  
Amazon SQS 支持每个访问策略最多 20 个语句。订阅 Amazon SNS 主题会添加这样一个语句。超过此数量将导致主题订阅交付失败。

**为队列订阅 Amazon SNS 主题（控制台）**

1. 打开 Amazon SQS 控制台，网址为。[https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)

1. 在导航窗格中，选择**队列**。

1. 从队列列表中，选择 queue（排队）以订阅 Amazon SNS 主题。

1. 从 **Actions**（操作）中，选择 **Subscribe to Amazon SNS topic**（订阅 Amazon SNS 主题）。

1. 从**指定可用于此队列的 Amazon SNS 主题**菜单中，为队列选择 Amazon SNS 主题。

   如果 SNS 主题未列出，请选择**输入 Amazon SNS 主题 ARN**，然后输入主题的 Amazon 资源名称（ARN）。

1. 选择**保存**。

1. 要验证订阅，请向主题发布消息，并在队列中查看消息。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的 [Amazon SNS 消息发布](https://docs.aws.amazon.com/sns/latest/dg/sns-publishing.html)。

## 跨账户订阅
<a name="cross-account-subscriptions"></a>

如果您的 Amazon SQS 队列和 Amazon SNS 主题 AWS 账户不同，则需要额外的权限。

**主题所有者（账户 A）**

修改亚马逊 SNS 主题的访问策略以允许亚马逊 SQS 队列 AWS 账户 进行订阅。策略语句示例：

```
{
  "Effect": "Allow",
  "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
  "Action": "sns:Subscribe",
  "Resource": "arn:aws:sns:us-east-1:123456789012:MyTopic"
}
```

此策略允许账户 `111122223333` 订阅 `MyTopic`。

**队列所有者（账户 B）**

修改 Amazon SQS 队列的访问策略以允许 Amazon SNS 主题发送消息。策略语句示例：

```
{
  "Effect": "Allow",
  "Principal": { "Service": "sns.amazonaws.com" },
  "Action": "sqs:SendMessage",
  "Resource": "arn:aws:sqs:us-east-1:111122223333:MyQueue",
  "Condition": {
    "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:MyTopic" }
  }
}
```

此策略允许 `MyTopic` 向 `MyQueue` 发送消息。

## 跨区域订阅
<a name="cross-region-subscriptions"></a>

要订阅其他主题中的 Amazon SNS 主题 AWS 区域，请确保：
+ Amazon SNS 主题的访问策略允许跨区域订阅。
+ Amazon SQS 队列的访问策略允许 Amazon SNS 主题跨区域发送消息。

有关更多信息，请参阅[亚马逊*简单通知服务开发者指南中的向不同区域的 Amazon SQS 队列 AWS Lambda 或函数发送 Amazon* SNS 消息](https://docs.aws.amazon.com/sns/latest/dg/sns-cross-region-delivery.html)。