将 Amazon SNS 消息发送到不同区域中的 Amazon SQS 队列或 Amazon Lambda 函数 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Amazon SNS 消息发送到不同区域中的 Amazon SQS 队列或 Amazon Lambda 函数

Amazon SNS 支持跨区域传输,无论是默认启用的区域还是可选择加入的区域。有关 Amazon SNS 支持的 Amazon 区域的当前列表(包括选择加入的区域),请参阅《Amazon Web Services 一般参考》中的 Amazon Simple Notification Service 端点和限额

Amazon SNS 支持跨区域传输通知到 Amazon SQS 队列以及 Amazon Lambda 函数。当其中一个区域是选择加入的区域时,您必须在订阅资源的策略中指定不同的 Amazon SNS 服务委托人。

Amazon SNS 订阅命令必须在托管 Amazon SNS 的区域的目标账户中执行。例如,如果 Amazon SNS 位于 us-east-1 区域的“A”账户中,而 Lambda 函数位于 us-east-2 区域的“B”账户中,则必须在 us-east-1 区域的“A”账户中执行订阅 CLI 命令。

选择加入的区域

Amazon SNS 支持以下选择加入的区域:

区域名称 区域

非洲(开普敦)区域

af-south-1

亚太地区(香港)区域

ap-east-1

亚太地区(海得拉巴)区域

ap-south-2

亚太地区(雅加达)区域

ap-southeast-3

亚太地区(墨尔本)区域

ap-southeast-4

亚太地区(大阪)区域

ap-northeast-3

欧洲地区(米兰)

eu-south-1

欧洲地区(西班牙)区域

eu-south-2

欧洲地区(苏黎世)地区

eu-central-2

以色列(特拉维夫)区域

il-central-1

中东(巴林)区域

me-south-1

中东(阿联酋)区域

me-central-1

有关启用可选区域的信息,请参阅中的Amazon Web Services 一般参考管理 Amazon 区域

使用 Amazon SNS 将消息从选择加入的区域传输到默认启用的区域时,必须更改为队列创建的资源策略。将委托人 sns.amazonaws.com 替换为 sns.<opt-in-region>.amazonaws.com。例如:

  • 要为美国东部(弗吉尼亚州北部)的 Amazon SQS 队列订阅亚太地区(香港)的 Amazon SNS 主题,请将队列策略中的主体更改为 sns.ap-east-1.amazonaws.com。选择加入区域包括 2019 年 3 月 20 日之后推出的任何区域,包括亚太地区(香港)、亚太地区(雅加达)、中东(巴林)、欧盟(米兰)和非洲(开普敦)。2019 年 3 月 20 日之前推出的区域默认情况下处于启用状态。

    对于 Amazon SQS 的跨区域传输支持
    跨区域传输类型 支持/不支持
    原定设置启用的区域至选择加入区域

    在队列的服务主体中使用 sns.<opt-in-region>.amazonaws.com 提供支持

    选择加入区域至原定设置启用的区域

    在队列的服务主体中使用 sns.<opt-in-region>.amazonaws.com 提供支持

    选择加入区域至选择加入区域

    不支持

    以下是访问策略声明的示例,该声明允许选择加入区域 (af-south-1) 中的亚马逊 SNS 主题发送到某个区域 (us-east-1) 中的亚马逊 SQS 队列。enabled-by-default 它在路径 Statement/Principal/Service 下包含必要的区域化服务主体配置。

    { "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "allow_sns_arn:aws:sns:af-south-1:111111111111:source_topic_name", "Effect": "Allow", "Principal": { "Service": "sns.af-south-1.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:us-east-1:111111111111:destination_queue_name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:af-south-1:111111111111:source_topic_name" } } }, ... ] }
  • 要为美国东部(弗吉尼亚北部)的 Amazon Lambda 函数订阅亚太地区(香港)的 Amazon SNS 主题,请将 Amazon Lambda 功能策略中的主体更改为。sns.ap-east-1.amazonaws.com选择加入区域包括 2019 年 3 月 20 日之后推出的任何区域,包括亚太地区(香港)、亚太地区(雅加达)、中东(巴林)、欧盟(米兰)和非洲(开普敦)。2019 年 3 月 20 日之前推出的区域默认情况下处于启用状态。

    跨区域配送支持 Amazon Lambda
    跨区域传输类型 支持/不支持
    原定设置启用的区域至选择加入区域 不支持

    选择加入区域至原定设置启用的区域

    在 Lambda 函数的服务主体中使用 sns.<opt-in-region>.amazonaws.com 提供支持

    选择加入区域至选择加入区域 不支持