配置 Cognito 以正确方式通过 SendGrid 等第三方发送电子邮件

Kim*_*ton 11 amazon-web-services amazon-cognito amazon-cognito-triggers

我曾尝试调用自定义消息功能通过 SendGrid 发送电子邮件,效果很好,但我没有办法阻止 AWS 通过他们的电子邮件发送。我试图将 设置messageAction为“SUPPRESS”,但出现了另一个问题。由于messageAction仅用于 adminCreateUser 功能,因此不支持自注册。我错过了什么还是我没有正确地做这件事?

max*_*x_i 7

自定义发件人 Lambda 触发器是使用 3rd 方通知服务提供商的方式。

目前缺少 Cognito 文档(缺少步骤,从示例复制后必须修复 Lambda 代码,没有关于如何使用 CloudFormation 进行部署的说明,......)。

步骤的高级概述:

  1. 创建对称 KMS 密钥。
  2. 创建一个 Lambda 函数。授予kms:Decrypt对密钥的Lambda 权限。将密钥 ARN 作为环境变量传递。
  3. 创建用户池和用户池客户端。对于池,配置LambdaConfig提供 Lambda 和 KMS 密钥 ARN。
  4. 在代码中,使用 env 变量中传递的密钥解密通知代码。
  5. 使用第 3 方(例如 Twilio Sendgrid)API 发送通知代码。

工具(截至 2021 年 3 月):

  • Cognito 控制台不支持新触发器
  • AWS CLI 支持新的触发器
  • CloudFormation 文档说不支持触发器,但实际上它有效
  • Terraform 尚不支持设置新触发器(有一个解决方法)

我在博客中介绍了使用 CloudFormation 和 Terraform 设置自定义电子邮件 Lambda 触发器的过程:使用 3rd party ESP 发送 AWS Cognito 电子邮件

  • 感谢您写下这篇文章,AWS 最近似乎希望我们众包 Cognito 的文档 (2认同)

小智 5

看来现在 Cognito 开始支持这一点了。

Cognito 提供两个 Lambda 触发器CustomEmailSenderCustomSMSSender启用第三方电子邮件和短信通知。1


1 来源自 AWS Cognito 文档