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

问题描述 投票:0回答:3

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

使用 Amazon SES 控制台获取 Amazon SES SMTP 凭证

有没有办法使用 Amazon CDK 实现这一目标?到目前为止,我已经尝试使用

aws-ses
包零运气。

我不指望你为我写代码,只要给我指出正确的方向就行了。

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

amazon-web-services amazon-ses aws-cdk
3个回答
2
投票

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

您的 IAM 策略必须允许您执行以下 IAM 操作:

iam:ListUsers
iam:CreateUser
iam:CreateAccessKey
iam:PutUserPolicy

GUI背后发生的事情是:

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

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

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

您基本上需要使用

@aws-cdk/aws-iam
模块执行上述操作,而不是
@aws-cdk/aws-ses
模块(因为这是实际使用 SES)。


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


1
投票

据我所知,接受的答案没有回答如何在 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。


0
投票

我推荐使用这个库: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>"}
© www.soinside.com 2019 - 2024. All rights reserved.