创建 Amazon SNS 主题 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建 Amazon SNS 主题

Amazon SNS 主题是一个逻辑访问点,可充当通信渠道. 一个主题允许您将多个终端节点(例如Amazon Lambda、Amazon SQS、HTTP/S 或电子邮件地址)。

要广播使用需要其消息的多个其他服务(例如,结算和执行系统)的消息创建器系统(例如,电子商务网站)的消息,您可以为创建器系统创建主题。

Amazon SNS 的第一个也是最常见的任务是创建主题。此页面显示如何使用Amazon Web Services Management Console,Amazon SDK for Java,以及Amazon SDK for .NET创建主题。

在创建过程中,您可以选择主题类型(标准或 FIFO)并命名主题。创建主题后,无法更改主题类型或名称。在创建主题期间,所有其他配置选项都是可选的,您可以稍后对其进行编辑。

使用 Amazon Web Services Management Console创建主题

  1. 登录到Amazon SNS 控制台.

  2. 请执行下列操作之一:

    • 如果未在您的 Amazon Web Services 账户 中,阅读主页上的 Amazon SNS 描述。

    • 如果主题是在 Amazon Web Services 账户 之前,在导航面板上,选择主题.

  3. 在存储库的主题页面上,选择创建主题.

  4. 在存储库的创建主题页面上,位于详细信息部分中,执行以下操作:

    1. 适用于类型中,选择一个主题类型(标准或者FIFO)。

    2. 输入一个名称主题。对于FIFO 主题中,添加FIFO添加到名称的末尾。

    3. (可选)输入显示名称主题。

    4. (可选)对于 FIFO 主题,您可以选择基于内容的消息消除以启用默认消息重复数据消除。有关更多信息,请参阅FIFO 主题的消息重复数据消除

  5. (可选)展开加密部分并执行以下操作。有关更多信息,请参阅静态加密

    1. 选择 Enable encryption (启用加密)

    2. 指定客户主密钥 (CMK)。有关更多信息,请参阅关键术语

      对于每个 CMK 类型,都会显示 Description (描述)Account (账户)CMK ARN

      重要

      如果您不是 CMK 的拥有者,或者您没有使用拥有kms:ListAliaseskms:DescribeKey权限,则无法查看有关 Amazon SNS 控制台上的 CMK 的信息。

      要求 CMK 拥有者授予您这些权限。有关更多信息,请参阅 。Amazon KMSAPI 权限: 操作和资源参考中的Amazon Key Management Service开发人员指南.

      • 这些区域有:Amazon用于 Amazon SNS 的托管 CMK(默认)别名/aws/sns默认处于选中状态。

        注意

        记住以下内容:

        • 第一次使用Amazon Web Services Management Console以指定Amazon为 Amazon SNS 管理 CMK 的主题,Amazon KMS创建Amazon用于 Amazon SNS 的托管 CMK。

        • 或者,您第一次使用Publish对启用 SSE 的主题进行操作,Amazon KMS创建Amazon用于 Amazon SNS 的托管 CMK。

      • 要使用来自您的Amazon帐户中,选择客户主密钥 (CMK)字段,然后从列表中选择自定义 CMK。

        注意

        有关创建自定义 CMK 的说明,请参阅创建密钥中的Amazon Key Management Service开发人员指南

      • 要使用自定义 CMK ARN,请从Amazon帐户或其他Amazon帐户,请将其输入客户主密钥 (CMK)字段中返回的子位置类型。

  6. (可选)默认情况下,只有主题拥有者才能发布或订阅主题。要配置其他访问权限,请展开访问策略部分。有关更多信息,请参阅 Amazon SNS 中的 Identity or Access ManagementAmazon SNS 访问控制的案例

    注意

    使用控制台创建主题时,默认策略使用 aws:SourceOwner 条件键。此键类似于aws:SourceAccount.

  7. (可选)要配置 Amazon SNS 重试失败消息传输尝试的方式,请展开传递重试策略(HTTP/S)部分。有关更多信息,请参阅Amazon SNS 消息传输重试

  8. (可选)要配置 Amazon SNS 记录针对 CloudWatch 的消息传输的方式,请展开传输状态日志记录部分。有关更多信息,请参阅Amazon SNS 消息传输状态

  9. (可选)要将元数据标签添加到主题中,请展开标签部分,输入一个(可选),然后选择添加标签。有关更多信息,请参阅配置 Amazon SNS 主题的标签

  10. 选择 Create topic

    此时将创建主题,并且MyTopic页面上随即显示。

    主题的名称ARN、(可选)显示名称主题所有者的 Amazon 账户 ID 将显示在详细信息部分中。

  11. 将主题 ARN 复制到剪贴板,例如:::

    arn:aws:sns:us-east-2:123456789012:MyTopic

