246 lines
7.2 KiB
TypeScript
246 lines
7.2 KiB
TypeScript
import type { Construct } from 'constructs';
|
|
import type { ITopic } from './topic-base';
|
|
import { TopicBase } from './topic-base';
|
|
import type { IRoleRef } from '../../aws-iam';
|
|
import type { IKey } from '../../aws-kms';
|
|
/**
|
|
* Properties for a new SNS topic
|
|
*/
|
|
export interface TopicProps {
|
|
/**
|
|
* A developer-defined string that can be used to identify this SNS topic.
|
|
*
|
|
* The display name must be maximum 100 characters long, including hyphens (-),
|
|
* underscores (_), spaces, and tabs.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly displayName?: string;
|
|
/**
|
|
* A name for the topic.
|
|
*
|
|
* If you don't specify a name, AWS CloudFormation generates a unique
|
|
* physical ID and uses that ID for the topic name. For more information,
|
|
* see Name Type.
|
|
*
|
|
* @default Generated name
|
|
*/
|
|
readonly topicName?: string;
|
|
/**
|
|
* A KMS Key, either managed by this CDK app, or imported.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly masterKey?: IKey;
|
|
/**
|
|
* Enables content-based deduplication for FIFO topics.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly contentBasedDeduplication?: boolean;
|
|
/**
|
|
* Set to true to create a FIFO topic.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly fifo?: boolean;
|
|
/**
|
|
* The list of delivery status logging configurations for the topic.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly loggingConfigs?: LoggingConfig[];
|
|
/**
|
|
* The number of days Amazon SNS retains messages.
|
|
*
|
|
* It can only be set for FIFO topics.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/fifo-message-archiving-replay.html
|
|
*
|
|
* @default - do not archive messages
|
|
*/
|
|
readonly messageRetentionPeriodInDays?: number;
|
|
/**
|
|
* Adds a statement to enforce encryption of data in transit when publishing to the topic.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-security-best-practices.html#enforce-encryption-data-in-transit.
|
|
*
|
|
* @default false
|
|
*/
|
|
readonly enforceSSL?: boolean;
|
|
/**
|
|
* The signature version corresponds to the hashing algorithm used while creating the signature of the notifications,
|
|
* subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html.
|
|
*
|
|
* @default 1
|
|
*/
|
|
readonly signatureVersion?: string;
|
|
/**
|
|
* Tracing mode of an Amazon SNS topic.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-active-tracing.html
|
|
*
|
|
* @default TracingConfig.PASS_THROUGH
|
|
*/
|
|
readonly tracingConfig?: TracingConfig;
|
|
/**
|
|
* Specifies the throughput quota and deduplication behavior to apply for the FIFO topic.
|
|
*
|
|
* You can only set this property when `fifo` is `true`.
|
|
*
|
|
* @default undefined - SNS default setting is FifoThroughputScope.TOPIC
|
|
*/
|
|
readonly fifoThroughputScope?: FifoThroughputScope;
|
|
}
|
|
/**
|
|
* The throughput quota and deduplication behavior to apply for the FIFO topic.
|
|
*/
|
|
export declare enum FifoThroughputScope {
|
|
/**
|
|
* Topic scope
|
|
* - Throughput: 3000 messages per second and a bandwidth of 20MB per second.
|
|
* - Deduplication: Message deduplication is verified on the entire FIFO topic.
|
|
*/
|
|
TOPIC = "Topic",
|
|
/**
|
|
* Message group scope
|
|
* - Throughput: Maximum regional limits.
|
|
* - Deduplication: Message deduplication is only verified within a message group.
|
|
*/
|
|
MESSAGE_GROUP = "MessageGroup"
|
|
}
|
|
/**
|
|
* A logging configuration for delivery status of messages sent from SNS topic to subscribed endpoints.
|
|
*
|
|
* @see https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html.
|
|
*/
|
|
export interface LoggingConfig {
|
|
/**
|
|
* Indicates one of the supported protocols for the SNS topic.
|
|
*/
|
|
readonly protocol: LoggingProtocol;
|
|
/**
|
|
* The IAM role to be used when logging failed message deliveries in Amazon CloudWatch.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly failureFeedbackRole?: IRoleRef;
|
|
/**
|
|
* The IAM role to be used when logging successful message deliveries in Amazon CloudWatch.
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly successFeedbackRole?: IRoleRef;
|
|
/**
|
|
* The percentage of successful message deliveries to be logged in Amazon CloudWatch.
|
|
*
|
|
* Valid values are integer between 0-100
|
|
*
|
|
* @default None
|
|
*/
|
|
readonly successFeedbackSampleRate?: number;
|
|
}
|
|
/**
|
|
* The type of supported protocol for delivery status logging.
|
|
*/
|
|
export declare enum LoggingProtocol {
|
|
/**
|
|
* HTTP
|
|
*/
|
|
HTTP = "http/s",
|
|
/**
|
|
* Amazon Simple Queue Service
|
|
*/
|
|
SQS = "sqs",
|
|
/**
|
|
* AWS Lambda
|
|
*/
|
|
LAMBDA = "lambda",
|
|
/**
|
|
* Amazon Data Firehose
|
|
*/
|
|
FIREHOSE = "firehose",
|
|
/**
|
|
* Platform application endpoint
|
|
*/
|
|
APPLICATION = "application"
|
|
}
|
|
/**
|
|
* The tracing mode of an Amazon SNS topic
|
|
*/
|
|
export declare enum TracingConfig {
|
|
/**
|
|
* The mode that topic passes trace headers received from the Amazon SNS publisher to its subscription.
|
|
*/
|
|
PASS_THROUGH = "PassThrough",
|
|
/**
|
|
* The mode that Amazon SNS vend X-Ray segment data to topic owner account if the sampled flag in the tracing header is true.
|
|
*/
|
|
ACTIVE = "Active"
|
|
}
|
|
/**
|
|
* Represents an SNS topic defined outside of this stack.
|
|
*/
|
|
export interface TopicAttributes {
|
|
/**
|
|
* The ARN of the SNS topic.
|
|
*/
|
|
readonly topicArn: string;
|
|
/**
|
|
* KMS encryption key, if this topic is server-side encrypted by a KMS key.
|
|
*
|
|
* @default - None
|
|
*/
|
|
readonly keyArn?: string;
|
|
/**
|
|
* Whether content-based deduplication is enabled.
|
|
* Only applicable for FIFO topics.
|
|
*
|
|
* @default false
|
|
*/
|
|
readonly contentBasedDeduplication?: boolean;
|
|
}
|
|
/**
|
|
* A new SNS topic
|
|
*/
|
|
export declare class Topic extends TopicBase {
|
|
/**
|
|
* Uniquely identifies this class.
|
|
*/
|
|
static readonly PROPERTY_INJECTION_ID: string;
|
|
/**
|
|
* Import an existing SNS topic provided an ARN
|
|
*
|
|
* @param scope The parent creating construct
|
|
* @param id The construct's name
|
|
* @param topicArn topic ARN (i.e. arn:aws:sns:us-east-2:444455556666:MyTopic)
|
|
*/
|
|
static fromTopicArn(scope: Construct, id: string, topicArn: string): ITopic;
|
|
/**
|
|
* Import an existing SNS topic provided a topic attributes
|
|
*
|
|
* @param scope The parent creating construct
|
|
* @param id The construct's name
|
|
* @param attrs the attributes of the topic to import
|
|
*/
|
|
static fromTopicAttributes(scope: Construct, id: string, attrs: TopicAttributes): ITopic;
|
|
get topicArn(): string;
|
|
get topicName(): string;
|
|
readonly masterKey?: IKey;
|
|
readonly contentBasedDeduplication: boolean;
|
|
readonly fifo: boolean;
|
|
protected readonly autoCreatePolicy: boolean;
|
|
private readonly _resource;
|
|
private readonly loggingConfigs;
|
|
constructor(scope: Construct, id: string, props?: TopicProps);
|
|
private renderLoggingConfigs;
|
|
/**
|
|
* Adds a delivery status logging configuration to the topic.
|
|
*/
|
|
addLoggingConfig(config: LoggingConfig): void;
|
|
}
|