aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
341 lines (340 loc) • 10 kB
TypeScript
import { Construct } from 'constructs';
import { IConfigurationSet } from './configuration-set';
import { Grant, IGrantable } from '../../aws-iam';
import { IPublicHostedZone } from '../../aws-route53';
import * as route53 from '../../aws-route53';
import { IResource, Resource, SecretValue } from '../../core';
/**
* An email identity
*/
export interface IEmailIdentity extends IResource {
/**
* The name of the email identity
*
* @attribute
*/
readonly emailIdentityName: string;
/**
* The ARN of the email identity
*
* @attribute
*/
readonly emailIdentityArn: string;
/**
* Adds an IAM policy statement associated with this email identity to an IAM principal's policy.
*
* @param grantee the principal (no-op if undefined)
* @param actions the set of actions to allow
*/
grant(grantee: IGrantable, ...actions: string[]): Grant;
/**
* Permits an IAM principal the send email action.
*
* Actions: SendEmail.
*
* @param grantee the principal to grant access to
*/
grantSendEmail(grantee: IGrantable): Grant;
}
/**
* Properties for an email identity
*/
export interface EmailIdentityProps {
/**
* The email address or domain to verify.
*/
readonly identity: Identity;
/**
* The configuration set to associate with the email identity
*
* @default - do not use a specific configuration set
*/
readonly configurationSet?: IConfigurationSet;
/**
* Whether the messages that are sent from the identity are signed using DKIM
*
* @default true
*/
readonly dkimSigning?: boolean;
/**
* The type of DKIM identity to use
*
* @default - Easy DKIM with a key length of 2048-bit
*/
readonly dkimIdentity?: DkimIdentity;
/**
* Whether to receive email notifications when bounce or complaint events occur.
* These notifications are sent to the address that you specified in the `Return-Path`
* header of the original email.
*
* You're required to have a method of tracking bounces and complaints. If you haven't set
* up another mechanism for receiving bounce or complaint notifications (for example, by
* setting up an event destination), you receive an email notification when these events
* occur (even if this setting is disabled).
*
* @default true
*/
readonly feedbackForwarding?: boolean;
/**
* The custom MAIL FROM domain that you want the verified identity to use. The MAIL FROM domain
* must meet the following criteria:
* - It has to be a subdomain of the verified identity
* - It can't be used to receive email
* - It can't be used in a "From" address if the MAIL FROM domain is a destination for feedback
* forwarding emails
*
* @default - use amazonses.com
*/
readonly mailFromDomain?: string;
/**
* The action to take if the required MX record for the MAIL FROM domain isn't
* found when you send an email
*
* @default MailFromBehaviorOnMxFailure.USE_DEFAULT_VALUE
*/
readonly mailFromBehaviorOnMxFailure?: MailFromBehaviorOnMxFailure;
}
/**
* Identity
*/
export declare abstract class Identity {
/**
* Verify an email address
*
* To complete the verification process look for an email from
* no-reply-aws@amazon.com, open it and click the link.
*/
static email(email: string): Identity;
/**
* Verify a domain name
*
* DKIM records will have to be added manually to complete the verification
* process
*/
static domain(domain: string): Identity;
/**
* Verify a public hosted zone
*
* DKIM and MAIL FROM records will be added automatically to the hosted
* zone
*/
static publicHostedZone(hostedZone: IPublicHostedZone): Identity;
/**
* The value of the identity
*/
abstract readonly value: string;
/**
* The hosted zone associated with this identity
*
* @default - no hosted zone is associated and no records are created
*/
abstract readonly hostedZone?: IPublicHostedZone;
}
/**
* The action to take if the required MX record for the MAIL FROM domain isn't
* found
*/
export declare enum MailFromBehaviorOnMxFailure {
/**
* The mail is sent using amazonses.com as the MAIL FROM domain
*/
USE_DEFAULT_VALUE = "USE_DEFAULT_VALUE",
/**
* The Amazon SES API v2 returns a `MailFromDomainNotVerified` error and doesn't
* attempt to deliver the email
*/
REJECT_MESSAGE = "REJECT_MESSAGE"
}
/**
* Configuration for DKIM identity
*/
export interface DkimIdentityConfig {
/**
* A private key that's used to generate a DKIM signature
*
* @default - use Easy DKIM
*/
readonly domainSigningPrivateKey?: string;
/**
* A string that's used to identify a public key in the DNS configuration for
* a domain
*
* @default - use Easy DKIM
*/
readonly domainSigningSelector?: string;
/**
* The key length of the future DKIM key pair to be generated. This can be changed
* at most once per day.
*
* @default EasyDkimSigningKeyLength.RSA_2048_BIT
*/
readonly nextSigningKeyLength?: EasyDkimSigningKeyLength;
}
/**
* The identity to use for DKIM
*/
export declare abstract class DkimIdentity {
/**
* Easy DKIM
*
* @param signingKeyLength The length of the signing key. This can be changed at
* most once per day.
*
* @see https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-dkim-easy.html
*/
static easyDkim(signingKeyLength?: EasyDkimSigningKeyLength): DkimIdentity;
/**
* Bring Your Own DKIM
*
* @param options Options for BYO DKIM
*
* @see https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-dkim-bring-your-own.html
*/
static byoDkim(options: ByoDkimOptions): DkimIdentity;
/**
* Binds this DKIM identity to the email identity
*/
abstract bind(emailIdentity: EmailIdentity, hostedZone?: route53.IPublicHostedZone): DkimIdentityConfig | undefined;
}
/**
* Options for BYO DKIM
*/
export interface ByoDkimOptions {
/**
* The private key that's used to generate a DKIM signature
*/
readonly privateKey: SecretValue;
/**
* A string that's used to identify a public key in the DNS configuration for
* a domain
*/
readonly selector: string;
/**
* The public key. If specified, a TXT record with the public key is created.
*
* @default - the validation TXT record with the public key is not created
*/
readonly publicKey?: string;
}
/**
* The signing key length for Easy DKIM
*/
export declare enum EasyDkimSigningKeyLength {
/**
* RSA 1024-bit
*/
RSA_1024_BIT = "RSA_1024_BIT",
/**
* RSA 2048-bit
*/
RSA_2048_BIT = "RSA_2048_BIT"
}
declare abstract class EmailIdentityBase extends Resource implements IEmailIdentity {
/**
* The name of the email identity
*
* @attribute
*/
abstract readonly emailIdentityName: string;
/**
* The ARN of the email identity
*
* @attribute
*/
abstract readonly emailIdentityArn: string;
/**
* Adds an IAM policy statement associated with this email identity to an IAM principal's policy.
*
* @param grantee the principal (no-op if undefined)
* @param actions the set of actions to allow
*/
grant(grantee: IGrantable, ...actions: string[]): Grant;
/**
* Permits an IAM principal the send email action.
*
* Actions: SendEmail, SendRawEmail.
*
* @param grantee the principal to grant access to
*/
grantSendEmail(grantee: IGrantable): Grant;
}
/**
* An email identity
*/
export declare class EmailIdentity extends EmailIdentityBase {
/**
* Uniquely identifies this class.
*/
static readonly PROPERTY_INJECTION_ID: string;
/**
* Use an existing email identity
*/
static fromEmailIdentityName(scope: Construct, id: string, emailIdentityName: string): IEmailIdentity;
/**
* Import an email identity by ARN
*/
static fromEmailIdentityArn(scope: Construct, id: string, emailIdentityArn: string): IEmailIdentity;
readonly emailIdentityName: string;
readonly emailIdentityArn: string;
/**
* The host name for the first token that you have to add to the
* DNS configurationfor your domain
*
* @attribute
*/
readonly dkimDnsTokenName1: string;
/**
* The host name for the second token that you have to add to the
* DNS configuration for your domain
*
* @attribute
*/
readonly dkimDnsTokenName2: string;
/**
* The host name for the third token that you have to add to the
* DNS configuration for your domain
*
* @attribute
*/
readonly dkimDnsTokenName3: string;
/**
* The record value for the first token that you have to add to the
* DNS configuration for your domain
*
* @attribute
*/
readonly dkimDnsTokenValue1: string;
/**
* The record value for the second token that you have to add to the
* DNS configuration for your domain
*
* @attribute
*/
readonly dkimDnsTokenValue2: string;
/**
* The record value for the third token that you have to add to the
* DNS configuration for your domain
*
* @attribute
*/
readonly dkimDnsTokenValue3: string;
/**
* DKIM records for this identity
*/
readonly dkimRecords: DkimRecord[];
constructor(scope: Construct, id: string, props: EmailIdentityProps);
}
/**
* A DKIM record
*/
export interface DkimRecord {
/**
* The name of the record
*/
readonly name: string;
/**
* The value of the record
*/
readonly value: string;
}
export {};