如何使用 CDK 生成 AWS SES SMTP 凭证?

How can I generate AWS SES SMTP credentials using the CDK?

关于如何使用 GUI 获取 SMTP 凭据的手册:

Obtaining Amazon SES SMTP credentials using the Amazon SES console

有没有办法使用 Amazon CDK 实现此目的?到目前为止,我已经尝试使用零运气的 aws-ses 包。

我不指望你为我写代码,只是为我指出正确的方向。

描述工作流程就可以了,谢谢。

获取 Amazon SES SMTP 凭据需要根据 docs 的以下 IAM 策略:

Your IAM policy must allow you to perform the following IAM actions: iam:ListUsers, iam:CreateUser, iam:CreateAccessKey, and iam:PutUserPolicy.

GUI 背后发生的事情是:

  1. 输入(并使用 iam:ListUsers 验证)或创建(使用 iam:CreateUser)IAM 用户名
  2. 内联策略已添加到用户权限(使用 iam:PutUserPolicy)以授予他们执行 ses:SendRawEmail:
  3. 的权限

"Statement":[{"Effect":"Allow","Action":"ses:SendRawEmail","Resource":"*"}]

  1. 然后为上述用户生成 SMTP 凭据(使用 iam:CreateAccessKey

您基本上需要使用 @aws-cdk/aws-iam 模块来执行上述操作,而不是 @aws-cdk/aws-ses 模块(因为那是为了实际使用 SES)。


为了进一步确认,这里是提到上述内容的 AWS 控制台:

据我所知,接受的答案没有回答如何在 CDK 中生成 SMTP 凭据。

首先您需要为该用户创建一个 IAM 用户和一个 CfnAccessKey。
然后需要从此处记录的秘密访问密钥生成 SMTP 密码:
https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html#smtp-credentials-convert

据我所知,在 CDK 中执行此操作的唯一方法是使用 CustomResource。
可以在此处找到此类实现的示例:
https://github.com/binxio/cfn-secret-provider/blob/master/src/cfn_accesskey_provider.py

但是,正如 README (https://github.com/isotoma/ses-smtp-credentials-cdk#nota-bene-confidentiality-of-keys) 中提到的那样,
STMP 密码不应从 CustomResource 返回,而是存储为 Secret。