使用 Amazon SQS 控制台为队列订阅 Amazon SNS 主题
您可以为一个或多个 Amazon SQS 队列订阅 Amazon SNS 主题。当您将消息发布到主题时,Amazon SNS 将向每个已订阅队列发送此消息。Amazon SQS 负责管理订阅并处理所需的权限。有关 Amazon SNS 的更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的什么是 Amazon SNS?
当您为 Amazon SQS 队列订阅 Amazon SNS 主题时,Amazon SNS 会使用 HTTPS 将消息转发给 Amazon SQS。有关将 Amazon SNS 用于加密的 Amazon SQS 队列的信息,请参阅配置 AWS 服务的 KMS 权限。
重要
Amazon SQS 支持每个访问策略最多 20 个语句。订阅 Amazon SNS 主题会添加这样一个语句。超过此数量将导致主题订阅交付失败。
为队列订阅 Amazon SNS 主题(控制台)
通过以下网址打开 Amazon SQS 控制台:https://console.aws.amazon.com/sqs/
。 -
在导航窗格中,选择队列。
-
从队列列表中,选择 queue(排队)以订阅 Amazon SNS 主题。
-
从 Actions(操作)中,选择 Subscribe to Amazon SNS topic(订阅 Amazon SNS 主题)。
-
从指定可用于此队列的 Amazon SNS 主题菜单中,为队列选择 Amazon SNS 主题。
如果 SNS 主题未列出,请选择输入 Amazon SNS 主题 ARN,然后输入主题的 Amazon 资源名称(ARN)。
-
选择保存。
-
要验证订阅,请向主题发布消息,并在队列中查看消息。有关更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的 Amazon SNS 消息发布。
跨账户订阅
如果 Amazon SQS 队列和 Amazon SNS 主题在不同的 AWS 账户中,则需要额外的权限。
主题所有者(账户 A)
修改 Amazon SNS 主题的访问策略以允许 Amazon 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 发送消息。
跨区域订阅
要在其他 AWS 区域订阅 Amazon SNS 主题,请确保:
-
Amazon SNS 主题的访问策略允许跨区域订阅。
-
Amazon SQS 队列的访问策略允许 Amazon SNS 主题跨区域发送消息。
有关更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的将 Amazon SNS 消息发送到不同区域的 Amazon SQS 队列或 AWS Lambda 函数。