aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
233 lines (232 loc) • 8.41 kB
TypeScript
import { Construct } from 'constructs';
import { IConfigurationSet } from './configuration-set';
import * as events from '../../aws-events';
import * as iam from '../../aws-iam';
import * as firehose from '../../aws-kinesisfirehose';
import * as sns from '../../aws-sns';
import { IResource, Resource } from '../../core';
/**
* A configuration set event destination
*/
export interface IConfigurationSetEventDestination extends IResource {
/**
* The ID of the configuration set event destination
*
* @attribute
*/
readonly configurationSetEventDestinationId: string;
}
/**
* Options for a configuration set event destination
*/
export interface ConfigurationSetEventDestinationOptions {
/**
* A name for the configuration set event destination
*
* @default - a CloudFormation generated name
*/
readonly configurationSetEventDestinationName?: string;
/**
* Whether Amazon SES publishes events to this destination
*
* @default true
*/
readonly enabled?: boolean;
/**
* The event destination
*/
readonly destination: EventDestination;
/**
* The type of email sending events to publish to the event destination
*
* @default - send all event types
*/
readonly events?: EmailSendingEvent[];
}
/**
* An event destination
*/
export declare abstract class EventDestination {
/**
* Use a SNS topic as event destination
*/
static snsTopic(topic: sns.ITopic): EventDestination;
/**
* Use CloudWatch dimensions as event destination
*/
static cloudWatchDimensions(dimensions: CloudWatchDimension[]): EventDestination;
/**
* Use Event Bus as event destination
*/
static eventBus(eventBus: events.IEventBus): EventDestination;
/**
* Use Firehose Delivery Stream as event destination
*/
static firehoseDeliveryStream(stream: FirehoseDeliveryStreamDestination): EventDestination;
/**
* A SNS topic to use as event destination
*
* @default - do not send events to a SNS topic
*/
abstract readonly topic?: sns.ITopic;
/**
* A list of CloudWatch dimensions upon which to categorize your emails
*
* @default - do not send events to CloudWatch
*/
abstract readonly dimensions?: CloudWatchDimension[];
/**
* Use Event Bus as event destination
*
* @default - do not send events to Event bus
*/
abstract readonly bus?: events.IEventBus;
/**
* Use Firehose Delivery Stream
*
* @default - do not send events to Firehose Delivery Stream
*/
abstract readonly stream?: FirehoseDeliveryStreamDestination;
}
/**
* Properties for a configuration set event destination
*/
export interface ConfigurationSetEventDestinationProps extends ConfigurationSetEventDestinationOptions {
/**
* The configuration set that contains the event destination.
*/
readonly configurationSet: IConfigurationSet;
}
/**
* Email sending event
*/
export declare enum EmailSendingEvent {
/**
* The send request was successful and SES will attempt to deliver the message
* to the recipient's mail server. (If account-level or global suppression is
* being used, SES will still count it as a send, but delivery is suppressed.)
*/
SEND = "send",
/**
* SES accepted the email, but determined that it contained a virus and didn’t
* attempt to deliver it to the recipient’s mail server.
*/
REJECT = "reject",
/**
* (Hard bounce) The recipient's mail server permanently rejected the email.
* (Soft bounces are only included when SES fails to deliver the email after
* retrying for a period of time.)
*/
BOUNCE = "bounce",
/**
* The email was successfully delivered to the recipient’s mail server, but the
* recipient marked it as spam.
*/
COMPLAINT = "complaint",
/**
* SES successfully delivered the email to the recipient's mail server.
*/
DELIVERY = "delivery",
/**
* The recipient received the message and opened it in their email client.
*/
OPEN = "open",
/**
* The recipient clicked one or more links in the email.
*/
CLICK = "click",
/**
* The email wasn't sent because of a template rendering issue. This event type
* can occur when template data is missing, or when there is a mismatch between
* template parameters and data. (This event type only occurs when you send email
* using the `SendTemplatedEmail` or `SendBulkTemplatedEmail` API operations.)
*/
RENDERING_FAILURE = "renderingFailure",
/**
* The email couldn't be delivered to the recipient’s mail server because a temporary
* issue occurred. Delivery delays can occur, for example, when the recipient's inbox
* is full, or when the receiving email server experiences a transient issue.
*/
DELIVERY_DELAY = "deliveryDelay",
/**
* The email was successfully delivered, but the recipient updated their subscription
* preferences by clicking on an unsubscribe link as part of your subscription management.
*/
SUBSCRIPTION = "subscription"
}
/**
* A CloudWatch dimension upon which to categorize your emails
*/
export interface CloudWatchDimension {
/**
* The place where Amazon SES finds the value of a dimension to publish to
* Amazon CloudWatch.
*/
readonly source: CloudWatchDimensionSource;
/**
* The name of an Amazon CloudWatch dimension associated with an email sending metric.
*/
readonly name: string;
/**
* The default value of the dimension that is published to Amazon CloudWatch
* if you do not provide the value of the dimension when you send an email.
*/
readonly defaultValue: string;
}
/**
* Source for CloudWatch dimension
*/
export declare enum CloudWatchDimensionSource {
/**
* Amazon SES retrieves the dimension name and value from a header in the email.
*
* Note: You can't use any of the following email headers as the Dimension Name:
* `Received`, `To`, `From`, `DKIM-Signature`, `CC`, `message-id`, or `Return-Path`.
*/
EMAIL_HEADER = "emailHeader",
/**
* Amazon SES retrieves the dimension name and value from a tag that you specified in a link.
*
* @see https://docs.aws.amazon.com/ses/latest/dg/faqs-metrics.html#sending-metric-faqs-clicks-q5
*/
LINK_TAG = "linkTag",
/**
* Amazon SES retrieves the dimension name and value from a tag that you specify by using the
* `X-SES-MESSAGE-TAGS` header or the Tags API parameter.
*
* You can also use the Message Tag value source to create dimensions based on Amazon SES auto-tags.
* To use an auto-tag, type the complete name of the auto-tag as the Dimension Name. For example,
* to create a dimension based on the configuration set auto-tag, use `ses:configuration-set` for the
* Dimension Name, and the name of the configuration set for the Default Value.
*
* @see https://docs.aws.amazon.com/ses/latest/dg/event-publishing-send-email.html
* @see https://docs.aws.amazon.com/ses/latest/dg/monitor-using-event-publishing.html#event-publishing-how-works
*/
MESSAGE_TAG = "messageTag"
}
/**
* An object that defines an Amazon Data Firehose destination for email events
*/
export interface FirehoseDeliveryStreamDestination {
/**
* The Amazon Data Firehose stream that the Amazon SES API v2 sends email events to.
*/
readonly deliveryStream: firehose.IDeliveryStream;
/**
* The IAM role that the Amazon SES API v2 uses to send email events to the Amazon Data Firehose stream.
*
* @default - Create IAM Role for Amazon Data Firehose Delivery stream
*/
readonly role?: iam.IRole;
}
/**
* A configuration set event destination
*/
export declare class ConfigurationSetEventDestination extends Resource implements IConfigurationSetEventDestination {
/**
* Use an existing configuration set
*/
static fromConfigurationSetEventDestinationId(scope: Construct, id: string, configurationSetEventDestinationId: string): IConfigurationSetEventDestination;
readonly configurationSetEventDestinationId: string;
constructor(scope: Construct, id: string, props: ConfigurationSetEventDestinationProps);
}