Amazon Simple Notification Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:创建 Amazon SNS 主题

Amazon SNS 主题是一个逻辑访问点,可以充当通信通道。利用主题,您可以对多个终端节点(例如,AWS Lambda、Amazon SQS、HTTP/S 或电子邮件地址)进行分组。

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

第一个也是最常见的 Amazon SNS 任务是创建主题。以下教程说明如何使用 AWS 管理控制台、AWS SDK for Java和 适用于 .NET 的 AWS 开发工具包创建主题。

使用 AWS 管理控制台创建主题

  1. 登录 Amazon SNS 控制台

  2. 执行下列操作之一:

    • 如果之前未在您的 AWS 账户下创建主题,请阅读主页上的 Amazon SNS 的描述。

    • 如果之前已在您的 AWS 账户下创建主题,请在导航面板上选择主题

  3. 创建主题部分中,输入主题名称,例如 MyTopic

  4. (可选)展开加密部分并执行以下操作。有关更多信息,请参阅 使用服务器端加密 (SSE) 和 AWS KMS 保护 Amazon SNS 数据

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

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

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

      重要

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

      要求 CMK 拥有者授予您这些权限。有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的 AWS KMS API 权限:操作和资源参考

      • 默认情况下,适用于 Amazon SNS (默认) alias/aws/sns 的 AWS 托管 CMK 处于选中状态。

        注意

        记住以下内容:

        • 在首次使用 AWS 管理控制台为主题的 Amazon SNS 指定 AWS 托管的 CMK 时,AWS KMS 将为 Amazon SNS 创建 AWS 托管的 CMK。

        • 或者,首次对启用 SSE 的主题使用 Publish 操作时,AWS KMS 将为 Amazon SNS 创建 AWS 托管的 CMK。

      • 要使用您的 AWS 账户中的自定义 CMK,请选择 Customer master key (CMK) (客户主密钥 (CMK)) 字段,然后从列表中选择自定义 CMK。

        注意

        有关创建自定义 CMK 的说明,请参阅 AWS Key Management Service Developer Guide 中的创建密钥

      • 要使用您的 AWS 账户或其他 AWS 账户中的自定义 CMK ARN,请在 Customer master key (CMK) (客户主密钥 (CMK)) 字段中输入它。

  5. (可选)要配置主题的访问权限,请展开访问策略部分。有关更多信息,请参阅 Amazon SNS 的身份验证和访问控制

  6. (可选)要配置 Amazon SNS 重试失败消息传输尝试的方式,请展开传输重试策略 (HTTP/S) 部分。有关更多信息,请参阅 设置Amazon SNS用于 HTTP/HTTPS 终端节点的传输重试策略

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

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

  9. 选择创建主题

    将创建主题并显示 MyTopic 页面。

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

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

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

使用 AWS SDK for Java创建主题

  1. 指定您的 AWS 凭证。有关更多信息,请参阅 适用于 Java 的 AWS 开发工具包 2.x 开发人员指南 中的设置用于开发的 AWS 凭证和区域

  2. 编写您的代码。有关更多信息,请参阅使用 适用于 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";

使用 适用于 .NET 的 AWS 开发工具包创建主题

  1. 指定您的 AWS 凭证。有关更多信息,请参阅 适用于 .NET 的 AWS 开发工具包 开发人员指南 中的配置 AWS 凭证

  2. 编写您的代码。有关更多信息,请参阅使用 适用于 .NET 的 AWS 开发工具包 进行编程

    以下代码摘录创建主题 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;