@pepperize/cdk-ses-smtp-credentials
Version:
Generate SES smtp credentials for a given user and store the credentials in a SecretsManager Secret.
255 lines (153 loc) • 9.3 kB
Markdown
# API Reference <a name="API Reference" id="api-reference"></a>
## Constructs <a name="Constructs" id="Constructs"></a>
### SesSmtpCredentials <a name="SesSmtpCredentials" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials"></a>
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
```typescript
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 <a name="Initializers" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer"></a>
```typescript
import { SesSmtpCredentials } from '@pepperize/cdk-ses-smtp-credentials'
new SesSmtpCredentials(scope: Construct, id: string, props: SesSmtpCredentialsProps)
```
| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | *No description.* |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer.parameter.id">id</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer.parameter.props">props</a></code> | <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps">SesSmtpCredentialsProps</a></code> | *No description.* |
##### `scope`<sup>Required</sup> <a name="scope" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer.parameter.scope"></a>
- *Type:* constructs.Construct
##### `id`<sup>Required</sup> <a name="id" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer.parameter.id"></a>
- *Type:* string
##### `props`<sup>Required</sup> <a name="props" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.Initializer.parameter.props"></a>
- *Type:* <a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps">SesSmtpCredentialsProps</a>
#### Methods <a name="Methods" id="Methods"></a>
| **Name** | **Description** |
| --- | --- |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.toString">toString</a></code> | Returns a string representation of this construct. |
##### `toString` <a name="toString" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.toString"></a>
```typescript
public toString(): string
```
Returns a string representation of this construct.
#### Static Functions <a name="Static Functions" id="Static Functions"></a>
| **Name** | **Description** |
| --- | --- |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
##### ~~`isConstruct`~~ <a name="isConstruct" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.isConstruct"></a>
```typescript
import { SesSmtpCredentials } from '@pepperize/cdk-ses-smtp-credentials'
SesSmtpCredentials.isConstruct(x: any)
```
Checks if `x` is a construct.
###### `x`<sup>Required</sup> <a name="x" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.isConstruct.parameter.x"></a>
- *Type:* any
Any object.
#### Properties <a name="Properties" id="Properties"></a>
| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.property.secret">secret</a></code> | <code>aws-cdk-lib.aws_secretsmanager.ISecret</code> | The secret that contains the calculated AWS SES Smtp Credentials. |
##### `node`<sup>Required</sup> <a name="node" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.property.node"></a>
```typescript
public readonly node: Node;
```
- *Type:* constructs.Node
The tree node.
##### `secret`<sup>Required</sup> <a name="secret" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentials.property.secret"></a>
```typescript
public readonly secret: ISecret;
```
- *Type:* aws-cdk-lib.aws_secretsmanager.ISecret
The secret that contains the calculated AWS SES Smtp Credentials.
```typescript
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 <a name="Structs" id="Structs"></a>
### SesSmtpCredentialsProps <a name="SesSmtpCredentialsProps" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps"></a>
#### Initializer <a name="Initializer" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.Initializer"></a>
```typescript
import { SesSmtpCredentialsProps } from '@pepperize/cdk-ses-smtp-credentials'
const sesSmtpCredentialsProps: SesSmtpCredentialsProps = { ... }
```
#### Properties <a name="Properties" id="Properties"></a>
| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.passwordSecretKey">passwordSecretKey</a></code> | <code>string</code> | Optional, the key name to use in the secret to write the password to (defaults to Credentials.PASSWORD). |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.secret">secret</a></code> | <code>aws-cdk-lib.aws_secretsmanager.ISecret</code> | Optional, an SecretsManager secret to write the AWS SES Smtp credentials to. |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.user">user</a></code> | <code>aws-cdk-lib.aws_iam.IUser</code> | The user for which to create an AWS Access Key and to generate the smtp password. |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.userName">userName</a></code> | <code>string</code> | Optional, a username to create a new user if no existing user is given. |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.userNameSecretKey">userNameSecretKey</a></code> | <code>string</code> | Optional, the key name to use in the secret to write the username to (defaults to Credentials.USERNAME). |
##### `passwordSecretKey`<sup>Optional</sup> <a name="passwordSecretKey" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.passwordSecretKey"></a>
```typescript
public readonly passwordSecretKey: string;
```
- *Type:* string
Optional, the key name to use in the secret to write the password to (defaults to Credentials.PASSWORD).
##### `secret`<sup>Optional</sup> <a name="secret" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.secret"></a>
```typescript
public readonly secret: ISecret;
```
- *Type:* aws-cdk-lib.aws_secretsmanager.ISecret
Optional, an SecretsManager secret to write the AWS SES Smtp credentials to.
##### `user`<sup>Optional</sup> <a name="user" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.user"></a>
```typescript
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.
##### `userName`<sup>Optional</sup> <a name="userName" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.userName"></a>
```typescript
public readonly userName: string;
```
- *Type:* string
Optional, a username to create a new user if no existing user is given.
##### `userNameSecretKey`<sup>Optional</sup> <a name="userNameSecretKey" id="@pepperize/cdk-ses-smtp-credentials.SesSmtpCredentialsProps.property.userNameSecretKey"></a>
```typescript
public readonly userNameSecretKey: string;
```
- *Type:* string
Optional, the key name to use in the secret to write the username to (defaults to Credentials.USERNAME).
## Enums <a name="Enums" id="Enums"></a>
### Credentials <a name="Credentials" id="@pepperize/cdk-ses-smtp-credentials.Credentials"></a>
#### Members <a name="Members" id="Members"></a>
| **Name** | **Description** |
| --- | --- |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.Credentials.USERNAME">USERNAME</a></code> | The key of the username stored in the secretsmanager key/value json. |
| <code><a href="#@pepperize/cdk-ses-smtp-credentials.Credentials.PASSWORD">PASSWORD</a></code> | The key of the password stored in the secretsmanager key/value json. |
##### `USERNAME` <a name="USERNAME" id="@pepperize/cdk-ses-smtp-credentials.Credentials.USERNAME"></a>
The key of the username stored in the secretsmanager key/value json.
##### `PASSWORD` <a name="PASSWORD" id="@pepperize/cdk-ses-smtp-credentials.Credentials.PASSWORD"></a>
The key of the password stored in the secretsmanager key/value json.