关于如何使用 GUI 获取 SMTP 凭据的手册:
使用 Amazon SES 控制台获取 Amazon SES SMTP 凭证
有没有办法使用 Amazon CDK 实现这一目标?到目前为止,我已经尝试使用
aws-ses
包零运气。
我不指望你为我写代码,只要给我指出正确的方向就行了。
描述工作流程就可以了,谢谢。
获取 Amazon SES SMTP 凭据需要根据 docs 的以下 IAM 策略:
您的 IAM 策略必须允许您执行以下 IAM 操作:
、iam:ListUsers
、iam:CreateUser
和iam:CreateAccessKey
。iam:PutUserPolicy
GUI背后发生的事情是:
iam:ListUsers
验证),要么创建(使用 iam:CreateUser
)iam:PutUserPolicy
)以授予他们执行ses:SendRawEmail
的权限:"Statement":[{"Effect":"Allow","Action":"ses:SendRawEmail","Resource":"*"}]
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。
我推荐使用这个库:https://github.com/pepperize/cdk-ses-smtp-credentials
安装
npm install @pepperize/cdk-ses-smtp-credentials
然后您可以在您的 CDK 堆栈中使用它:
import { User } from "@aws-cdk/aws-iam";
import { SesSmtpCredentials } from "@pepperize/cdk-ses-smtp-credentials";
const smtpCredentials = new SesSmtpCredentials(this, "SmtpCredentials", {
userName: "ses-user",
});
// smtpCredentials.secret contains json value {username: "<the generated access key id>", password: "<the calculated ses smtp password>"}