Cognito FROM 电子邮件地址 ARN 未出现在 SES 中

问题描述 投票:0回答:7

我有一个在 AWS Route 53 中注册的域,并且我正在使用 AWS Cognito 来处理用户注册。

我正在尝试将我的用户池配置为使用 SES 而不是 Cognito 发送验证电子邮件。我已在 Route 53 中验证了我的域,并添加了处于“已验证”状态的 MAIL FROM Domain。

在 Cognito 中,当我在用户池配置的左侧面板中选择“消息自定义”并选择“发件人电子邮件地址 ARN”下拉列表时,它仅显示“默认”。我已选择注册我的域名的 SES 区域。

我还需要做什么来填充此内容以便设置我的“发件人电子邮件地址”?

谢谢

amazon-web-services amazon-cognito amazon-ses
7个回答
11
投票

我为新的 AWS 控制台 UI 解决了这个问题,我相信该 UI 已经在几天前更新了。

这就是我所做的。

第1步

在SES中,我又回到了旧的UI。当您转到已验证的域设置时,您应该会看到 TXT 类型的 DNS 记录,根据新文档,您不需要该记录。但是,我通过单击

Use Route 53
按钮添加了它。这非常方便。如果您没有看到该按钮,那么您的 Route 53 中应该已经有该 TXT 记录。去那里确保情况确实如此。如果没有,只需手动添加即可。

最后,我再次访问Cognito,但切换到旧的UI。在

Message customizations
菜单中,我可以在
FROM email address ARN *
中看到 SES ARN 值。

第2步

最初,在新 UI 中

Messaging
部分的
Email
选项卡下,我仅设置了
FROM email address
字段,这是下拉菜单中的一个可选选项。

就我而言,我拥有经过验证的整个域名,而不是单个电子邮件地址。

为了解决这个问题,我转到新 UI 中

Messaging
部分中的
Email
选项卡,并为
FROM sender name - optional
REPLY-TO email address - optional
设置值。我最初没有那两个。当然,您在那里设置的电子邮件必须在您已验证的域下有效。

鉴于您的验证域名是

example.com
,它应该是这样的:

(花了 3 天时间阅读 Cognito 和 SES 文档,试图找出该做什么、在哪里做,另外一些实验和阅读 AWS 论坛也给了我一些线索,给了我一些帮助🤦u200d♂️)


2
投票

已通过从旧界面切换到新界面来解决。您可以添加经过验证的域名,然后从

发送邮件

0
投票

我也遇到了类似的问题。您是否检查过您的 SES 设置和 Cognito 设置是否位于同一区域?

例如: 确保您的 SES 帐户设置在“us-east-1”中。然后也在“us-east-1”中创建 AWS Cognito 用户池或身份池。

一旦您知道所有工件都位于同一区域,请务必刷新 Cognito 页面。


0
投票

您需要使用 boto3 python 库为认知池设置“from ARN”。文档中没有任何地方说你必须这样做,但我前段时间在论坛中找到了这个提示,寻找相同的答案。

Cognito 仅允许三个区域 Cognito 使用 SES。如果您的池不属于其中之一,则您无法匹配它们,并且不需要为此重新定位池。无论区域匹配如何,似乎都无法从下拉列表中进行选择。

这是我使用过的脚本

import boto3
from pprint import pprint
client = boto3.client("cognito-idp")
import json



pool_id = 'ap-southeast-2_dsfvbGuHU'

pool_config = dict(
    UserPoolId=pool_id,
    EmailConfiguration={
        "SourceArn": "arn:aws:ses:us-west-2:421412422035:identity/example.com",
        "ReplyToEmailAddress": "[email protected]",
        "EmailSendingAccount": "DEVELOPER",
        "From": "[email protected]",
    },
    AutoVerifiedAttributes=["email"],
    VerificationMessageTemplate={
        "SmsMessage": "Your verification code is {####}. ",
        "EmailMessage": "Your verification code is {####}. ",
        "EmailSubject": "Your verification code",
        "EmailMessageByLink": "Please click the link below to verify your email address. {##Verify Email##} ",
        "EmailSubjectByLink": "Your verification link",
        "DefaultEmailOption": "CONFIRM_WITH_CODE",
    },
    LambdaConfig={
        "CustomMessage": "arn:aws:lambda:ap-southeast-2:421084812035:function:sls-repo-dev-cognito-message-service",
        "PostAuthentication": "arn:aws:lambda:ap-southeast-2:421084812035:function:sls-repo-dev-cognito-post-auth-service",
        "PostConfirmation": "arn:aws:lambda:ap-southeast-2:421084812035:function:sls-repo-dev-cognito-post-confirmation-service",
        "PreTokenGeneration": "arn:aws:lambda:ap-southeast-2:421084812035:function:sls-repo-dev-cognito-pretoken-gen-service",
    },
)

res = client.update_user_pool(**pool_config)

response = client.describe_user_pool(UserPoolId=pool_id)

pprint(response)

请小心脚本,因为它可能会覆盖您的某些设置。您可以注释并打印现有配置,以便复制设置。不要忘记您需要 aws CLI 凭证才能运行此程序


0
投票

我通过切换到新控制台来实现这一目标。在这种情况下,旧的不起作用。


0
投票
  1. 确保您使用的是新控制台。
  2. 确保您的
    <your-domain>.com
    位于已验证的域名列表中并且也已通过验证。
  3. 确保您的
    email@<your-domain>.com
    位于验证者域列表中并且也经过验证。
  4. 用户池 > 消息 > 编辑电子邮件配置 > 使用 SES 发送电子邮件
  5. 确保您选择已验证实体的有效 SES 区域。
  6. 在 FROM 电子邮件地址中选择域名
    <your-domain>.com
  7. 在发件人姓名和回复电子邮件地址中添加您已验证的电子邮件
    email@<your-domain>.com
  8. 保存

0
投票

您的免费配额超过了 5o 电子邮件,您可以编辑 Cognito 池消息传递将 Cognoto 更新为 SES 并将 IAM 角色更新为 Cognito 可以访问 SES

© www.soinside.com 2019 - 2024. All rights reserved.