AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性 "Not currently supported by AWS CloudFormation." 和 CDK 使用

AWS CloudFormation: Cognito LambdaTrigger CustomEmailSender - Property "Not currently supported by AWS CloudFormation." and CDK usage

对于 CDK 实施,属性“目前不受 AWS CloudFormation 支持”一般是什么意思,具体来说:

在 Cognito 用户池 Lambda 配置的 CloudFormation 属性中,它说: CustomEmailSender - 目前不受 AWS CloudFormation 支持。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-lambdaconfig.html

在 Cognito.CfnUssrPool 的 CDK 中描述了这个 属性: https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.CfnUserPool.LambdaConfigProperty.html#customemailsender

我现在的问题是这是否完全可以用 CDK 实现?目前,我们的 Cognito 完全通过 CDK 提供,我希望保持这种状态。


编辑:

我发现了一个 link (Using CustomEmailSender with CFN) ,它说与文档相反,它似乎确实有效,只是文档没有更新,我将对此进行测试并提供反馈。

在测试 CustomEmailSender CDK 实施后,我不得不说 AWS CloudFormation 文档没有当前状态。所以可以通过CFN和CDK来使用这个功能。 AWS Doc CFN Cognito CustomEmailSender

CDK 中的待办事项:

  • 配置 Cognito:您必须使用 lambdaConfig:
  • 而不是使用 属性 emailConfiguration
lambdaConfig: {
        customEmailSender: { lambdaArn: customSenderEmailLambdaArn, lambdaVersion: 'V1_0' }, 
        // the version is an ENUM so be careful when you set it
        kmsKeyId: kmsKeyArn,
      },
  • 正如您在此处看到的,您还必须设置 KMS 密钥(您可以调整现有密钥或创建新的 KMS 密钥)。这里最重要的是您允许操作 kms:CreateGrant 到 Cognito 和 Lambda 函数!
  • 另一个重要的 ToDo 是为您的 Lambda 添加 Cognito 权限,操作 cognito-idp:InvokeFunction
  • 使用 CustomEmailSender 而不是常见的 Lambda 触发器的一大优势是您不必在 CDK 代码或 Cognito 控制台中设置所有触发器(所有电子邮件事件都将自动发送到您的 lambda)。