通过 CDK 验证 SES 电子邮件地址

时间:2021-01-25 14:25:13

标签: amazon-web-services amazon-ses aws-cdk

我想从我的 CDK 本身验证一个电子邮件地址,这样当我的堆栈部署到其他一些区域时,此验证会自动触发,而不是转到 AWS 控制台并手动执行。

1 个答案:

答案 0 :(得分:3)

您可以使用 AwsCustomResource 中的 @aws-cdk/custom-resources 执行此操作,它看起来类似于您可以在此处找到的用于验证域的示例:Custom Resource Examples

使用 TypeScript 验证电子邮件

我正在为您的用例调整此处的示例:

const verifyDomainIdentity = new AwsCustomResource(this, 'VerifyDomainIdentity', {
  onCreate: {
    service: 'SES',
    action: 'verifyEmailIdentity',
    parameters: {
      EmailAddress: 'your@example.com'
    },
    physicalResourceId: PhysicalResourceId.of('verify-email-address')
  },
  policy: AwsCustomResourcePolicy.fromSdkCalls({resources: AwsCustomResourcePolicy.ANY_RESOURCE}) // This does not work somehow with SES or maybe I did something wrong :-(
});

不幸的是,这不是开箱即用的,因为生成的策略以某种方式包含 email: 前缀而不是 ses:,您需要提供自己的策略。但下面还有一个选择。

在 TypeScript 中使用现有的 CDK 结构

另一种选择是使用已经为您执行此操作的 CDK 构造。我最近遇到了和你一样的问题,为此我发布了一个 CDK 结构:ses-verify-identities。然后你可以这样做:

new VerifySesEmailAddress(this, 'SesEmailVerification', {
  emailAddress: 'hello@example.org'
});

如果您有兴趣,可以找到 CDK 构造 here 的源代码。 verifying domains 也是如此。