互联网络流量隐私 - Amazon Simple Notification Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

互联网络流量隐私

Amazon SNS 的 Amazon Virtual Private Cloud (Amazon VPC) 终端节点是 VPC 内的一种逻辑实体,只允许连接到 Amazon SNS。VPC 将请求路由到 Amazon SNS 并将响应路由回 VPC。以下部分提供有关使用 VPC 终端节点和创建 VPC 终端节点策略的信息。

如果使用 Amazon Virtual Private Cloud (Amazon VPC) 托管 AWS 资源,则可以在 VPC 和 Amazon SNS 之间建立私有连接。利用此连接,您可以将消息发布到 Amazon SNS 主题而无需通过公共 Internet 发送消息。

Amazon VPC 是一项 AWS 服务,可用来启动在虚拟网络中定义的 AWS 资源。借助 VPC,您可以控制您的网络设置,如 IP 地址范围、子网、路由表和网络网关。要将 VPC 连接到 Amazon SNS,请定义一个接口 VPC 终端节点。这种类型的终端节点使您能够将 VPC 连接到 AWS 服务。该终端节点提供了到 Amazon SNS 的可靠、可扩展的连接,无需 Internet 网关、网络地址转换 (NAT) 实例或 VPN 连接。有关更多信息,请参阅 Amazon VPC 用户指南中的接口 VPC 终端节点

此部分中的信息适用于 Amazon VPC 的用户。要获得更多信息,并开始创建 VPC,请参阅Amazon VPC 用户指南中的 Amazon VPC 入门

注意

VPC 终端节点不允许您将 Amazon SNS 主题订阅到私有 IP 地址。

针对 Amazon SNS 创建 Amazon VPC 终端节点

要将消息从 Amazon VPC 发布到您的 Amazon SNS 主题,请创建一个接口 VPC 终端节点。然后,您可以将消息发布到主题,同时保留您利用该 VPC 管理的网络内的流量。

使用以下信息创建终端节点并测试 VPC 与 Amazon SNS 之间的连接。或者,有关可帮助您从头开始的演练,请参阅教程:从 Amazon VPC 私下发布 Amazon SNS 消息

创建终端节点

您可以使用 AWS 管理控制台、AWS CLI、AWS 开发工具包、Amazon SNS API 或 AWS CloudFormation 在 VPC 中创建 Amazon SNS 终端节点。

有关使用 Amazon VPC 控制台或 AWS CLI 创建和配置终端节点的信息,请参阅Amazon VPC 用户指南 中的创建接口终端节点

注意

在创建终端节点时,请将 Amazon SNS 指定为您希望 VPC 连接到的服务。在 Amazon VPC 控制台中,服务名称因区域而异。例如,如果您选择 美国东部(弗吉尼亚北部),则服务名称为 com.amazonaws.us-east-1.sns

有关使用 AWS CloudFormation 创建和配置终端节点的信息,请参阅AWS CloudFormation 用户指南中的 AWS::EC2::VPCEndpoint 资源。

测试 VPC 和 Amazon SNS 之间的连接

在为 Amazon SNS 创建终端节点后,您可以将消息从您的 VPC 发布到 Amazon SNS 主题。要测试此连接,请执行以下操作:

  1. 连接到 VPC 中的 Amazon EC2 实例。有关连接的信息,请参阅 Amazon EC2 文档中的连接到您的 Linux 实例连接到您的 Windows 实例

    例如,要使用 SSH 客户端连接到 Linux 实例,请从终端运行以下命令:

    $ ssh -i ec2-key-pair.pem ec2-user@instance-hostname

    其中:

    • ec2-key-pair.pem 是包含 Amazon EC2 在您创建实例时提供的密钥对的文件。

    • instance-hostname 是实例的公有主机名。要在 Amazon EC2 控制台中获取该主机名:请选择 Instances (实例),选择您的实例,然后找到 Public DNS (IPv4) (公有 DNS (IPv4)) 的值。

  2. 在您的实例中,将 Amazon SNS publish 命令与 AWS CLI 结合使用。您可以使用以下命令将简单的消息发送到主题:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"

    其中:

    • aws-region 是主题所在的 AWS 区域。

    • sns-topic-arn 是主题的 Amazon 资源名称 (ARN)。从 Amazon SNS 控制台获取该 ARN:选择主题,查找您的主题,然后找到 ARN 列中对应的值。

    如果 Amazon SNS 已成功收到消息,终端会打印一个消息 ID,如下所示:

    { "MessageId": "6c96dfff-0fdf-5b37-88d7-8cba910a8b64" }

为 Amazon SNS 创建 Amazon VPC 终端节点

您可以为 Amazon SNS 的 Amazon VPC 终端节点创建一个策略,可在该策略中指定:

  • 可执行操作的委托人。

  • 可执行的操作。

  • 可对其执行操作的资源。

有关更多信息,请参阅 Amazon VPC 用户指南 中的使用 VPC 终端节点控制对服务的访问

以下示例 VPC 终端节点策略指定允许 IAM 用户 MyUser 将内容发布到 Amazon SNS 主题 MyTopic

{ "Statement": [{ "Action": ["sns:Publish"], "Effect": "Allow", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic", "Principal": { "AWS": "arn:aws:iam:123456789012:user/MyUser" } }] }

以下各项将被拒绝:

  • 其他 Amazon SNS API 操作,例如 sns:Subscribesns:Unsubscribe

  • 其他尝试使用该 VPC 终端节点的 IAM 用户和规则。

  • 发布到其他 Amazon SNS 主题的 MyUser

注意

IAM 用户仍可从 VPC 外部 使用其他 Amazon SNS API 操作。