使用 Amazon SDK for Java创建主题

  1. 指定您的Amazon凭证。有关更多信息,请参阅 。设置Amazon发展的凭证和区域中的Amazon SDK for Java 2.x开发人员指南.

  2. 编写你的代码。有关更多信息,请参阅 。使用 SDK for Java 2.x.

    以下代码摘录创建主题 MyTopic,然后打印主题 ARN 和之前成功执行的请求的 CreateTopicRequest 请求 ID。

    // Create an Amazon SNS topic. final CreateTopicRequest createTopicRequest = new CreateTopicRequest("MyTopic"); final CreateTopicResponse createTopicResponse = snsClient.createTopic(createTopicRequest); // Print the topic ARN. System.out.println("TopicArn:" + createTopicResponse.getTopicArn()); // Print the request ID for the CreateTopicRequest action. System.out.println("CreateTopicRequest: " + snsClient.getCachedResponseMetadata(createTopicRequest));
  3. 编译并运行您的代码。

    将创建主题,并打印主题 ARN 和 CreateTopicRequest 请求 ID,例如:

    TopicArn: arn:aws:sns:us-east-2:123456789012:MyTopic CreateTopicRequest: {AWS_REQUEST_ID=1234a567-bc89-012d-3e45-6fg7h890123i}
  4. 您可以将主题 ARN 分配给要在其他操作中使用的字符串变量,例如:

    final String topicArn = "arn:aws:sns:us-east-2:123456789012:MyTopic";

有关如何创建和发布 FIFO 主题的详细示例,请使用Amazon SDK for Java中,请参阅使用 Amazon SDK for Java 2.x.

使用 Amazon SDK for .NET创建主题

  1. 指定您的Amazon凭证。有关更多信息,请参阅 。配置Amazon凭证中的Amazon SDK for .NET开发人员指南.

  2. 编写你的代码。有关更多信息,请参阅 。使用进行编程Amazon SDK for .NET.

    以下代码摘录创建主题 MyTopic,然后打印主题 ARN 和 CreateTopicRequest 请求 ID。

    // Create an Amazon SNS topic. CreateTopicRequest createTopicRequest = new CreateTopicRequest("MyTopic"); CreateTopicResponse createTopicResponse = snsClient.CreateTopic(createTopicRequest); // Print the topic ARN. Console.WriteLine("TopicArn: " + createTopicResponse.TopicArn); // Print the request ID for the CreateTopicRequest action. Console.WriteLine("CreateTopicRequest: " + createTopicResponse.ResponseMetadata.RequestId);
  3. 编译并运行您的代码。

    将创建主题,并打印主题 ARN 和 CreateTopicRequest 请求 ID,例如:

    TopicArn: arn:aws:sns:us-east-2:123456789012:MyTopic CreateTopicRequest: 1234a567-bc89-012d-3e45-6fg7h890123i
  4. 您可以将主题 ARN 分配给要在其他操作中使用的字符串变量,例如:

    String topicArn = createTopicResponse.TopicArn;