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

Amazon Cognito 用户池的电子邮件设置

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

为处理电子邮件递送,您可以使用以下任一选项:

这些设置是可逆的。您可以更新您的用户池以在这些设置之间切换。

默认电子邮件功能

Amazon Cognito 可以使用服务的默认电子邮件功能为您处理电子邮件送达。当您使用默认选项时,Amazon Cognito 会限制您的用户池每天可以发送的电子邮件数量。有关服务限制的更多信息,请参阅 Amazon Cognito 中的配额。对于典型的生产环境,默认电子邮件限制低于所需的递送量。要增加递送量,请使用 Amazon SES 电子邮件配置。

使用默认电子邮件配置时,您可以使用以下任一电子邮件地址作为 FROM 地址:

  • 默认电子邮件地址 no-reply@verificationemail.com。

  • 自定义电子邮件地址。在可以使用您自己的电子邮件地址之前,您必须向 Amazon SES 验证此地址,并且向 Amazon Cognito 授予使用此地址的权限。

Amazon SES 电子邮件配置

您的应用程序需要的递送量可能高于默认选项所提供的递送量。要增加可能的递送量,请将您的 Amazon SES 资源与用户池一起使用来向用户发送电子邮件。使用您的 Amazon SES 配置还可以监控您的电子邮件发送活动

在可以使用您的 Amazon SES 配置之前,您必须向 Amazon SES 验证一个或多个电子邮件地址或域。将经验证的电子邮件地址或已验证域的地址,用作分配给用户池的 FROM 电子邮件地址。当 Amazon Cognito 向您的发送电子邮件时,它通过调用 Amazon SES 以您的名义使用您的电子邮件地址。

注意

您只能使用 Amazon CLI 或 Amazon Cognito API 在已验证的域中配置 FORM 地址。

当您使用您的 Amazon SES 配置时,用户池的电子邮件送达量限制就是适用于您的 Amazon Web Services 账户中经 Amazon SES 验证的电子邮件地址的相同限制。将 Amazon SES 与 Amazon Cognito 一起使用需遵循 Amazon SES 定价,根据您的邮件量可能会产生额外的成本。

Amazon SES 电子邮件配置区域

当您选择 Amazon Web Services 区域而其中包含要用于 Amazon Cognito 电子邮件的 Amazon SES 资源时,您可以选择创建用户池时使用的相同区域。对于部分区域中的 Amazon Cognito 用户池,您还可以使用以下备用区域中的 Amazon SES 资源:美国东部(弗吉尼亚北部)、美国西部(俄勒冈)或欧洲(爱尔兰)。

为了使您的电子邮件操作更快、更可靠,请使用创建用户池所用的 Amazon Web Services 区域。Amazon Cognito 中支持跨区域 Amazon SES 配置,这为您创建的用户池资源提供了连续性,这些资源是为了遵守服务启动时的 Amazon Cognito 要求而创建的。您在此期间创建的用户池资源只能使用有限数量 Amazon Web Services 区域中的 Amazon SES 资源。

如果您使用 Amazon Command Line Interface、API 或 Amazon CloudFormation 创建 Amazon Cognito 用户池资源,则用户池会使用 EmailConfigurationType 对象的 SourceArn 参数为您的用户池指定的 Amazon SES 身份,发送电子邮件。Amazon SES 身份必须位于支持的 Amazon Web Services 区域中。如果您的 EmailSendingAccountCOGNITO_DEFAULT 而且您没有指定 SourceArn 参数,则 Amazon Cognito 使用您创建用户池所在区域中的资源,从 no-reply@verificationemail.com 发送电子邮件。

下表显示了您可以将 Amazon SES 身份用于 Amazon Cognito 的 Amazon Web Services 区域。

Amazon Cognito 用户池 Amazon Web Services 区域 Amazon Simple Email Service 支持的 Amazon Web Services 区域

美国东部(弗吉尼亚北部)

美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

美国东部(俄亥俄)

美国东部(俄亥俄)、美国东部(弗吉尼亚北部)、欧洲(爱尔兰)

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

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

美国西部(俄勒冈)

美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

加拿大(中部)

加拿大(中部)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

亚太地区(东京)

亚太地区(东京)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

亚太地区(首尔)

亚太地区(首尔)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

亚太地区(孟买)

亚太地区(孟买)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

亚太地区(新加坡)

亚太地区(新加坡)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

亚太地区(悉尼)

亚太地区(悉尼)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

欧洲(爱尔兰)

美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

欧洲(伦敦)

欧洲(伦敦)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

欧洲(巴黎)

欧洲(巴黎)

欧洲(法兰克福)

欧洲(法兰克福)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、欧洲(爱尔兰)

欧洲(斯德哥尔摩)

欧洲(斯德哥尔摩)

Middle East (Bahrain)

Middle East (Bahrain)

南美洲(圣保罗)

南美洲(圣保罗)

