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 {};