如何将 Amazon SES 与 Amazon Cognito 用户群体集成?

如何将 Amazon SES 与 Amazon Cognito 用户群体集成?

我想要了解将 Amazon Simple Email Service(Amazon SES)与 Amazon Cognito 用户群体集成所需执行的步骤。
如何将 Amazon SES 与 Amazon Cognito 用户群体集成? 2023-08-19 20:42:18
如何将 Amazon SES 与 Amazon Cognito 用户群体集成? 0
如何将 Amazon SES 与 Amazon Cognito 用户群体集成?
## 简短描述 Amazon SES 和 Amazon Cognito 可进行集成,以通过您拥有的自定义电子邮件地址发送电子邮件。按照以下简要步骤操作,可将 Amazon SES 与 Amazon Cognito 用户群体相集成: * 考虑 Amazon SES 沙盒的局限性。 * 将账户移出 Amazon SES 沙盒。 * 验证 Amazon SES 身份。 * 使用 Amazon SES 验证的身份配置 Amazon Cognito 用户群体。 ## 解决方法 实施以下步骤,将 Amazon SES 与 Amazon Cognito 用户群体相集成,以代表您发送电子邮件。 ### Amazon SES 沙盒的局限性 所有新的 Amazon SES 账户都放在 Amazon SES 沙盒中,以防止欺诈和滥用。使用 Amazon SES 沙盒时需要考虑一些限制。要查看具体的沙盒限制,请参阅[移出 Amazon SES 沙盒](https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html?trk=cndc-detail)。您必须将您的 Amazon SES 账户移出沙盒,才能充分使用 Amazon SES 服务。 ### 将账户移出 Amazon SES 沙盒 要将账户移出 Amazon SES 沙盒,请执行以下步骤: 1.    查看 [Amazon SES 电子邮件配置](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html#user-pool-email-developer?trk=cndc-detail)中的亚马逊云科技区域映射表。映射表显示了可以将 Amazon SES 身份与 Amazon Cognito 用户群体集成的区域。在将 Amazon SES 账户移出沙盒之前,必须确保使用兼容的区域。 2.    [请求 Amazon SES 账户的生产访问权限](https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html)。生产访问请求获得批准后,您可以向任何收件人发送电子邮件。 **重要信息**:您必须切换到全新的 Amazon Cognito 控制台体验,才能在同一区域将 Amazon Cognito 与 Amazon SES 集成。 ### 验证 Amazon SES 身份 要验证 Amazon SES 域身份,请执行以下步骤: 1.    [创建域身份](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-domain-procedure?trk=cndc-detail)。 2.    [验证 Amazon SES 中的一个或多个域](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-domain-proc?trk=cndc-detail)。 要验证 Amazon SES 电子邮件身份,请执行以下步骤: 1.    [创建电子邮件身份](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure?trk=cndc-detail)。 2.    [验证 Amazon SES 中的一个或多个电子邮件地址](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc?trk=cndc-detail)。 **注意**:不支持 Amazon Cognito 和 Amazon SES 的跨账户集成。您不能在一个账户中配置 Amazon Cognito 用户群体,也不能将其与另一个账户中的 Amazon SES 电子邮件地址集成。 ### 使用 Amazon SES 验证的身份配置 Amazon Cognito 用户群体 要将 Amazon Cognito 用户群体与经过验证的 Amazon SES 身份配置相集成,请按照与您的使用案例相关的步骤进行操作。 **当验证 Amazon SES 域身份时** 1.    登录到新的 [Amazon Cognito 控制台](https://console.aws.amazon.com/cognito/home?trk=cndc-detail),然后选择 **User Pools**(用户群体)。 2.    从列表中选择相应的用户群体。 3.    依次选择 **Messaging**(消息)选项卡、**Email configuration**(电子邮件配置),然后选择 **Edit**(编辑)。 4.    在 **FROM email address**(发件人电子邮件地址)下,选择 Amazon SES 验证的域身份。(例如,**example.com**。) 5.    在 **FROM sender name**(发件人姓名)下,输入您的电子邮件地址。(例如,**admin\@example.com**。) 由于域已经过验证,因此您可以为域身份添加自定义电子邮件地址。[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html?trk=cndc-detail) API 使用 Amazon SES 身份配置 Amazon Cognito 用户群体。 [update-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html?trk=cndc-detail) 命令示例: ``` $ aws cognito-idp update-user-pool --user-pool-id example_pool_id --email-configuration SourceArn=arn:aws:ses:example_region:example_account_number:identity/example_domain,EmailSendingAccount=DEVELOPER,From=user@example.com --region example_region ``` **重要信息**:由于 **UpdateUserPool** API 会重置用户群体的现有配置,因此请先调用 [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html?trk=cndc-detail) API。然后,将所有现有的用户群体参数发送到 **UpdateUserPool** API。 **update-user-pool** 命令的描述: * **example_pool_id** 对应于 Amazon Cognito 用户群体 ID。示例:ap-southeast-1\_xxxxxxxx。 * **arn:aws:ses:example_region:example_account_number:identity/example_domain** 是您的 Amazon SES 域身份的 ARN。 * 必须将 **user\@example.com** 替换为您的电子邮件身份。 * **example_region** 表示您的 Amazon Cognito 用户群体所在的区域。示例:ap-southeast-1。 **当验证 Amazon SES 电子邮件身份时** 1.    登录到新的 [Amazon Cognito 控制台](https://console.aws.amazon.com/cognito/home?trk=cndc-detail),然后选择 **User Pools**(用户群体)。 2.    从列表中选择相应的用户群体。 3.    依次选择 **Messaging**(消息)选项卡、**Email configuration**(电子邮件配置),然后选择 **Edit**(编辑)。 4.    在 **FROM email address**(发件人电子邮件地址)下,选择 Amazon SES 电子邮件域身份。(例如,**admin\@example.com**。) ### 错误排查 本部分中包含以下信息:对在集成 Amazon Cognito 和 Amazon SES 后发送电子邮件时用户遇到的错误进行故障排查。 **未验证的电子邮件地址错误** “未验证电子邮件地址。以下身份未通过区域 AP-SOUTHEAST-1 中的检查:user\@example.com。” Amazon Cognito 在尝试发送电子邮件时收到未经验证的电子邮件地址错误。当您尝试从 Amazon SES 沙盒中的账户向未经验证的电子邮件地址发送电子邮件时,可能会出现此错误。要解决此错误,请[将您的 Amazon SES 账户移出沙盒](https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html?trk=cndc-detail),或在 Amazon SES 中验证收件人的电子邮件地址。 **用户没有收到来自 Amazon Cognito 的电子邮件** 用户没有收到来自 Amazon Cognito 用户群体的电子邮件。要解决此问题,请确认您是否使用 [Amazon Cognito 默认电子邮件功能](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html#user-pool-email-default?trk=cndc-detail)或 [Amazon SES 电子邮件配置](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html#user-pool-email-developer?trk=cndc-detail)来发送电子邮件。通过亚马逊云科技管理控制台或调用 [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html?trk=cndc-detail) API 验证您的更新。 [describe-user-pool](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/describe-user-pool.html?trk=cndc-detail) 命令示例: ``` aws cognito-idp describe-user-pool --user-pool-id example_pool_id --region example_region --query 'UserPool.EmailConfiguration' ``` 输出: ``` { "SourceArn": "arn:aws:ses:us-east-1:123456789012:identity/admin@example.com", "EmailSendingAccount": "DEVELOPER", "From": "admin@example.com" } ``` \-或者- ``` { "SourceArn": "arn:aws:ses:us-east-1:123456789012:identity/admin@example.com", "EmailSendingAccount": "COGNITO_DEFAULT" } ``` 如果 **EmailSendingAccount** 配置设置为 **DEVELOPER**,说明您的 Amazon Cognito 用户群体正在使用 Amazon SES 发送电子邮件。验证您的 Amazon SES 账户是否在沙盒中。如果是,请将 Amazon SES 移出沙盒,以便向未经验证的身份发送电子邮件。如果 Amazon SES 账户处于生产状态或退出沙盒模式,请查看 Amazon SES 日志以了解电子邮件传送情况。 如果您在输出中收到 **COGNITO_DEFAULT** 消息,说明您的 Amazon Cognito 用户群体正在使用默认功能发送电子邮件。使用此默认功能时,Amazon Cognito 对每个用户群体发送的电子邮件数量有[配额限制](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html?trk=cndc-detail)。 **抛出 LimitExceededException 异常** “超过了操作或账户的每日电子邮件限制。已超过允许的操作次数。如果需要更高的限额,请将您的用户群体配置为使用您自己的 Amazon SES 配置来发送电子邮件。” 当 Amazon Cognito 使用具有每日[配额限制](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html?trk=cndc-detail)的[默认电子邮件功能](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html#user-pool-email-default?trk=cndc-detail)发送电子邮件时,用户会收到每日电子邮件限制错误。按照错误消息中的建议,通过[更改 Amazon SES 电子邮件配置](https://docs.aws.amazon.com/ses/latest/dg/manage-sending-quotas.html?trk=cndc-detail)来设置更高的电子邮件传送量。