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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

教程: 创建 Amazon SNS 主题

安 Amazon SNS 主题是一个逻辑访问点,可充当 沟通交流 渠道. 一个主题可让您将多个 终点 (例如, AWS Lambda, Amazon SQS、或电子邮件地址)。

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

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

要创建一个主题,请使用 AWS 管理控制台

  1. 登录到 Amazon SNS 控制台

  2. 执行以下操作之一:

    • 如果没有在你的 AWS 客户 阅读 Amazon SNS 主页。

    • 如果已在您的 AWS 之前、之前 导航面板,选择 主题.

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

  4. (可选)展开 加密 并执行 遵循。更多信息,请参阅 静态加密.

    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示例案例 Amazon SNS 访问 对照.

    注意

    当您使用控制台创建主题时,默认策略使用 aws:SourceOwner 条件键。此键相似 至 aws:SourceAccount。有关 差异 aws:SourceOwneraws:SourceAccount,见 aws:SourceAccount 对比 aws:SourceOwner.

  6. (可选)要配置如何 Amazon SNS 重试消息发送失败 尝试,扩展 交付重试策略(TTP/S) 第节。更多信息,请参阅 消息传递重试.

  7. (可选)要配置如何 Amazon SNS 记录消息传送至 CloudWatch, 扩展 交付状态日志记录 第节。更多 信息,请参阅 Amazon SNS 消息传递状态.

  8. (可选)要向主题添加元数据标签,请展开 标签 输入 关键 和 a 价值 (可选)并选择 添加 标签. 更多信息,请参阅 Amazon SNS 标签.

  9. 选择 Create topic (创建主题)

    将创建主题并显示 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

    以下代码摘录将创建 主题 我的主题 然后打印 主题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分配给一个String变量,以便在其他 例如:

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

要创建一个主题,请使用 适用于 .NET 的 AWS 开发工具包

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

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

    以下代码摘录将创建 主题 我的主题 然后打印 主题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变量,以便在其他 例如:

    String topicArn = createTopicResponse.TopicArn;