问题描述
我想从我的 CDK 本身验证一个电子邮件地址,这样当我的堆栈部署到其他一些区域时,此验证会自动触发,而不是转到 AWS 控制台并手动执行。
解决方法
您可以使用 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 也是如此。