@aws-cdk/aws-sqs
Version:
The CDK Construct Library for AWS::SQS
261 lines (260 loc) • 8.5 kB
TypeScript
import * as kms from '@aws-cdk/aws-kms';
import { Duration, RemovalPolicy } from '@aws-cdk/core';
import { Construct } from 'constructs';
import { IQueue, QueueAttributes, QueueBase } from './queue-base';
/**
* Properties for creating a new Queue
*/
export interface QueueProps {
/**
* A name for the queue.
*
* If specified and this is a FIFO queue, must end in the string '.fifo'.
*
* @default CloudFormation-generated name
*/
readonly queueName?: string;
/**
* The number of seconds that Amazon SQS retains a message.
*
* You can specify an integer value from 60 seconds (1 minute) to 1209600
* seconds (14 days). The default value is 345600 seconds (4 days).
*
* @default Duration.days(4)
*/
readonly retentionPeriod?: Duration;
/**
* The time in seconds that the delivery of all messages in the queue is delayed.
*
* You can specify an integer value of 0 to 900 (15 minutes). The default
* value is 0.
*
* @default 0
*/
readonly deliveryDelay?: Duration;
/**
* The limit of how many bytes that a message can contain before Amazon SQS rejects it.
*
* You can specify an integer value from 1024 bytes (1 KiB) to 262144 bytes
* (256 KiB). The default value is 262144 (256 KiB).
*
* @default 256KiB
*/
readonly maxMessageSizeBytes?: number;
/**
* Default wait time for ReceiveMessage calls.
*
* Does not wait if set to 0, otherwise waits this amount of seconds
* by default for messages to arrive.
*
* For more information, see Amazon SQS Long Poll.
*
* @default 0
*/
readonly receiveMessageWaitTime?: Duration;
/**
* Timeout of processing a single message.
*
* After dequeuing, the processor has this much time to handle the message
* and delete it from the queue before it becomes visible again for dequeueing
* by another processor.
*
* Values must be from 0 to 43200 seconds (12 hours). If you don't specify
* a value, AWS CloudFormation uses the default value of 30 seconds.
*
* @default Duration.seconds(30)
*/
readonly visibilityTimeout?: Duration;
/**
* Send messages to this queue if they were unsuccessfully dequeued a number of times.
*
* @default no dead-letter queue
*/
readonly deadLetterQueue?: DeadLetterQueue;
/**
* Whether the contents of the queue are encrypted, and by what type of key.
*
* Be aware that encryption is not available in all regions, please see the docs
* for current availability details.
*
* @default Unencrypted
*/
readonly encryption?: QueueEncryption;
/**
* External KMS master key to use for queue encryption.
*
* Individual messages will be encrypted using data keys. The data keys in
* turn will be encrypted using this key, and reused for a maximum of
* `dataKeyReuseSecs` seconds.
*
* If the 'encryptionMasterKey' property is set, 'encryption' type will be
* implicitly set to "KMS".
*
* @default If encryption is set to KMS and not specified, a key will be created.
*/
readonly encryptionMasterKey?: kms.IKey;
/**
* The length of time that Amazon SQS reuses a data key before calling KMS again.
*
* The value must be an integer between 60 (1 minute) and 86,400 (24
* hours). The default is 300 (5 minutes).
*
* @default Duration.minutes(5)
*/
readonly dataKeyReuse?: Duration;
/**
* Whether this a first-in-first-out (FIFO) queue.
*
* @default false, unless queueName ends in '.fifo' or 'contentBasedDeduplication' is true.
*/
readonly fifo?: boolean;
/**
* Specifies whether to enable content-based deduplication.
*
* During the deduplication interval (5 minutes), Amazon SQS treats
* messages that are sent with identical content (excluding attributes) as
* duplicates and delivers only one copy of the message.
*
* If you don't enable content-based deduplication and you want to deduplicate
* messages, provide an explicit deduplication ID in your SendMessage() call.
*
* (Only applies to FIFO queues.)
*
* @default false
*/
readonly contentBasedDeduplication?: boolean;
/**
* For high throughput for FIFO queues, specifies whether message deduplication
* occurs at the message group or queue level.
*
* (Only applies to FIFO queues.)
*
* @default DeduplicationScope.QUEUE
*/
readonly deduplicationScope?: DeduplicationScope;
/**
* For high throughput for FIFO queues, specifies whether the FIFO queue
* throughput quota applies to the entire queue or per message group.
*
* (Only applies to FIFO queues.)
*
* @default FifoThroughputLimit.PER_QUEUE
*/
readonly fifoThroughputLimit?: FifoThroughputLimit;
/**
* Policy to apply when the queue is removed from the stack
*
* Even though queues are technically stateful, their contents are transient and it
* is common to add and remove Queues while rearchitecting your application. The
* default is therefore `DESTROY`. Change it to `RETAIN` if the messages are so
* valuable that accidentally losing them would be unacceptable.
*
* @default RemovalPolicy.DESTROY
*/
readonly removalPolicy?: RemovalPolicy;
}
/**
* Dead letter queue settings
*/
export interface DeadLetterQueue {
/**
* The dead-letter queue to which Amazon SQS moves messages after the value of maxReceiveCount is exceeded.
*/
readonly queue: IQueue;
/**
* The number of times a message can be unsuccesfully dequeued before being moved to the dead-letter queue.
*/
readonly maxReceiveCount: number;
}
/**
* What kind of encryption to apply to this queue
*/
export declare enum QueueEncryption {
/**
* Messages in the queue are not encrypted
*/
UNENCRYPTED = "NONE",
/**
* Server-side KMS encryption with a master key managed by SQS.
*/
KMS_MANAGED = "MANAGED",
/**
* Server-side encryption with a KMS key managed by the user.
*
* If `encryptionKey` is specified, this key will be used, otherwise, one will be defined.
*/
KMS = "KMS"
}
/**
* What kind of deduplication scope to apply
*/
export declare enum DeduplicationScope {
/**
* Deduplication occurs at the message group level
*/
MESSAGE_GROUP = "messageGroup",
/**
* Deduplication occurs at the message queue level
*/
QUEUE = "queue"
}
/**
* Whether the FIFO queue throughput quota applies to the entire queue or per message group
*/
export declare enum FifoThroughputLimit {
/**
* Throughput quota applies per queue
*/
PER_QUEUE = "perQueue",
/**
* Throughput quota applies per message group id
*/
PER_MESSAGE_GROUP_ID = "perMessageGroupId"
}
/**
* A new Amazon SQS queue
*/
export declare class Queue extends QueueBase {
/**
* Import an existing SQS queue provided an ARN
*
* @param scope The parent creating construct
* @param id The construct's name
* @param queueArn queue ARN (i.e. arn:aws:sqs:us-east-2:444455556666:queue1)
*/
static fromQueueArn(scope: Construct, id: string, queueArn: string): IQueue;
/**
* Import an existing queue
*/
static fromQueueAttributes(scope: Construct, id: string, attrs: QueueAttributes): IQueue;
/**
* The ARN of this queue
*/
readonly queueArn: string;
/**
* The name of this queue
*/
readonly queueName: string;
/**
* The URL of this queue
*/
readonly queueUrl: string;
/**
* If this queue is encrypted, this is the KMS key.
*/
readonly encryptionMasterKey?: kms.IKey;
/**
* Whether this queue is an Amazon SQS FIFO queue. If false, this is a standard queue.
*/
readonly fifo: boolean;
/**
* If this queue is configured with a dead-letter queue, this is the dead-letter queue settings.
*/
readonly deadLetterQueue?: DeadLetterQueue;
protected readonly autoCreatePolicy = true;
constructor(scope: Construct, id: string, props?: QueueProps);
/**
* Look at the props, see if the FIFO props agree, and return the correct subset of props
*/
private determineFifoProps;
}