为您的用户池配置电子邮件

完成以下步骤为用户池配置电子邮件设置。根据您要使用的设置,您可能需要 Amazon SES、Amazon Identity and Access Management(IAM)和 Amazon Cognito 中的 IAM 权限。

注意

您在这些步骤中创建的资源无法跨 Amazon Web Services 账户进行共享。例如,您不能为一个账户中的用户池配置用户池,然后将其用于另一个账户中的 Amazon SES 电子邮件地址。如果您在多个账户中使用 Amazon Cognito,请为每个账户中重复这些步骤。

步骤 1:使用 Amazon SES 验证电子邮件地址或域

在配置您的用户池之前,如果您要执行以下任一操作,则必须使用 Amazon SES 验证一个或多个电子邮件地址或域:

  • 使用您自己的电子邮件地址作为 FROM 地址

  • 使用您的 Amazon SES 配置处理电子邮件送达

通过验证您的电子邮件地址或域,您确认您拥有该电子邮件地址,这有助于防止未经授权的使用。

有关使用 Amazon SES 验证电子邮件地址的更多信息,请参阅 Amazon Simple Email Service 开发人员指南中的验证电子邮件地址。有关使用 Amazon SES 验证域的信息,请参阅验证域

步骤 2:将您的账户移出 Amazon SES 沙盒

如果您使用的是默认 Amazon Cognito 电子邮件功能,则跳过此步骤。

当您首次在任意 Amazon Web Services 区域中使用 Amazon SES 时,它会将您的 Amazon Web Services 账户放置在该区域的 Amazon SES 沙盒中。Amazon SES 使用沙盒防止欺诈和滥用。如果您使用您的 Amazon SES 配置来处理电子邮件送达,则必须将您的 Amazon Web Services 账户移出沙盒,然后 Amazon Cognito 才能向用户发送电子邮件。

在沙盒中,Amazon SES 会对您可以发送的电子邮件数量和可以发送电子邮件的位置施加限制。您可以仅向已通过 Amazon SES 验证的地址和域发送电子邮件,也可以将其发送到 Amazon SES 邮箱模拟器地址。当您的 Amazon Web Services 账户保留在沙盒中时,请勿对生产环境中的应用程序使用您的 Amazon SES 配置。在这种情况下,Amazon Cognito 无法将邮件发送到您用户的电子邮件地址。

要将您的 Amazon Web Services 账户移出沙盒,请参阅《Amazon Simple Email Service 开发人员指南》中的移出 Amazon SES 沙盒

步骤 3:授予 Amazon Cognito 电子邮件权限

您可能需要向 Amazon Cognito 授予特定权限,然后它才能向您的用户发送电子邮件。您授予的权限以及用于授予权限的过程取决于您使用的是默认电子邮件功能还是您的 Amazon SES 配置。

只有当您使用的是默认 Amazon Cognito 电子邮件功能时才可跳过此步骤。

如果将您的用户池配置为使用默认 Amazon Cognito 的电子邮件功能,您可以使用以下任一地址作为 FROM 地址,Amazon Cognito 会通过该地址向您的用户发送电子邮件:

  • 默认地址

  • Amazon SES 中的自定义地址必须是已验证的电子邮件地址,或已验证域中的电子邮件地址。

如果您使用自定义地址,Amazon Cognito 需要额外权限,以便使用此地址向您的用户发送电子邮件。这些权限通过发送授权策略授予,并在 Amazon SES 中会将此策略附加到地址或域。如果您使用 Amazon Cognito 控制台向您的用户池添加自定义地址,此策略会自动附加到 Amazon SES 验证的电子邮件地址。然而,如果您在此控制台外部配置您的用户池(例如,使用 Amazon CLI 或 Amazon Cognito API),则必须使用 Amazon SES 控制台PutIdentityPolicy API 附加此策略。

注意

您只能使用 Amazon CLI 或 Amazon Cognito API 在已验证的域中配置 FORM 地址。

发送授权策略根据使用 Amazon Cognito 调用 Amazon SES 的账户资源,来允许或拒绝访问。有关基于资源的策略的更多信息,请参阅 IAM 用户指南。在 Amazon SES 开发人员指南中可以找到基于资源的策略示例。

例 发送授权策略

以下示例发送授权策略授予 Amazon Cognito 使用经 Amazon SES 验证的身份的有限能力。Amazon Cognito 在代表 aws:SourceArn 中的用户池和 aws:SourceAccount 条件中的账户时才能发送电子邮件。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "stmnt1234567891234", "Effect": "Allow", "Principal": { "Service": [ "email.cognito-idp.amazonaws.com" ] }, "Action": [ "SES:SendEmail", "SES:SendRawEmail" ], "Resource": "<your SES identity ARN>", "Condition": { "StringEquals": { "AWS:SourceAccount": "<your account number>" }, "ArnLike": { "AWS:SourceArn": "<your identity pool ARN>" } } } ] }

