Skip to content

Latest commit

 

History

History
350 lines (223 loc) · 12.5 KB

API.md

File metadata and controls

350 lines (223 loc) · 12.5 KB

PRs Welcome GitHub npm (scoped) PyPI Nuget Sonatype Nexus (Releases) GitHub Workflow Status (branch) GitHub release (latest SemVer) Gitpod ready-to-code

AWS CDK Ses Smtp Credentials

Generate SES smtp credentials for a user and store the credentials in a SecretsManager Secret.

View on Construct Hub

Install

TypeScript

npm install @pepperize/cdk-ses-smtp-credentials

or

yarn add @pepperize/cdk-ses-smtp-credentials

Python

pip install pepperize.cdk-ses-smtp-credentials

C# / .Net

dotnet add package Pepperize.CDK.SesSmtpCredentials

Java

<dependency>
  <groupId>com.pepperize</groupId>
  <artifactId>cdk-ses-smtp-credentials</artifactId>
  <version>${cdkSesSmtpCredentials.version}</version>
</dependency>

Usage

npm install @pepperize/cdk-ses-smtp-credentials

See API.md.

Create AWS SES Smtp Credentials for a given user

Attaches an inline policy to the user allowing to send emails

import { User } from "@aws-cdk/aws-iam";
import { SesSmtpCredentials } from "@pepperize/cdk-ses-smtp-credentials";

const user = new User(stack, "SesUser", {
  userName: "ses-user",
});
const smtpCredentials = new SesSmtpCredentials(this, "SmtpCredentials", {
  user: user,
});

// smtpCredentials.secret contains json value {username: "<the generated access key id>", password: "<the calculated ses smtp password>"}

See API Reference - SesSmtpCredentials

Create AWS SES Smtp Credentials and create a new user

Attaches an inline policy to the user allowing to send emails

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>"}

See API Reference - SesSmtpCredentials

Calculate the AWS SES Smtp password on your own

import * as AWS from "aws-sdk";
import { calculateSesSmtpPassword } from "@pepperize/cdk-ses-smtp-credentials";

const iam = new AWS.IAM();
const accessKey = await iam
  .createAccessKey({
    UserName: username,
  })
  .promise();
const accessKeyId = accessKey.AccessKey.AccessKeyId;
const secretAccessKey = accessKey.AccessKey.SecretAccessKey;

const password = calculateSesSmtpPassword(secretAccessKey, "us-east-1");

console.log({
  username: accessKeyId,
  password: password,
});

See Obtaining Amazon SES SMTP credentials by converting existing AWS credentials

API Reference

Constructs

SesSmtpCredentials

This construct creates an access key for the given user and stores the generated SMTP credentials inside a secret.

Attaches an inline policy to the user allowing to send emails

const user = User.fromUserName("ses-user-example");
const credentials = new SesSmtpCredentials(this, 'SmtpCredentials', {
     user: user,
});
// smtpCredentials.secret contains json value {username: "<the generated access key id>", password: "<the calculated ses smtp password>"}

Initializers

import { SesSmtpCredentials } from '@pepperize/cdk-ses-smtp-credentials'

new SesSmtpCredentials(scope: Construct, id: string, props: SesSmtpCredentialsProps)
Name Type Description
scope constructs.Construct No description.
id string No description.
props SesSmtpCredentialsProps No description.

scopeRequired
  • Type: constructs.Construct

idRequired
  • Type: string

propsRequired

Methods

Name Description
toString Returns a string representation of this construct.

toString
public toString(): string

Returns a string representation of this construct.

Static Functions

Name Description
isConstruct Checks if x is a construct.

isConstruct
import { SesSmtpCredentials } from '@pepperize/cdk-ses-smtp-credentials'

SesSmtpCredentials.isConstruct(x: any)

Checks if x is a construct.

xRequired
  • Type: any

Any object.


Properties

Name Type Description
node constructs.Node The tree node.
secret aws-cdk-lib.aws_secretsmanager.ISecret The secret that contains the calculated AWS SES Smtp Credentials.

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


secretRequired
public readonly secret: ISecret;
  • Type: aws-cdk-lib.aws_secretsmanager.ISecret

The secret that contains the calculated AWS SES Smtp Credentials.

import { aws_ecs } from "aws-cdk-lib";

const containerDefinitionOptions: aws_ecs.ContainerDefinitionOptions = {
     // ...
     secrets: {
         MAIL_USERNAME: aws_ecs.Secret.fromSecretsManager(smtpCredentials.secret, "username"),
         MAIL_PASSWORD: aws_ecs.Secret.fromSecretsManager(smtpCredentials.secret, "password"),
     }
}

Structs

SesSmtpCredentialsProps

Initializer

import { SesSmtpCredentialsProps } from '@pepperize/cdk-ses-smtp-credentials'

const sesSmtpCredentialsProps: SesSmtpCredentialsProps = { ... }

Properties

Name Type Description
secret aws-cdk-lib.aws_secretsmanager.ISecret Optional, an SecretsManager secret to write the AWS SES Smtp credentials to.
user aws-cdk-lib.aws_iam.IUser The user for which to create an AWS Access Key and to generate the smtp password.
userName string Optional, a username to create a new user if no existing user is given.

secretOptional
public readonly secret: ISecret;
  • Type: aws-cdk-lib.aws_secretsmanager.ISecret

Optional, an SecretsManager secret to write the AWS SES Smtp credentials to.


userOptional
public readonly user: IUser;
  • Type: aws-cdk-lib.aws_iam.IUser

The user for which to create an AWS Access Key and to generate the smtp password.

If omitted a user will be created.


userNameOptional
public readonly userName: string;
  • Type: string

Optional, a username to create a new user if no existing user is given.


Enums

Credentials

Members

Name Description
USERNAME The key of the username stored in the secretsmanager key/value json.
PASSWORD The key of the password stored in the secretsmanager key/value json.

USERNAME

The key of the username stored in the secretsmanager key/value json.


PASSWORD

The key of the password stored in the secretsmanager key/value json.