Amazon Cognito 用户池的短信设置 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Cognito 用户池的短信设置

您的用户池的某些 Amazon Cognito 事件可能会导致 Amazon Cognito 向您的用户发送短信。例如,如果您将用户池配置为需要电话验证,则当用户在应用程序中注册新账户或重置其密码时,Amazon Cognito 会发送短信。根据发起短信的操作,短信中将包含验证码、临时密码或欢迎消息。

Amazon Cognito 使用 Amazon Simple Notification Service (Amazon SNS) 传送短信。如果这是您首次通过 Amazon Cognito 或 Amazon SNS 发送短信,Amazon SNS 会将您放在沙盒环境。在沙盒环境中,您可以对应用程序的 SMS 文本消息进行测试。在沙盒中,只能将消息发送给经过验证的电话号码。

首次在 Amazon Cognito 用户池中设置 SMS 消息

Amazon Cognito 使用 Amazon SNS 向您的用户池发送短信。您还可以使用自定义 SMS 发件人 Lambda 触发器,通过自己的资源发送 SMS 消息。在特定 Amazon Web Services 区域中首次设置 Amazon SNS 发送 SMS 短信时,Amazon SNS 会将您的 Amazon Web Services 账户放在该区域的 SMS 沙盒中。Amazon SNS 使用沙盒防止欺诈和滥用,并满足合规性要求。当您的 Amazon Web Services 账户位于沙盒中时,Amazon SNS 施加了一些限制。例如,您最多可以向 10 个已通过 Amazon SNS 验证的电话号码发送短信。当您的 Amazon Web Services 账户仍保留在沙盒中时,请勿对生产环境中的应用程序使用您的 Amazon SNS 配置。当您位于沙盒中时,Amazon Cognito 无法向用户的电话号码发送消息。

向用户池用户发送 SMS 文本消息

  1. 为 Amazon SNS SMS 消息选择 Amazon Web Services 区域。

  2. 如果您要发送 SMS 消息给美国电话号码,请获取源身份。

  3. 确认您位于 SMS 沙盒中。

  4. 将您的账户移出 Amazon SNS 沙盒。

  5. 在 Amazon SNS 中验证 Amazon Cognito 的电话号码。

  6. 在 Amazon Cognito 中完成用户池设置。

步骤 1:为 Amazon SNS SMS 消息选择 Amazon Web Services 区域。

在某些 Amazon Web Services 区域,您可以选择包含要用于 Amazon Cognito SMS 消息的 Amazon SNS 资源的区域。除亚太地区(首尔)以外,在提供 Amazon Cognito 的任意 Amazon Web Services 区域,您可以在创建用户池的 Amazon Web Services 区域中使用 Amazon SNS 资源。在有多个区域可供选择时,为了使您的 SMS 消息收发更快且更可靠,请使用与您的用户池位于相同区域中的 Amazon SNS 资源。

在新建用户池向导的 Configure message delivery(配置消息传输)步骤中,为 SMS 资源选择区域。您还可以在现有用户池的 Messaging(消息收发)选项卡中,在 SMS 下选择 Edit(编辑)。

在启动时,对于一些 Amazon Web Services 区域,Amazon Cognito 在备用区域中使用 Amazon SNS 资源发送 SMS 消息。要设置首选区域,请使用您用户池 SmsConfigurationType 对象的 SnsRegion 参数。当您以编程方式在下表的 Amazon Cognito 区域中创建 Amazon Cognito 用户池资源时,您无需提供 SnsRegion 参数,您的用户池使用对应旧版 Amazon SNS 备用区域中的 Amazon SNS 资源发送 SMS 消息。

亚太地区(首尔)Amazon Web Services 区域中的 Amazon Cognito 用户池必须使用您在亚太地区(东京)区域中的 Amazon SNS 配置。

您可以使用对应旧版备用 Amazon Web Services 区域中的 Amazon SNS 资源,为下表中的任意 Amazon Cognito 区域发送 SMS 消息。

Amazon Cognito 区域 旧版 Amazon SNS 备用区域
美国东部(俄亥俄) 美国东部(弗吉尼亚北部)
亚太地区(孟买) 亚太地区(新加坡)
加拿大(中部) 美国东部(弗吉尼亚北部)
欧洲(法兰克福) 欧洲(爱尔兰)
欧洲(伦敦) 欧洲(爱尔兰)

步骤 2:获取源身份以将短信发送给美国电话号码

无论您是构建 SMS 沙盒测试环境还是生产环境,如果您计划向美国电话号码发送短信,则必须获取源身份。

