237 lines
8.6 KiB
TypeScript
237 lines
8.6 KiB
TypeScript
import type { Construct } from 'constructs';
|
||
import type * as events from '../../aws-events';
|
||
import * as iam from '../../aws-iam';
|
||
import type * as firehose from '../../aws-kinesisfirehose';
|
||
import type * as sns from '../../aws-sns';
|
||
import type { IResource } from '../../core';
|
||
import { Resource } from '../../core';
|
||
import type { IConfigurationSetRef, IConfigurationSetEventDestinationRef, ConfigurationSetEventDestinationReference } from '../../interfaces/generated/aws-ses-interfaces.generated';
|
||
/**
|
||
* A configuration set event destination
|
||
*/
|
||
export interface IConfigurationSetEventDestination extends IResource, IConfigurationSetEventDestinationRef {
|
||
/**
|
||
* 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.IEventBusRef): 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.IEventBusRef;
|
||
/**
|
||
* 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: IConfigurationSetRef;
|
||
}
|
||
/**
|
||
* 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 {
|
||
/** Uniquely identifies this class. */
|
||
static readonly PROPERTY_INJECTION_ID: string;
|
||
/**
|
||
* Use an existing configuration set
|
||
*/
|
||
static fromConfigurationSetEventDestinationId(scope: Construct, id: string, configurationSetEventDestinationId: string): IConfigurationSetEventDestination;
|
||
readonly configurationSetEventDestinationId: string;
|
||
get configurationSetEventDestinationRef(): ConfigurationSetEventDestinationReference;
|
||
constructor(scope: Construct, id: string, props: ConfigurationSetEventDestinationProps);
|
||
}
|