import { IQueue } from '@aws-cdk/aws-sqs'; import { Resource } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { SubscriptionFilter } from './subscription-filter'; import { ITopic } from './topic-base'; /** * Options for creating a new subscription */ export interface SubscriptionOptions { /** * What type of subscription to add. */ readonly protocol: SubscriptionProtocol; /** * The subscription endpoint. * * The meaning of this value depends on the value for 'protocol'. */ readonly endpoint: string; /** * true if raw message delivery is enabled for the subscription. Raw messages are free of JSON formatting and can be * sent to HTTP/S and Amazon SQS endpoints. For more information, see GetSubscriptionAttributes in the Amazon Simple * Notification Service API Reference. * * @default false */ readonly rawMessageDelivery?: boolean; /** * The filter policy. * * @default - all messages are delivered */ readonly filterPolicy?: { [attribute: string]: SubscriptionFilter; }; /** * The region where the topic resides, in the case of cross-region subscriptions * @link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-subscription-region * @default - the region where the CloudFormation stack is being deployed. */ readonly region?: string; /** * Queue to be used as dead letter queue. * If not passed no dead letter queue is enabled. * * @default - No dead letter queue enabled. */ readonly deadLetterQueue?: IQueue; /** * Arn of role allowing access to firehose delivery stream. * Required for a firehose subscription protocol. * @default - No subscription role is provided */ readonly subscriptionRoleArn?: string; } /** * Properties for creating a new subscription */ export interface SubscriptionProps extends SubscriptionOptions { /** * The topic to subscribe to. */ readonly topic: ITopic; } /** * A new subscription. * * Prefer to use the `ITopic.addSubscription()` methods to create instances of * this class. */ export declare class Subscription extends Resource { /** * The DLQ associated with this subscription if present. */ readonly deadLetterQueue?: IQueue; private readonly filterPolicy?; constructor(scope: Construct, id: string, props: SubscriptionProps); private buildDeadLetterQueue; private buildDeadLetterConfig; } /** * The type of subscription, controlling the type of the endpoint parameter. */ export declare enum SubscriptionProtocol { /** * JSON-encoded message is POSTED to an HTTP url. */ HTTP = "http", /** * JSON-encoded message is POSTed to an HTTPS url. */ HTTPS = "https", /** * Notifications are sent via email. */ EMAIL = "email", /** * Notifications are JSON-encoded and sent via mail. */ EMAIL_JSON = "email-json", /** * Notification is delivered by SMS */ SMS = "sms", /** * Notifications are enqueued into an SQS queue. */ SQS = "sqs", /** * JSON-encoded notifications are sent to a mobile app endpoint. */ APPLICATION = "application", /** * Notifications trigger a Lambda function. */ LAMBDA = "lambda", /** * Notifications put records into a firehose delivery stream. */ FIREHOSE = "firehose" }