AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用

Posted

技术标签:

【中文标题】AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用【英文标题】:AWS CloudFormation: Cognito LambdaTrigger CustomEmailSender - Property "Not currently supported by AWS CloudFormation." and CDK usage 【发布时间】:2021-12-12 15:51:06 【问题描述】:

对于 CDK 实施,通常意味着“AWS CloudFormation 目前不支持”属性,具体而言:

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

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

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


编辑:

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

【问题讨论】:

CDK 归结为 CloudFormation 模板,如果 CloudFormation 不支持某个属性,则 CDK 也无法使用它。如果您不需要该属性,那很好 - 如果您需要它,那么您就有问题了。 @luk2302 感谢您的评论,您知道为什么在 CDK 文档中对其进行了描述吗?您对解决方法有任何想法吗? 解决方法是不使用 CDK / CloudFormation :D 我不明白第一个问题,CDK 文档在属性和功能文档方面基本上是 cloudformation 文档的副本。 @luk2302 好的,你知道通过基础设施即代码设置 Cognito 的任何其他方法吗,我想防止手动执行配置步骤。为了澄清我的“第一个问题”,为什么 AWS 在 CDK 文档中添加一个不可用的属性,但将此视为一个反问;) 您始终可以在 CloudFormation 中设置和使用自定义资源。另一种选择是使用另一个 IaC 工具,例如 terraform,但这是一个重大变化/转变。 【参考方案1】:

在测试 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)。李>

【讨论】:

以上是关于AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用的主要内容,如果未能解决你的问题,请参考以下文章

AWS 批处理 cloudformation - “CannotPullContainerError”

将现有 AWS 资源整合到 CloudFormation 堆栈中

AWS Cloudformation的相关概念

CloudFormation - 将标签应用于其他 AWS 资源

AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用

AWS学习笔记--利用CloudFormation管理AWS资源