自 2021 年 6 月 1 日起,美国运营商要求提供源身份才能向美国电话号码发送短信。如果您没有源身份,则必须获取一个。请参阅《Amazon Pinpoint 用户指南》中的申请号码了解如何获取源身份。

如果您在以下 Amazon Web Services 区域开展运营,则必须提交 Amazon Web Services Support 票证来获取源身份。有关说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的针对 SMS 消息收发请求支持

  • 美国东部(俄亥俄)

  • 欧洲(斯德哥尔摩)

  • Middle East (Bahrain)

  • 欧洲(巴黎)

  • 南美洲(圣保罗)

  • 美国西部(加利福尼亚北部)

步骤 3:确认您位于 SMS 沙盒中

按照以下过程确认您是否在 SMS 沙盒中。对于您拥有生产 Amazon Cognito 用户池的每个 Amazon Web Services 区域,重复此步骤。

Original console

确认您位于 SMS 沙盒中

  1. https://console.aws.amazon.com/cognito 打开 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 创建新用户池或者编辑现有用户池

  3. 如果您的账户位于 SMS 沙盒中,您将在 Amazon Cognito 中看到以下消息:

    You are currently in a Sandbox environment in Amazon SNS.

    如果您没有看到此消息,则表明有人已经在您的账户中设置了 SMS 消息。跳至步骤 6:在 Amazon Cognito 中完成用户池设置

  4. 在消息中,要在新选项卡中打开 Amazon SNS 控制台,请选择 Amazon SNS 链接。

  5. 验证您是否位于沙盒环境中。控制台消息指示您的沙盒状态和 Amazon Web Services 区域,如下所示:

    This account is in the SMS sandbox in US East (N. Virginia).

New console

确认您位于 SMS 沙盒中

  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池。

  4. 选择 Messaging(消息收发)选项卡。

  5. SMS configuration(SMS 配置)部分,展开 Move to Amazon SNS production environment(迁移到 Amazon SNS 生产环境)。如果您的账户位于 SMS 沙盒中,您将看到以下消息:

    You are currently in the SMS Sandbox and cannot send SMS messages to unverified numbers.

    如果您没有看到此消息,则表明有人已经在您的账户中设置了 SMS 消息。跳至步骤 6:在 Amazon Cognito 中完成用户池设置

  6. 选择消息中的 Amazon SNS 链接。这将在新选项卡中打开 Amazon SNS 控制台。

  7. 验证您是否位于沙盒环境中。控制台消息指示您的沙盒状态和 Amazon Web Services 区域,如下所示:

    This account is in the SMS sandbox in US East (N. Virginia).

步骤 4:将您的账户移出 Amazon SNS 沙盒

如果正在测试应用程序,并且只需向管理员可以验证的号码发送 SMS 消息,请跳过此步骤并继续执行步骤 5。

要在生产环境中使用您的应用程序,请将账户移出 SMS 沙盒并放入生产环境。在包含您希望 Amazon Cognito 使用的 Amazon SNS 资源的 Amazon Web Services 区域中配置源身份之后,您可以在 Amazon Web Services 账户仍然位于 SMS 沙盒中时测试美国号码。当您的 Amazon SNS 环境投入生产时,您无需在 Amazon SNS 中验证用户电话号码即可向用户发送 SMS 消息。

有关详细说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的移出 SMS 沙盒

步骤 5:在 Amazon SNS 中验证 Amazon Cognito 的电话号码

如果您已将账户移出 SMS 沙盒,则跳过此步骤并进入步骤 6。

当您位于 SMS 沙盒中时,您可以使用 Amazon SNS 向任何已验证的号码发送消息。

要验证电话号码,请执行以下操作:

  1. 在 Amazon SNS 控制台的 Text messaging (SMS)(文本消息 (SMS))部分,添加 Sandbox destination phone number(沙盒目标电话号码)。

  2. 在您提供的电话号码上接收带有密码的 SMS 消息。

  3. 在 Amazon SNS 控制台上,输入 SMS 消息中的 Verification code(验证代码)。

有关详细说明,请参阅《Amazon Simple Notification Service 开发人员指南》中的在 SMS 沙盒中添加并验证电话号码

注意

当您在 SMS 沙盒中时,Amazon SNS 限制可以验证的目标电话号码的数量。请参阅《Amazon Simple Notification Service 开发人员指南》中的 SMS 沙盒

步骤 6:在 Amazon Cognito 中完成用户池设置

返回您在其中创建或者编辑用户池的浏览器选项卡。完成过程。