在此示例中,“Sid”值为唯一标识语句的任意字符串。

有关策略语法的更多信息,请参阅《Amazon Simple Email Service 开发人员指南》中的 Amazon SES 发送授权策略

有关更多示例,请参阅《Amazon Simple Email Service 开发人员指南》中的 Amazon SES 发送授权策略示例

如果您将用户池配置为使用您的 Amazon SES 配置,Amazon Cognito 在向用户发送电子邮件时,需要额外的权限代表您调用 Amazon SES。此授权将通过 IAM 服务授予。

当您使用此选项配置用户池时,Amazon Cognito 将创建一个服务相关角色,这是您 Amazon Web Services 账户中的一种 IAM 角色类型。此角色包含允许 Amazon Cognito 访问 Amazon SES 并使用您的地址发送电子邮件的权限。

在 Amazon Cognito 可以创建此角色之前,您用来设置用户池的 IAM 权限必须包含 iam:CreateServiceLinkedRole 操作。有关更新 IAM 中权限的更多信息,请参阅《IAM 用户指南》中的更改 IAM 用户的权限

有关 Amazon Cognito 创建的服务相关角色的更多信息,请参阅对 Amazon Cognito 使用服务相关角色

步骤 4:配置用户池

如果您要将您的用户池配置为使用以下内容,请完成以下步骤:

  • 自定义 FROM 地址(显示为电子邮件发件人)。

  • 自定义 REPLY-TO 地址,用于接收您的用户发送到您的 FROM 地址的邮件

  • Amazon SES 配置

如果您要使用默认 Amazon Cognito 电子邮件功能和地址,则跳过此过程。

Original console

配置用户池以使用自定义电子邮件地址

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

  2. 选择 Manage User Pools (管理用户池)

  3. Your User Pools (您的用户池) 页面上,选择要配置的用户池。

  4. 在左侧导航菜单中,选择 Message customizations (管理自定义)

  5. 如果您希望使用自定义 FROM 地址,选择 Add custom FROM address (添加自定义 FROM 地址) 并完成以下步骤:

    1. 对于 SES region (SES 区域),选择包含验证的电子邮件地址的区域。

    2. 对于 Source ARN (源 ARN),请选择您的电子邮件地址。使用您已在所选区域使用 Amazon SES 进行验证的电子邮件地址。

    3. 对于 FROM email address (FROM 电子邮件地址),选择您的电子邮件地址。您可以仅提供电子邮件地址,也可以同时提供电子邮件地址和格式为 Jane Doe <janedoe@example.com> 的易记名称。

  6. Do you want to send emails through your Amazon SES Configuration? (是否要通过 Amazon SES 配置发送电子邮件?) 下,选择 Yes - Use Amazon SES (是 - 使用 Amazon SES)No - Use Cognito (Default) (否 -使用 Cognito (默认))

    如果您选择使用 Amazon SES,Amazon Cognito 将在您保存更改后创建服务相关角色。

  7. 如果您希望使用自定义 REPLY-TO 地址,请选择 Add custom REPLY-TO address (添加自定义 REPLY-TO 地址)。然后,输入电子邮件地址,您将使用该地址接收用户发送到您的 FROM 地址的邮件。

  8. 当您完成设置您的电子邮件账户选项时,选择 Save changes (保存更改)

New console

配置用户池以使用自定义电子邮件地址

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

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

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

  4. 选择 Messaging(消息收发)选项卡,查找 Email configuration(电子邮件配置),选择 Edit(编辑)。

  5. Edit email configuration(编辑电子邮件配置)页面中,选择 Send email from Amazon SES(使用 Amazon SES 发送电子邮件)或 Send email with Amazon Cognito(使用 Amazon Cognito 发送电子邮件)。仅当您选择 Send email from Amazon SES(使用 Amazon SES 发送电子邮件)时,您才可以自定义 SES Region(SES 区域)、Configuration Set(配置集) 和 FROM sender name(FROM 发件人姓名)。

  6. 要使用自定义 FROM 地址,请完成以下步骤:

    1. SES region(SES 区域)下,选择包含验证的电子邮件地址的区域。

    2. FROM email address(FROM 电子邮件地址)下,选择您的电子邮件地址。使用您已通过 Amazon SES 验证的电子邮件地址。

    3. (可选)在 Configuration set(配置集)下,选择 Amazon SES 使用的配置集。进行此更改并保存可创建服务相关角色。

    4. (可选)在 FROM sender address(FROM 发件人地址)下,输入电子邮件地址。您可以仅提供电子邮件地址,也可以同时提供电子邮件地址和格式为 Jane Doe <janedoe@example.com> 的易记名称。

    5. (可选)在 REPLY-TO email address(REPLY-TO 电子邮箱地址)下,输入要用来接收用户发送到您的 FROM 地址的邮件的电子邮件地址。

  7. 选择保存更改

相关主题