agent-claw: automated task changes

This commit is contained in:
daniel
2026-05-06 18:55:16 -05:00
parent 38905bb1e9
commit 732b00fb66
8494 changed files with 2018127 additions and 4 deletions

7
cdk/node_modules/aws-cdk-lib/aws-sqs/lib/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,7 @@
import './private/grants';
export * from './policy';
export * from './queue';
export * from './queue-base';
export * from './sqs.generated';
export * from './sqs-grants.generated';
import './sqs-augmentations.generated';

1
cdk/node_modules/aws-cdk-lib/aws-sqs/lib/index.js generated vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__exportStar=exports&&exports.__exportStar||function(m,exports2){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports2,p)&&__createBinding(exports2,m,p)};Object.defineProperty(exports,"__esModule",{value:!0}),require("./private/grants");var _noFold;exports.QueuePolicy=void 0,Object.defineProperty(exports,_noFold="QueuePolicy",{enumerable:!0,configurable:!0,get:()=>{var value=require("./policy").QueuePolicy;return Object.defineProperty(exports,_noFold="QueuePolicy",{enumerable:!0,configurable:!0,value}),value}}),exports.DeduplicationScope=void 0,Object.defineProperty(exports,_noFold="DeduplicationScope",{enumerable:!0,configurable:!0,get:()=>{var value=require("./queue").DeduplicationScope;return Object.defineProperty(exports,_noFold="DeduplicationScope",{enumerable:!0,configurable:!0,value}),value}}),exports.FifoThroughputLimit=void 0,Object.defineProperty(exports,_noFold="FifoThroughputLimit",{enumerable:!0,configurable:!0,get:()=>{var value=require("./queue").FifoThroughputLimit;return Object.defineProperty(exports,_noFold="FifoThroughputLimit",{enumerable:!0,configurable:!0,value}),value}}),exports.RedrivePermission=void 0,Object.defineProperty(exports,_noFold="RedrivePermission",{enumerable:!0,configurable:!0,get:()=>{var value=require("./queue").RedrivePermission;return Object.defineProperty(exports,_noFold="RedrivePermission",{enumerable:!0,configurable:!0,value}),value}}),exports.Queue=void 0,Object.defineProperty(exports,_noFold="Queue",{enumerable:!0,configurable:!0,get:()=>{var value=require("./queue").Queue;return Object.defineProperty(exports,_noFold="Queue",{enumerable:!0,configurable:!0,value}),value}}),exports.QueueBase=void 0,Object.defineProperty(exports,_noFold="QueueBase",{enumerable:!0,configurable:!0,get:()=>{var value=require("./queue-base").QueueBase;return Object.defineProperty(exports,_noFold="QueueBase",{enumerable:!0,configurable:!0,value}),value}}),exports.QueueEncryption=void 0,Object.defineProperty(exports,_noFold="QueueEncryption",{enumerable:!0,configurable:!0,get:()=>{var value=require("./queue-base").QueueEncryption;return Object.defineProperty(exports,_noFold="QueueEncryption",{enumerable:!0,configurable:!0,value}),value}}),exports.CfnQueue=void 0,Object.defineProperty(exports,_noFold="CfnQueue",{enumerable:!0,configurable:!0,get:()=>{var value=require("./sqs.generated").CfnQueue;return Object.defineProperty(exports,_noFold="CfnQueue",{enumerable:!0,configurable:!0,value}),value}}),exports.CfnQueueInlinePolicy=void 0,Object.defineProperty(exports,_noFold="CfnQueueInlinePolicy",{enumerable:!0,configurable:!0,get:()=>{var value=require("./sqs.generated").CfnQueueInlinePolicy;return Object.defineProperty(exports,_noFold="CfnQueueInlinePolicy",{enumerable:!0,configurable:!0,value}),value}}),exports.CfnQueuePolicy=void 0,Object.defineProperty(exports,_noFold="CfnQueuePolicy",{enumerable:!0,configurable:!0,get:()=>{var value=require("./sqs.generated").CfnQueuePolicy;return Object.defineProperty(exports,_noFold="CfnQueuePolicy",{enumerable:!0,configurable:!0,value}),value}}),exports.QueueGrants=void 0,Object.defineProperty(exports,_noFold="QueueGrants",{enumerable:!0,configurable:!0,get:()=>{var value=require("./sqs-grants.generated").QueueGrants;return Object.defineProperty(exports,_noFold="QueueGrants",{enumerable:!0,configurable:!0,value}),value}}),require("./sqs-augmentations.generated");

44
cdk/node_modules/aws-cdk-lib/aws-sqs/lib/policy.d.ts generated vendored Normal file
View File

@@ -0,0 +1,44 @@
import type { Construct } from 'constructs';
import type { IQueue } from './queue-base';
import { PolicyDocument } from '../../aws-iam';
import { Resource } from '../../core';
/**
* Properties to associate SQS queues with a policy
*/
export interface QueuePolicyProps {
/**
* The set of queues this policy applies to.
*/
readonly queues: IQueue[];
}
/**
* The policy for an SQS Queue
*
* Policies define the operations that are allowed on this resource.
*
* You almost never need to define this construct directly.
*
* All AWS resources that support resource policies have a method called
* `addToResourcePolicy()`, which will automatically create a new resource
* policy if one doesn't exist yet, otherwise it will add to the existing
* policy.
*
* Prefer to use `addToResourcePolicy()` instead.
*/
export declare class QueuePolicy extends Resource {
/** Uniquely identifies this class. */
static readonly PROPERTY_INJECTION_ID: string;
/**
* The IAM policy document for this policy.
*/
readonly document: PolicyDocument;
constructor(scope: Construct, id: string, props: QueuePolicyProps);
/**
* Not currently supported by AWS CloudFormation.
*
* This attribute temporarily existed in CloudFormation, and then was removed again.
*
* @attribute
*/
get queuePolicyId(): string;
}

1
cdk/node_modules/aws-cdk-lib/aws-sqs/lib/policy.js generated vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";var __esDecorate=exports&&exports.__esDecorate||function(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f){if(f!==void 0&&typeof f!="function")throw new TypeError("Function expected");return f}for(var kind=contextIn.kind,key=kind==="getter"?"get":kind==="setter"?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),_,done=!1,i=decorators.length-1;i>=0;i--){var context={};for(var p in contextIn)context[p]=p==="access"?{}:contextIn[p];for(var p in contextIn.access)context.access[p]=contextIn.access[p];context.addInitializer=function(f){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f||null))};var result=(0,decorators[i])(kind==="accessor"?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if(kind==="accessor"){if(result===void 0)continue;if(result===null||typeof result!="object")throw new TypeError("Object expected");(_=accept(result.get))&&(descriptor.get=_),(_=accept(result.set))&&(descriptor.set=_),(_=accept(result.init))&&initializers.unshift(_)}else(_=accept(result))&&(kind==="field"?initializers.unshift(_):descriptor[key]=_)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0},__runInitializers=exports&&exports.__runInitializers||function(thisArg,initializers,value){for(var useValue=arguments.length>2,i=0;i<initializers.length;i++)value=useValue?initializers[i].call(thisArg,value):initializers[i].call(thisArg);return useValue?value:void 0};Object.defineProperty(exports,"__esModule",{value:!0}),exports.QueuePolicy=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var sqs_generated_1=()=>{var tmp=require("./sqs.generated");return sqs_generated_1=()=>tmp,tmp},aws_iam_1=()=>{var tmp=require("../../aws-iam");return aws_iam_1=()=>tmp,tmp},core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp},errors_1=()=>{var tmp=require("../../core/lib/errors");return errors_1=()=>tmp,tmp},metadata_resource_1=()=>{var tmp=require("../../core/lib/metadata-resource");return metadata_resource_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp},prop_injectable_1=()=>{var tmp=require("../../core/lib/prop-injectable");return prop_injectable_1=()=>tmp,tmp};let QueuePolicy=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=core_1().Resource;var QueuePolicy2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),QueuePolicy2=_classThis=_classDescriptor.value,_metadata&&Object.defineProperty(_classThis,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_sqs.QueuePolicy",version:"2.252.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-sqs.QueuePolicy";document=new(aws_iam_1()).PolicyDocument;constructor(scope,id,props){super(scope,id);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_sqs_QueuePolicyProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,QueuePolicy2),error}(0,metadata_resource_1().addConstructMetadata)(this,props),new(sqs_generated_1()).CfnQueuePolicy(this,"Resource",{policyDocument:this.document,queues:props.queues.map(q=>q.queueUrl)})}get queuePolicyId(){throw new(errors_1()).ValidationError((0,literal_string_1().lit)`QueuePolicyQueuePolicyId`,"QueuePolicy.queuePolicyId has been removed from CloudFormation",this)}static{__runInitializers(_classThis,_classExtraInitializers)}};return QueuePolicy2=_classThis})();exports.QueuePolicy=QueuePolicy;

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var aws_iam_1=()=>{var tmp=require("../../../aws-iam");return aws_iam_1=()=>tmp,tmp},aws_kms_1=()=>{var tmp=require("../../../aws-kms");return aws_kms_1=()=>tmp,tmp},cfn_key_matcher_1=()=>{var tmp=require("../../../aws-kms/lib/private/cfn-key-matcher");return cfn_key_matcher_1=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp},helpers_internal_1=()=>{var tmp=require("../../../core/lib/helpers-internal");return helpers_internal_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp},sqs_generated_1=()=>{var tmp=require("../sqs.generated");return sqs_generated_1=()=>tmp,tmp};class QueueWithPolicyFactory{forResource(resource){return ifCfnQueue(resource,r=>new CfnQueueWithPolicy(r))}}class CfnQueueWithPolicy{queue;env;policy;policyDocument;constructor(queue){this.queue=queue,this.env=queue.env}addToResourcePolicy(statement){return this.policy||(this.policy=new(sqs_generated_1()).CfnQueuePolicy(this.queue,"QueuePolicy",{queues:[this.queue.ref],policyDocument:{Statement:[]}})),this.policyDocument||(this.policyDocument=aws_iam_1().PolicyDocument.fromJson(this.policy.policyDocument??{Statement:[]})),this.policyDocument.addStatements(statement),this.policy.policyDocument=this.policyDocument.toJSON(),{statementAdded:!0,policyDependable:this.policy}}}class EncryptedQueueFactory{forResource(resource){return ifCfnQueue(resource,r=>new EncryptedCfnQueue(r))}}class EncryptedCfnQueue{queue;env;constructor(queue){this.queue=queue,this.env=queue.env}grantOnKey(grantee,...actions){const key=tryFindKmsKeyForQueue(this.queue);return{grant:key?aws_kms_1().KeyGrants.fromKey(key).actions(grantee,...actions):void 0}}}function ifCfnQueue(resource,factory){if(!sqs_generated_1().CfnQueue.isCfnQueue(resource))throw new(core_1()).ValidationError((0,literal_string_1().lit)`Construct`,`Construct ${resource.node.path} is not of type CfnQueue`,resource);return factory(resource)}function tryFindKmsKeyForQueue(queue){const kmsMasterKeyId=queue.kmsMasterKeyId;if(kmsMasterKeyId)return helpers_internal_1().ConstructReflection.of(queue).findRelatedCfnResource(new(cfn_key_matcher_1()).CfnKeyMatcher(kmsMasterKeyId))}aws_iam_1().DefaultPolicyFactories.set("AWS::SQS::Queue",new QueueWithPolicyFactory),aws_iam_1().DefaultEncryptedResourceFactories.set("AWS::SQS::Queue",new EncryptedQueueFactory);

View File

@@ -0,0 +1,284 @@
import type { Construct } from 'constructs';
import { QueueGrants } from './sqs-grants.generated';
import type { IQueueRef, QueueReference } from './sqs.generated';
import * as iam from '../../aws-iam';
import type { GrantOnKeyResult, IEncryptedResource, IGrantable } from '../../aws-iam';
import type * as kms from '../../aws-kms';
import type { IResource, ResourceProps } from '../../core';
import { Resource } from '../../core';
/**
* Represents an SQS queue
*/
export interface IQueue extends IResource, IQueueRef {
/**
* The ARN of this queue
* @attribute
*/
readonly queueArn: string;
/**
* The URL of this queue
* @attribute
*/
readonly queueUrl: string;
/**
* The name of this queue
* @attribute
*/
readonly queueName: string;
/**
* If this queue is server-side encrypted, this is the KMS encryption key.
*/
readonly encryptionMasterKey?: kms.IKey;
/**
* Whether this queue is an Amazon SQS FIFO queue. If false, this is a standard queue.
*/
readonly fifo: boolean;
/**
* Whether the contents of the queue are encrypted, and by what type of key.
*/
readonly encryptionType?: QueueEncryption;
/**
* Adds a statement to the IAM resource policy associated with this queue.
*
* If this queue was created in this stack (`new Queue`), a queue policy
* will be automatically created upon the first call to `addToPolicy`. If
* the queue is imported (`Queue.import`), then this is a no-op.
*/
addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
/**
* Grant permissions to consume messages from a queue
*
* This will grant the following permissions:
*
* - sqs:ChangeMessageVisibility
* - sqs:DeleteMessage
* - sqs:ReceiveMessage
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* @param grantee Principal to grant consume rights to
*/
grantConsumeMessages(grantee: iam.IGrantable): iam.Grant;
/**
* Grant access to send messages to a queue to the given identity.
*
* This will grant the following permissions:
*
* - sqs:SendMessage
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* @param grantee Principal to grant send rights to
*/
grantSendMessages(grantee: iam.IGrantable): iam.Grant;
/**
* Grant an IAM principal permissions to purge all messages from the queue.
*
* This will grant the following permissions:
*
* - sqs:PurgeQueue
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* @param grantee Principal to grant send rights to
*/
grantPurge(grantee: iam.IGrantable): iam.Grant;
/**
* Grant the actions defined in queueActions to the identity Principal given
* on this SQS queue resource.
*
* @param grantee Principal to grant right to
* @param queueActions The actions to grant
*/
grant(grantee: iam.IGrantable, ...queueActions: string[]): iam.Grant;
}
/**
* Reference to a new or existing Amazon SQS queue
*/
export declare abstract class QueueBase extends Resource implements IQueue, IEncryptedResource {
/**
* The ARN of this queue
*/
abstract readonly queueArn: string;
/**
* The URL of this queue
*/
abstract readonly queueUrl: string;
/**
* The name of this queue
*/
abstract readonly queueName: string;
/**
* If this queue is server-side encrypted, this is the KMS encryption key.
*/
abstract readonly encryptionMasterKey?: kms.IKey;
/**
* Whether this queue is an Amazon SQS FIFO queue. If false, this is a standard queue.
*/
abstract readonly fifo: boolean;
/**
* Whether the contents of the queue are encrypted, and by what type of key.
*/
abstract readonly encryptionType?: QueueEncryption;
/**
* Collection of grant methods for a Queue
*/
readonly grants: QueueGrants;
/**
* Controls automatic creation of policy objects.
*
* Set by subclasses.
*/
protected abstract readonly autoCreatePolicy: boolean;
private policy?;
constructor(scope: Construct, id: string, props?: ResourceProps);
grantOnKey(grantee: IGrantable, ...actions: string[]): GrantOnKeyResult;
get queueRef(): QueueReference;
/**
* Adds a statement to the IAM resource policy associated with this queue.
*
* If this queue was created in this stack (`new Queue`), a queue policy
* will be automatically created upon the first call to `addToPolicy`. If
* the queue is imported (`Queue.import`), then this is a no-op.
*/
addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
/**
* Grant permissions to consume messages from a queue
*
* This will grant the following permissions:
*
* - sqs:ChangeMessageVisibility
* - sqs:DeleteMessage
* - sqs:ReceiveMessage
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* If encryption is used, permission to use the key to decrypt the contents of the queue will also be granted to the same principal.
*
* This will grant the following KMS permissions:
*
* - kms:Decrypt
*
*
* The use of this method is discouraged. Please use `grants.consumeMessages()` instead.
*
* [disable-awslint:no-grants]
*
* @param grantee Principal to grant consume rights to
*/
grantConsumeMessages(grantee: iam.IGrantable): iam.Grant;
/**
* Grant access to send messages to a queue to the given identity.
*
* This will grant the following permissions:
*
* - sqs:SendMessage
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* If encryption is used, permission to use the key to encrypt/decrypt the contents of the queue will also be granted to the same principal.
*
* This will grant the following KMS permissions:
*
* - kms:Decrypt
* - kms:Encrypt
* - kms:ReEncrypt*
* - kms:GenerateDataKey*
*
*
* The use of this method is discouraged. Please use `grants.sendMessages()` instead.
*
* [disable-awslint:no-grants]
*
* @param grantee Principal to grant send rights to
*/
grantSendMessages(grantee: iam.IGrantable): iam.Grant;
/**
* Grant an IAM principal permissions to purge all messages from the queue.
*
* This will grant the following permissions:
*
* - sqs:PurgeQueue
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
*
* The use of this method is discouraged. Please use `grants.purge()` instead.
*
* [disable-awslint:no-grants]
*
* @param grantee Principal to grant send rights to
*/
grantPurge(grantee: iam.IGrantable): iam.Grant;
/**
* Grant the actions defined in queueActions to the identity Principal given
* on this SQS queue resource.
*
* [disable-awslint:no-grants]
*
* @param grantee Principal to grant right to
* @param actions The actions to grant
*/
grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
}
/**
* Reference to a queue
*/
export interface QueueAttributes {
/**
* The ARN of the queue.
*/
readonly queueArn: string;
/**
* The URL of the queue.
* @see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-message-identifiers.html#sqs-general-identifiers
*
* @default - 'https://sqs.<region-endpoint>/<account-ID>/<queue-name>'
*/
readonly queueUrl?: string;
/**
* The name of the queue.
* @default if queue name is not specified, the name will be derived from the queue ARN
*/
readonly queueName?: string;
/**
* KMS encryption key, if this queue is server-side encrypted by a KMS key.
*
* @default - None
*/
readonly keyArn?: string;
/**
* Whether this queue is an Amazon SQS FIFO queue. If false, this is a standard queue.
*
* In case of a FIFO queue which is imported from a token, this value has to be explicitly set to true.
*
* @default - if fifo is not specified, the property will be determined based on the queue name (not possible for FIFO queues imported from a token)
*/
readonly fifo?: boolean;
}
/**
* 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 KMS key managed by SQS.
*/
KMS_MANAGED = "KMS_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",
/**
* Server-side encryption key managed by SQS (SSE-SQS).
*
* To learn more about SSE-SQS on Amazon SQS, please visit the
* [Amazon SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html).
*/
SQS_MANAGED = "SQS_MANAGED"
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.QueueEncryption=exports.QueueBase=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var policy_1=()=>{var tmp=require("./policy");return policy_1=()=>tmp,tmp},sqs_grants_generated_1=()=>{var tmp=require("./sqs-grants.generated");return sqs_grants_generated_1=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>tmp,tmp},core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp};class QueueBase extends core_1().Resource{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_sqs.QueueBase",version:"2.252.0"};grants=sqs_grants_generated_1().QueueGrants.fromQueue(this);policy;constructor(scope,id,props={}){super(scope,id,props);try{jsiiDeprecationWarnings().aws_cdk_lib_ResourceProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,QueueBase),error}this.node.addValidation({validate:()=>this.policy?.document.validateForResourcePolicy()??[]})}grantOnKey(grantee,...actions){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.grantOnKey),error}return{grant:this.encryptionMasterKey?this.encryptionMasterKey.grant(grantee,...actions):void 0}}get queueRef(){return{queueUrl:this.queueUrl,queueArn:this.queueArn}}addToResourcePolicy(statement){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_PolicyStatement(statement)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addToResourcePolicy),error}return!this.policy&&this.autoCreatePolicy&&(this.policy=new(policy_1()).QueuePolicy(this,"Policy",{queues:[this]})),this.policy?(this.policy.document.addStatements(statement),{statementAdded:!0,policyDependable:this.policy}):{statementAdded:!1}}grantConsumeMessages(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.grantConsumeMessages),error}return this.grants.consumeMessages(grantee)}grantSendMessages(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.grantSendMessages),error}return this.grants.sendMessages(grantee)}grantPurge(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.grantPurge),error}return this.grants.purge(grantee)}grant(grantee,...actions){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.grant),error}return iam().Grant.addToPrincipalOrResource({grantee,actions,resourceArns:[this.queueArn],resource:this})}}exports.QueueBase=QueueBase;var QueueEncryption;(function(QueueEncryption2){QueueEncryption2.UNENCRYPTED="NONE",QueueEncryption2.KMS_MANAGED="KMS_MANAGED",QueueEncryption2.KMS="KMS",QueueEncryption2.SQS_MANAGED="SQS_MANAGED"})(QueueEncryption||(exports.QueueEncryption=QueueEncryption={}));

313
cdk/node_modules/aws-cdk-lib/aws-sqs/lib/queue.d.ts generated vendored Normal file
View File

@@ -0,0 +1,313 @@
import type { Construct } from 'constructs';
import type { IQueue, QueueAttributes } from './queue-base';
import { QueueBase, QueueEncryption } from './queue-base';
import * as kms from '../../aws-kms';
import type { Duration } from '../../core';
import { RemovalPolicy } from '../../core';
/**
* 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 1048576 bytes
* (1 MiB). The default value is 1048576 (1 MiB).
*
* @default 1MiB
*/
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 SQS_MANAGED (SSE-SQS) for newly created queues
*/
readonly encryption?: QueueEncryption;
/**
* External KMS 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;
/**
* Enforce encryption of data in transit.
* @see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-security-best-practices.html#enforce-encryption-data-in-transit
*
* @default false
*/
readonly enforceSSL?: boolean;
/**
* The string that includes the parameters for the permissions for the dead-letter queue
* redrive permission and which source queues can specify dead-letter queues.
*
* @default - All source queues can designate this queue as their dead-letter queue.
*/
readonly redriveAllowPolicy?: RedriveAllowPolicy;
}
/**
* 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 unsuccessfully dequeued before being moved to the dead-letter queue.
*/
readonly maxReceiveCount: number;
}
/**
* Permission settings for the dead letter source queue
*/
export interface RedriveAllowPolicy {
/**
* Permission settings for source queues that can designate this queue as their dead-letter queue.
*
* @default - `RedrivePermission.BY_QUEUE` if `sourceQueues` is specified,`RedrivePermission.ALLOW_ALL` otherwise.
*/
readonly redrivePermission?: RedrivePermission;
/**
* Source queues that can designate this queue as their dead-letter queue.
*
* When `redrivePermission` is set to `RedrivePermission.BY_QUEUE`, this parameter is required.
*
* You can specify up to 10 source queues.
* To allow more than 10 source queues to specify dead-letter queues, set the `redrivePermission` to
* `RedrivePermission.ALLOW_ALL`.
*
* When `redrivePermission` is either `RedrivePermission.ALLOW_ALL` or `RedrivePermission.DENY_ALL`,
* this parameter cannot be set.
*
* @default - Required when `redrivePermission` is `RedrivePermission.BY_QUEUE`, cannot be defined otherwise.
*/
readonly sourceQueues?: IQueue[];
}
/**
* 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"
}
/**
* The permission type that defines which source queues can specify the current queue as the dead-letter queue
*/
export declare enum RedrivePermission {
/**
* Any source queues in this AWS account in the same Region can specify this queue as the dead-letter queue
*/
ALLOW_ALL = "allowAll",
/**
* No source queues can specify this queue as the dead-letter queue
*/
DENY_ALL = "denyAll",
/**
* Only queues specified by the `sourceQueueArns` parameter can specify this queue as the dead-letter queue
*/
BY_QUEUE = "byQueue"
}
/**
* A new Amazon SQS queue
*/
export declare class Queue extends QueueBase {
/**
* Uniquely identifies this class.
*/
static readonly PROPERTY_INJECTION_ID: string;
/**
* 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
*/
get queueArn(): string;
/**
* The name of this queue
*/
get 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;
/**
* Whether the contents of the queue are encrypted, and by what type of key.
*/
readonly encryptionType?: QueueEncryption;
/**
* If this queue is configured with a dead-letter queue, this is the dead-letter queue settings.
*/
readonly deadLetterQueue?: DeadLetterQueue;
protected readonly autoCreatePolicy = true;
private readonly _resource;
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;
/**
* Adds an iam statement to enforce encryption of data in transit.
*/
private enforceSSLStatement;
}

2
cdk/node_modules/aws-cdk-lib/aws-sqs/lib/queue.js generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,125 @@
import * as cw from "../../aws-cloudwatch";
declare module "./queue-base" {
interface IQueue {
/**
* Return the given named metric for this Queue
*/
metric(metricName: string, props?: cw.MetricOptions): cw.Metric;
/**
* The approximate age of the oldest non-deleted message in the queue.
*
* Maximum over 5 minutes
*/
metricApproximateAgeOfOldestMessage(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages in the queue that are delayed and not available for reading immediately.
*
* Maximum over 5 minutes
*/
metricApproximateNumberOfMessagesDelayed(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages that are in flight.
*
* Maximum over 5 minutes
*/
metricApproximateNumberOfMessagesNotVisible(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages available for retrieval from the queue.
*
* Maximum over 5 minutes
*/
metricApproximateNumberOfMessagesVisible(props?: cw.MetricOptions): cw.Metric;
/**
* The number of ReceiveMessage API calls that did not return a message.
*
* Sum over 5 minutes
*/
metricNumberOfEmptyReceives(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages deleted from the queue.
*
* Sum over 5 minutes
*/
metricNumberOfMessagesDeleted(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages returned by calls to the ReceiveMessage action.
*
* Sum over 5 minutes
*/
metricNumberOfMessagesReceived(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages added to a queue.
*
* Sum over 5 minutes
*/
metricNumberOfMessagesSent(props?: cw.MetricOptions): cw.Metric;
/**
* The size of messages added to a queue.
*
* Average over 5 minutes
*/
metricSentMessageSize(props?: cw.MetricOptions): cw.Metric;
}
}
declare module "./queue-base" {
interface QueueBase {
/**
* Return the given named metric for this Queue
*/
metric(metricName: string, props?: cw.MetricOptions): cw.Metric;
/**
* The approximate age of the oldest non-deleted message in the queue.
*
* Maximum over 5 minutes
*/
metricApproximateAgeOfOldestMessage(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages in the queue that are delayed and not available for reading immediately.
*
* Maximum over 5 minutes
*/
metricApproximateNumberOfMessagesDelayed(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages that are in flight.
*
* Maximum over 5 minutes
*/
metricApproximateNumberOfMessagesNotVisible(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages available for retrieval from the queue.
*
* Maximum over 5 minutes
*/
metricApproximateNumberOfMessagesVisible(props?: cw.MetricOptions): cw.Metric;
/**
* The number of ReceiveMessage API calls that did not return a message.
*
* Sum over 5 minutes
*/
metricNumberOfEmptyReceives(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages deleted from the queue.
*
* Sum over 5 minutes
*/
metricNumberOfMessagesDeleted(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages returned by calls to the ReceiveMessage action.
*
* Sum over 5 minutes
*/
metricNumberOfMessagesReceived(props?: cw.MetricOptions): cw.Metric;
/**
* The number of messages added to a queue.
*
* Sum over 5 minutes
*/
metricNumberOfMessagesSent(props?: cw.MetricOptions): cw.Metric;
/**
* The size of messages added to a queue.
*
* Average over 5 minutes
*/
metricSentMessageSize(props?: cw.MetricOptions): cw.Metric;
}
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var cw=()=>{var tmp=require("../../aws-cloudwatch");return cw=()=>tmp,tmp},queue_base_1=()=>{var tmp=require("./queue-base");return queue_base_1=()=>tmp,tmp};queue_base_1().QueueBase.prototype.metric=function(metricName,props){return new(cw()).Metric({namespace:"AWS/SQS",metricName,dimensionsMap:{QueueName:this.queueName},...props}).attachTo(this)},queue_base_1().QueueBase.prototype.metricApproximateAgeOfOldestMessage=function(props){return this.metric("ApproximateAgeOfOldestMessage",{statistic:"Maximum",...props})},queue_base_1().QueueBase.prototype.metricApproximateNumberOfMessagesDelayed=function(props){return this.metric("ApproximateNumberOfMessagesDelayed",{statistic:"Maximum",...props})},queue_base_1().QueueBase.prototype.metricApproximateNumberOfMessagesNotVisible=function(props){return this.metric("ApproximateNumberOfMessagesNotVisible",{statistic:"Maximum",...props})},queue_base_1().QueueBase.prototype.metricApproximateNumberOfMessagesVisible=function(props){return this.metric("ApproximateNumberOfMessagesVisible",{statistic:"Maximum",...props})},queue_base_1().QueueBase.prototype.metricNumberOfEmptyReceives=function(props){return this.metric("NumberOfEmptyReceives",{statistic:"Sum",...props})},queue_base_1().QueueBase.prototype.metricNumberOfMessagesDeleted=function(props){return this.metric("NumberOfMessagesDeleted",{statistic:"Sum",...props})},queue_base_1().QueueBase.prototype.metricNumberOfMessagesReceived=function(props){return this.metric("NumberOfMessagesReceived",{statistic:"Sum",...props})},queue_base_1().QueueBase.prototype.metricNumberOfMessagesSent=function(props){return this.metric("NumberOfMessagesSent",{statistic:"Sum",...props})},queue_base_1().QueueBase.prototype.metricSentMessageSize=function(props){return this.metric("SentMessageSize",{statistic:"Average",...props})};

View File

@@ -0,0 +1,53 @@
export interface MetricWithDims<D> {
readonly namespace: string;
readonly metricName: string;
readonly statistic: string;
readonly dimensionsMap: D;
}
export declare class SQSMetrics {
static numberOfMessagesSentAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static approximateNumberOfMessagesDelayedAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static numberOfMessagesReceivedAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static numberOfMessagesDeletedAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static approximateNumberOfMessagesNotVisibleAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static approximateNumberOfMessagesVisibleAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static approximateAgeOfOldestMessageAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static numberOfEmptyReceivesAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
static sentMessageSizeAverage(this: void, dimensions: {
QueueName: string;
}): MetricWithDims<{
QueueName: string;
}>;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SQSMetrics=void 0;class SQSMetrics{static numberOfMessagesSentAverage(dimensions){return{namespace:"AWS/SQS",metricName:"NumberOfMessagesSent",dimensionsMap:dimensions,statistic:"Average"}}static approximateNumberOfMessagesDelayedAverage(dimensions){return{namespace:"AWS/SQS",metricName:"ApproximateNumberOfMessagesDelayed",dimensionsMap:dimensions,statistic:"Average"}}static numberOfMessagesReceivedAverage(dimensions){return{namespace:"AWS/SQS",metricName:"NumberOfMessagesReceived",dimensionsMap:dimensions,statistic:"Average"}}static numberOfMessagesDeletedAverage(dimensions){return{namespace:"AWS/SQS",metricName:"NumberOfMessagesDeleted",dimensionsMap:dimensions,statistic:"Average"}}static approximateNumberOfMessagesNotVisibleAverage(dimensions){return{namespace:"AWS/SQS",metricName:"ApproximateNumberOfMessagesNotVisible",dimensionsMap:dimensions,statistic:"Average"}}static approximateNumberOfMessagesVisibleAverage(dimensions){return{namespace:"AWS/SQS",metricName:"ApproximateNumberOfMessagesVisible",dimensionsMap:dimensions,statistic:"Average"}}static approximateAgeOfOldestMessageAverage(dimensions){return{namespace:"AWS/SQS",metricName:"ApproximateAgeOfOldestMessage",dimensionsMap:dimensions,statistic:"Average"}}static numberOfEmptyReceivesAverage(dimensions){return{namespace:"AWS/SQS",metricName:"NumberOfEmptyReceives",dimensionsMap:dimensions,statistic:"Average"}}static sentMessageSizeAverage(dimensions){return{namespace:"AWS/SQS",metricName:"SentMessageSize",dimensionsMap:dimensions,statistic:"Average"}}}exports.SQSMetrics=SQSMetrics;

View File

@@ -0,0 +1,61 @@
import * as sqs from "./sqs.generated";
import * as iam from "../../aws-iam";
import * as cdk from "../../core/lib";
/**
* Collection of grant methods for a IQueueRef
*/
export declare class QueueGrants {
/**
* Creates grants for QueueGrants
*/
static fromQueue(resource: sqs.IQueueRef): QueueGrants;
protected readonly resource: sqs.IQueueRef;
protected readonly encryptedResource?: iam.IEncryptedResource;
protected readonly policyResource?: iam.IResourceWithPolicyV2;
private constructor();
/**
* Grant the given identity custom permissions
*/
actions(grantee: iam.IGrantable, actions: Array<string>, options?: cdk.EncryptedPermissionsOptions): iam.Grant;
/**
* Grant permissions to consume messages from a queue
*
* This will grant the following permissions:
*
* - sqs:ChangeMessageVisibility
* - sqs:DeleteMessage
* - sqs:ReceiveMessage
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* If encryption is used, permission to use the key to decrypt the contents of the queue will also be granted to the same principal.
*
* This will grant the following KMS permissions:
*
* - kms:Decrypt
*/
consumeMessages(grantee: iam.IGrantable): iam.Grant;
/**
* Grant access to send messages to a queue to the given identity.
*
* This will grant the following permissions:
*
* - sqs:SendMessage
* - sqs:GetQueueAttributes
* - sqs:GetQueueUrl
*
* If encryption is used, permission to use the key to encrypt/decrypt the contents of the queue will also be granted to the same principal.
*
* This will grant the following KMS permissions:
*
* - kms:Decrypt
* - kms:Encrypt
* - kms:ReEncrypt*
* - kms:GenerateDataKey*
*/
sendMessages(grantee: iam.IGrantable): iam.Grant;
/**
* Grants purge permissions
*/
purge(grantee: iam.IGrantable): iam.Grant;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.QueueGrants=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var sqs=()=>{var tmp=require("./sqs.generated");return sqs=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>tmp,tmp};class QueueGrants{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_sqs.QueueGrants",version:"2.252.0"};static fromQueue(resource){try{jsiiDeprecationWarnings().aws_cdk_lib_interfaces_aws_sqs_IQueueRef(resource)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.fromQueue),error}return new QueueGrants({resource,encryptedResource:iam().EncryptedResources.of(resource),policyResource:iam().ResourceWithPolicies.of(resource)})}resource;encryptedResource;policyResource;constructor(props){this.resource=props.resource,this.encryptedResource=props.encryptedResource,this.policyResource=props.policyResource}actions(grantee,actions,options={}){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee),jsiiDeprecationWarnings().aws_cdk_lib_EncryptedPermissionsOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.actions),error}const result=this.policyResource?iam().Grant.addToPrincipalOrResource({actions,grantee,resourceArns:options.resourceArns??[sqs().CfnQueue.arnForQueue(this.resource)],resource:this.policyResource}):iam().Grant.addToPrincipal({actions,grantee,resourceArns:options.resourceArns??[sqs().CfnQueue.arnForQueue(this.resource)]});return options.keyActions&&options.keyActions.length>0&&this.encryptedResource?.grantOnKey(grantee,...options.keyActions),result}consumeMessages(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.consumeMessages),error}const actions=["sqs:ReceiveMessage","sqs:ChangeMessageVisibility","sqs:GetQueueUrl","sqs:DeleteMessage","sqs:GetQueueAttributes"];return this.actions(grantee,actions,{keyActions:["kms:Decrypt"]})}sendMessages(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.sendMessages),error}const actions=["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"];return this.actions(grantee,actions,{keyActions:["kms:Decrypt","kms:Encrypt","kms:ReEncrypt*","kms:GenerateDataKey*"]})}purge(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.purge),error}const actions=["sqs:PurgeQueue","sqs:GetQueueAttributes","sqs:GetQueueUrl"];return this.actions(grantee,actions,{})}}exports.QueueGrants=QueueGrants;

View File

@@ -0,0 +1,654 @@
import * as cdk from "../../core/lib";
import * as constructs from "constructs";
import * as cfn_parse from "../../core/lib/helpers-internal";
import { aws_kms as kmsRefs } from "../../interfaces";
import { IQueueInlinePolicyRef, IQueuePolicyRef, IQueueRef, QueueInlinePolicyReference, QueuePolicyReference, QueueReference } from "../../interfaces/generated/aws-sqs-interfaces.generated";
/**
* The `AWS::SQS::Queue` resource creates an Amazon SQS standard or FIFO queue.
*
* Keep the following caveats in mind:
*
* - If you don't specify the `FifoQueue` property, Amazon SQS creates a standard queue.
*
* > You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO queue. You must either create a new FIFO queue for your application or delete your existing standard queue and recreate it as a FIFO queue. For more information, see [Moving from a standard queue to a FIFO queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues-moving.html) in the *Amazon SQS Developer Guide* .
* - If you don't provide a value for a property, the queue is created with the default value for the property.
* - If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.
* - To successfully create a new queue, you must provide a queue name that adheres to the [limits related to queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/limits-queues.html) and is unique within the scope of your queues.
*
* For more information about creating FIFO (first-in-first-out) queues, see [Creating an Amazon SQS queue ( CloudFormation )](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/create-queue-cloudformation.html) in the *Amazon SQS Developer Guide* .
*
* @cloudformationResource AWS::SQS::Queue
* @stability external
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html
*/
export declare class CfnQueue extends cdk.CfnResource implements cdk.IInspectable, IQueueRef, cdk.ITaggable {
/**
* The CloudFormation resource type name for this resource class.
*/
static readonly CFN_RESOURCE_TYPE_NAME: string;
/**
* Build a CfnQueue from CloudFormation properties
*
* A factory method that creates a new instance of this class from an object
* containing the CloudFormation properties of this resource.
* Used in the @aws-cdk/cloudformation-include module.
*
* @internal
*/
static _fromCloudFormation(scope: constructs.Construct, id: string, resourceAttributes: any, options: cfn_parse.FromCloudFormationOptions): CfnQueue;
/**
* Checks whether the given object is a CfnQueue
*/
static isCfnQueue(x: any): x is CfnQueue;
static arnForQueue(resource: IQueueRef): string;
/**
* For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication.
*/
private _contentBasedDeduplication?;
/**
* For high throughput for FIFO queues, specifies whether message deduplication occurs at the message group or queue level.
*/
private _deduplicationScope?;
/**
* The time in seconds for which the delivery of all messages in the queue is delayed.
*/
private _delaySeconds?;
/**
* If set to true, creates a FIFO queue.
*/
private _fifoQueue?;
/**
* For high throughput for FIFO queues, specifies whether the FIFO queue throughput quota applies to the entire queue or per message group.
*/
private _fifoThroughputLimit?;
/**
* The length of time in seconds for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS again.
*/
private _kmsDataKeyReusePeriodSeconds?;
/**
* The ID of an AWS Key Management Service (KMS) for Amazon SQS , or a custom KMS.
*/
private _kmsMasterKeyId?;
/**
* The limit of how many bytes that a message can contain before Amazon SQS rejects it.
*/
private _maximumMessageSize?;
/**
* The number of seconds that Amazon SQS retains a message.
*/
private _messageRetentionPeriod?;
/**
* A name for the queue.
*/
private _queueName?;
/**
* Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available.
*/
private _receiveMessageWaitTimeSeconds?;
/**
* The string that includes the parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues as a JSON object.
*/
private _redriveAllowPolicy?;
/**
* The string that includes the parameters for the dead-letter queue functionality of the source queue as a JSON object.
*/
private _redrivePolicy?;
/**
* Enables server-side queue encryption using SQS owned encryption keys.
*/
private _sqsManagedSseEnabled?;
/**
* Tag Manager which manages the tags for this resource
*/
readonly tags: cdk.TagManager;
/**
* The tags that you attach to this queue.
*/
private _tagsRaw?;
/**
* The length of time during which a message will be unavailable after a message is delivered from the queue.
*/
private _visibilityTimeout?;
protected readonly cfnPropertyNames: Record<string, string>;
/**
* Create a new `AWS::SQS::Queue`.
*
* @param scope Scope in which this resource is defined
* @param id Construct identifier for this resource (unique in its scope)
* @param props Resource properties
*/
constructor(scope: constructs.Construct, id: string, props?: CfnQueueProps);
get queueRef(): QueueReference;
/**
* For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication.
*/
get contentBasedDeduplication(): boolean | cdk.IResolvable | undefined;
/**
* For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication.
*/
set contentBasedDeduplication(value: boolean | cdk.IResolvable | undefined);
/**
* For high throughput for FIFO queues, specifies whether message deduplication occurs at the message group or queue level.
*/
get deduplicationScope(): string | undefined;
/**
* For high throughput for FIFO queues, specifies whether message deduplication occurs at the message group or queue level.
*/
set deduplicationScope(value: string | undefined);
/**
* The time in seconds for which the delivery of all messages in the queue is delayed.
*/
get delaySeconds(): number | undefined;
/**
* The time in seconds for which the delivery of all messages in the queue is delayed.
*/
set delaySeconds(value: number | undefined);
/**
* If set to true, creates a FIFO queue.
*/
get fifoQueue(): boolean | cdk.IResolvable | undefined;
/**
* If set to true, creates a FIFO queue.
*/
set fifoQueue(value: boolean | cdk.IResolvable | undefined);
/**
* For high throughput for FIFO queues, specifies whether the FIFO queue throughput quota applies to the entire queue or per message group.
*/
get fifoThroughputLimit(): string | undefined;
/**
* For high throughput for FIFO queues, specifies whether the FIFO queue throughput quota applies to the entire queue or per message group.
*/
set fifoThroughputLimit(value: string | undefined);
/**
* The length of time in seconds for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS again.
*/
get kmsDataKeyReusePeriodSeconds(): number | undefined;
/**
* The length of time in seconds for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS again.
*/
set kmsDataKeyReusePeriodSeconds(value: number | undefined);
/**
* The ID of an AWS Key Management Service (KMS) for Amazon SQS , or a custom KMS.
*/
get kmsMasterKeyId(): string | undefined;
/**
* The ID of an AWS Key Management Service (KMS) for Amazon SQS , or a custom KMS.
*/
set kmsMasterKeyId(value: string | undefined);
/**
* The limit of how many bytes that a message can contain before Amazon SQS rejects it.
*/
get maximumMessageSize(): number | undefined;
/**
* The limit of how many bytes that a message can contain before Amazon SQS rejects it.
*/
set maximumMessageSize(value: number | undefined);
/**
* The number of seconds that Amazon SQS retains a message.
*/
get messageRetentionPeriod(): number | undefined;
/**
* The number of seconds that Amazon SQS retains a message.
*/
set messageRetentionPeriod(value: number | undefined);
/**
* A name for the queue.
*/
get queueName(): string | undefined;
/**
* A name for the queue.
*/
set queueName(value: string | undefined);
/**
* Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available.
*/
get receiveMessageWaitTimeSeconds(): number | undefined;
/**
* Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available.
*/
set receiveMessageWaitTimeSeconds(value: number | undefined);
/**
* The string that includes the parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues as a JSON object.
*/
get redriveAllowPolicy(): any | cdk.IResolvable | undefined;
/**
* The string that includes the parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues as a JSON object.
*/
set redriveAllowPolicy(value: any | cdk.IResolvable | undefined);
/**
* The string that includes the parameters for the dead-letter queue functionality of the source queue as a JSON object.
*/
get redrivePolicy(): any | cdk.IResolvable | undefined;
/**
* The string that includes the parameters for the dead-letter queue functionality of the source queue as a JSON object.
*/
set redrivePolicy(value: any | cdk.IResolvable | undefined);
/**
* Enables server-side queue encryption using SQS owned encryption keys.
*/
get sqsManagedSseEnabled(): boolean | cdk.IResolvable | undefined;
/**
* Enables server-side queue encryption using SQS owned encryption keys.
*/
set sqsManagedSseEnabled(value: boolean | cdk.IResolvable | undefined);
/**
* The tags that you attach to this queue.
*/
get tagsRaw(): Array<cdk.CfnTag> | undefined;
/**
* The tags that you attach to this queue.
*/
set tagsRaw(value: Array<cdk.CfnTag> | undefined);
/**
* The length of time during which a message will be unavailable after a message is delivered from the queue.
*/
get visibilityTimeout(): number | undefined;
/**
* The length of time during which a message will be unavailable after a message is delivered from the queue.
*/
set visibilityTimeout(value: number | undefined);
/**
* Returns the Amazon Resource Name (ARN) of the queue. For example: `arn:aws:sqs:us-east-2:123456789012:mystack-myqueue-15PG5C2FC1CW8` .
*
* @cloudformationAttribute Arn
*/
get attrArn(): string;
/**
* Returns the queue name. For example: `mystack-myqueue-1VF9BKQH5BJVI` .
*
* @cloudformationAttribute QueueName
*/
get attrQueueName(): string;
/**
* Returns the URLs of the queues from the policy.
*
* @cloudformationAttribute QueueUrl
*/
get attrQueueUrl(): string;
protected get cfnProperties(): Record<string, any>;
/**
* Examines the CloudFormation resource and discloses attributes
*
* @param inspector tree inspector to collect and process attributes
*/
inspect(inspector: cdk.TreeInspector): void;
protected renderProperties(props: Record<string, any>): Record<string, any>;
}
/**
* Properties for defining a `CfnQueue`
*
* @struct
* @stability external
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html
*/
export interface CfnQueueProps {
/**
* For first-in-first-out (FIFO) queues, specifies whether to enable content-based deduplication.
*
* During the deduplication interval, Amazon SQS treats messages that are sent with identical content as duplicates and delivers only one copy of the message. For more information, see the `ContentBasedDeduplication` attribute for the `[CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)` action in the *Amazon SQS API Reference* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-contentbaseddeduplication
*/
readonly contentBasedDeduplication?: boolean | cdk.IResolvable;
/**
* For high throughput for FIFO queues, specifies whether message deduplication occurs at the message group or queue level.
*
* Valid values are `messageGroup` and `queue` .
*
* To enable high throughput for a FIFO queue, set this attribute to `messageGroup` *and* set the `FifoThroughputLimit` attribute to `perMessageGroupId` . If you set these attributes to anything other than these values, normal throughput is in effect and deduplication occurs as specified. For more information, see [High throughput for FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) and [Quotas related to messages](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-deduplicationscope
*/
readonly deduplicationScope?: string;
/**
* The time in seconds for which 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` .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-delayseconds
*/
readonly delaySeconds?: number;
/**
* If set to true, creates a FIFO queue.
*
* If you don't specify this property, Amazon SQS creates a standard queue. For more information, see [Amazon SQS FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-fifoqueue
*/
readonly fifoQueue?: boolean | cdk.IResolvable;
/**
* For high throughput for FIFO queues, specifies whether the FIFO queue throughput quota applies to the entire queue or per message group.
*
* Valid values are `perQueue` and `perMessageGroupId` .
*
* To enable high throughput for a FIFO queue, set this attribute to `perMessageGroupId` *and* set the `DeduplicationScope` attribute to `messageGroup` . If you set these attributes to anything other than these values, normal throughput is in effect and deduplication occurs as specified. For more information, see [High throughput for FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/high-throughput-fifo.html) and [Quotas related to messages](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-fifothroughputlimit
*/
readonly fifoThroughputLimit?: string;
/**
* The length of time in seconds for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS again.
*
* The value must be an integer between 60 (1 minute) and 86,400 (24 hours). The default is 300 (5 minutes).
*
* > A shorter time period provides better security, but results in more calls to AWS , which might incur charges after Free Tier. For more information, see [Encryption at rest](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html#sqs-how-does-the-data-key-reuse-period-work) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-kmsdatakeyreuseperiodseconds
*/
readonly kmsDataKeyReusePeriodSeconds?: number;
/**
* The ID of an AWS Key Management Service (KMS) for Amazon SQS , or a custom KMS.
*
* To use the AWS managed KMS for Amazon SQS , specify a (default) alias ARN, alias name (for example `alias/aws/sqs` ), key ARN, or key ID. For more information, see the following:
*
* - [Encryption at rest](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-server-side-encryption.html) in the *Amazon SQS Developer Guide*
* - [CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html) in the *Amazon SQS API Reference*
* - [Request Parameters](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters) in the *AWS Key Management Service API Reference*
* - The Key Management Service (KMS) section of the [Security best practices for AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) in the *AWS Key Management Service Developer Guide*
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-kmsmasterkeyid
*/
readonly kmsMasterKeyId?: kmsRefs.IAliasRef | kmsRefs.IKeyRef | string;
/**
* The limit of how many bytes that a message can contain before Amazon SQS rejects it.
*
* You can specify an integer from 1,024 bytes (1 KiB) to 1,048,576 bytes (1 MiB).
* Default: 1,048,576 bytes (1 MiB).
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-maximummessagesize
*/
readonly maximumMessageSize?: number;
/**
* The number of seconds that Amazon SQS retains a message.
*
* You can specify an integer value from `60` seconds (1 minute) to `1,209,600` seconds (14 days). The default value is `345,600` seconds (4 days).
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-messageretentionperiod
*/
readonly messageRetentionPeriod?: number;
/**
* A name for the queue.
*
* To create a FIFO queue, the name of your FIFO queue must end with the `.fifo` suffix. For more information, see [Amazon SQS FIFO queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html) in the *Amazon SQS Developer Guide* .
*
* If you don't specify a name, CloudFormation generates a unique physical ID and uses that ID for the queue name. For more information, see [Name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in the *CloudFormation User Guide* .
*
* > If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-queuename
*/
readonly queueName?: string;
/**
* Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available.
*
* You can specify an integer from 1 to 20. Short polling is used as the default or when you specify 0 for this property. For more information, see [Consuming messages using long polling](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-receivemessagewaittimeseconds
*/
readonly receiveMessageWaitTimeSeconds?: number;
/**
* The string that includes the parameters for the permissions for the dead-letter queue redrive permission and which source queues can specify dead-letter queues as a JSON object.
*
* The parameters are as follows:
*
* - `redrivePermission` : The permission type that defines which source queues can specify the current queue as the dead-letter queue. Valid values are:
*
* - `allowAll` : (Default) Any source queues in this AWS account in the same Region can specify this queue as the dead-letter queue.
* - `denyAll` : No source queues can specify this queue as the dead-letter queue.
* - `byQueue` : Only queues specified by the `sourceQueueArns` parameter can specify this queue as the dead-letter queue.
* - `sourceQueueArns` : The Amazon Resource Names (ARN)s of the source queues that can specify this queue as the dead-letter queue and redrive messages. You can specify this parameter only when the `redrivePermission` parameter is set to `byQueue` . You can specify up to 10 source queue ARNs. To allow more than 10 source queues to specify dead-letter queues, set the `redrivePermission` parameter to `allowAll` .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-redriveallowpolicy
*/
readonly redriveAllowPolicy?: any | cdk.IResolvable;
/**
* The string that includes the parameters for the dead-letter queue functionality of the source queue as a JSON object.
*
* The parameters are as follows:
*
* - `deadLetterTargetArn` : The Amazon Resource Name (ARN) of the dead-letter queue to which Amazon SQS moves messages after the value of `maxReceiveCount` is exceeded.
* - `maxReceiveCount` : The number of times a message is received by a consumer of the source queue before being moved to the dead-letter queue. When the `ReceiveCount` for a message exceeds the `maxReceiveCount` for a queue, Amazon SQS moves the message to the dead-letter-queue.
*
* > The dead-letter queue of a FIFO queue must also be a FIFO queue. Similarly, the dead-letter queue of a standard queue must also be a standard queue.
*
* *JSON*
*
* `{ "deadLetterTargetArn" : *String* , "maxReceiveCount" : *Integer* }`
*
* *YAML*
*
* `deadLetterTargetArn : *String*`
*
* `maxReceiveCount : *Integer*`
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-redrivepolicy
*/
readonly redrivePolicy?: any | cdk.IResolvable;
/**
* Enables server-side queue encryption using SQS owned encryption keys.
*
* Only one server-side encryption option is supported per queue (for example, [SSE-KMS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sse-existing-queue.html) or [SSE-SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-sqs-sse-queue.html) ). When `SqsManagedSseEnabled` is not defined, `SSE-SQS` encryption is enabled by default.
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-sqsmanagedsseenabled
*/
readonly sqsManagedSseEnabled?: boolean | cdk.IResolvable;
/**
* The tags that you attach to this queue.
*
* For more information, see [Resource tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html) in the *CloudFormation User Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-tags
*/
readonly tags?: Array<cdk.CfnTag>;
/**
* The length of time during which a message will be unavailable after a message is delivered from the queue.
*
* This blocks other components from receiving the same message and gives the initial component time to process and delete the message from the queue.
*
* Values must be from 0 to 43,200 seconds (12 hours). If you don't specify a value, AWS CloudFormation uses the default value of 30 seconds.
*
* For more information about Amazon SQS queue visibility timeouts, see [Visibility timeout](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html#cfn-sqs-queue-visibilitytimeout
*/
readonly visibilityTimeout?: number;
}
/**
* The `AWS::SQS::QueueInlinePolicy` resource associates one Amazon SQS queue with one policy.
*
* @cloudformationResource AWS::SQS::QueueInlinePolicy
* @stability external
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queueinlinepolicy.html
*/
export declare class CfnQueueInlinePolicy extends cdk.CfnResource implements cdk.IInspectable, IQueueInlinePolicyRef {
/**
* The CloudFormation resource type name for this resource class.
*/
static readonly CFN_RESOURCE_TYPE_NAME: string;
/**
* Build a CfnQueueInlinePolicy from CloudFormation properties
*
* A factory method that creates a new instance of this class from an object
* containing the CloudFormation properties of this resource.
* Used in the @aws-cdk/cloudformation-include module.
*
* @internal
*/
static _fromCloudFormation(scope: constructs.Construct, id: string, resourceAttributes: any, options: cfn_parse.FromCloudFormationOptions): CfnQueueInlinePolicy;
/**
* Checks whether the given object is a CfnQueueInlinePolicy
*/
static isCfnQueueInlinePolicy(x: any): x is CfnQueueInlinePolicy;
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*/
private _policyDocument;
/**
* The URLs of the queues to which you want to add the policy.
*/
private _queue;
protected readonly cfnPropertyNames: Record<string, string>;
/**
* Create a new `AWS::SQS::QueueInlinePolicy`.
*
* @param scope Scope in which this resource is defined
* @param id Construct identifier for this resource (unique in its scope)
* @param props Resource properties
*/
constructor(scope: constructs.Construct, id: string, props: CfnQueueInlinePolicyProps);
get queueInlinePolicyRef(): QueueInlinePolicyReference;
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*/
get policyDocument(): any | cdk.IResolvable;
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*/
set policyDocument(value: any | cdk.IResolvable);
/**
* The URLs of the queues to which you want to add the policy.
*/
get queue(): string;
/**
* The URLs of the queues to which you want to add the policy.
*/
set queue(value: string);
protected get cfnProperties(): Record<string, any>;
/**
* Examines the CloudFormation resource and discloses attributes
*
* @param inspector tree inspector to collect and process attributes
*/
inspect(inspector: cdk.TreeInspector): void;
protected renderProperties(props: Record<string, any>): Record<string, any>;
}
/**
* Properties for defining a `CfnQueueInlinePolicy`
*
* @struct
* @stability external
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queueinlinepolicy.html
*/
export interface CfnQueueInlinePolicyProps {
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*
* For more information about Amazon SQS policies, see [Using custom policies with the Amazon SQS access policy language](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queueinlinepolicy.html#cfn-sqs-queueinlinepolicy-policydocument
*/
readonly policyDocument: any | cdk.IResolvable;
/**
* The URLs of the queues to which you want to add the policy.
*
* You can use the `[Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html)` function to specify an `[AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)` resource.
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queueinlinepolicy.html#cfn-sqs-queueinlinepolicy-queue
*/
readonly queue: string;
}
/**
* The `AWS::SQS::QueuePolicy` type applies a policy to Amazon SQS queues.
*
* For an example snippet, see [Declaring an Amazon SQS policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html#scenario-sqs-policy) in the *CloudFormation User Guide* .
*
* @cloudformationResource AWS::SQS::QueuePolicy
* @stability external
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queuepolicy.html
*/
export declare class CfnQueuePolicy extends cdk.CfnResource implements cdk.IInspectable, IQueuePolicyRef {
/**
* The CloudFormation resource type name for this resource class.
*/
static readonly CFN_RESOURCE_TYPE_NAME: string;
/**
* Build a CfnQueuePolicy from CloudFormation properties
*
* A factory method that creates a new instance of this class from an object
* containing the CloudFormation properties of this resource.
* Used in the @aws-cdk/cloudformation-include module.
*
* @internal
*/
static _fromCloudFormation(scope: constructs.Construct, id: string, resourceAttributes: any, options: cfn_parse.FromCloudFormationOptions): CfnQueuePolicy;
/**
* Checks whether the given object is a CfnQueuePolicy
*/
static isCfnQueuePolicy(x: any): x is CfnQueuePolicy;
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*/
private _policyDocument;
/**
* The URLs of the queues to which you want to add the policy.
*/
private _queues;
protected readonly cfnPropertyNames: Record<string, string>;
/**
* Create a new `AWS::SQS::QueuePolicy`.
*
* @param scope Scope in which this resource is defined
* @param id Construct identifier for this resource (unique in its scope)
* @param props Resource properties
*/
constructor(scope: constructs.Construct, id: string, props: CfnQueuePolicyProps);
get queuePolicyRef(): QueuePolicyReference;
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*/
get policyDocument(): any | cdk.IResolvable;
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*/
set policyDocument(value: any | cdk.IResolvable);
/**
* The URLs of the queues to which you want to add the policy.
*/
get queues(): Array<string>;
/**
* The URLs of the queues to which you want to add the policy.
*/
set queues(value: Array<string>);
/**
* The provider-assigned unique ID for this managed resource.
*
* @cloudformationAttribute Id
*/
get attrId(): string;
protected get cfnProperties(): Record<string, any>;
/**
* Examines the CloudFormation resource and discloses attributes
*
* @param inspector tree inspector to collect and process attributes
*/
inspect(inspector: cdk.TreeInspector): void;
protected renderProperties(props: Record<string, any>): Record<string, any>;
}
/**
* Properties for defining a `CfnQueuePolicy`
*
* @struct
* @stability external
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queuepolicy.html
*/
export interface CfnQueuePolicyProps {
/**
* A policy document that contains the permissions for the specified Amazon SQS queues.
*
* For more information about Amazon SQS policies, see [Using custom policies with the Amazon SQS access policy language](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html) in the *Amazon SQS Developer Guide* .
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queuepolicy.html#cfn-sqs-queuepolicy-policydocument
*/
readonly policyDocument: any | cdk.IResolvable;
/**
* The URLs of the queues to which you want to add the policy.
*
* You can use the `[Ref](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html)` function to specify an `[AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html)` resource.
*
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queuepolicy.html#cfn-sqs-queuepolicy-queues
*/
readonly queues: Array<string>;
}
export type { IQueueRef, QueueReference };
export type { IQueueInlinePolicyRef, QueueInlinePolicyReference };
export type { IQueuePolicyRef, QueuePolicyReference };

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
import type { Construct } from 'constructs';
import type { QueueProps, RedriveAllowPolicy } from './index';
export declare function validateQueueProps(scope: Construct, props: QueueProps): void;
export declare function validateRedriveAllowPolicy(scope: Construct, policy: RedriveAllowPolicy): void;

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateQueueProps=validateQueueProps,exports.validateRedriveAllowPolicy=validateRedriveAllowPolicy;var index_1=()=>{var tmp=require("./index");return index_1=()=>tmp,tmp},core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp},helpers_internal_1=()=>{var tmp=require("../../core/lib/helpers-internal");return helpers_internal_1=()=>tmp,tmp};function validateRange(value,minValue,maxValue){return value!==void 0&&!core_1().Token.isUnresolved(value)&&(value<minValue||value>maxValue)}const queueValidationRules=[{condition:props=>validateRange(props.deliveryDelay?.toSeconds(),0,900),message:props=>`delivery delay must be between 0 and 900 seconds, but ${props.deliveryDelay?.toSeconds()} was provided`},{condition:props=>validateRange(props.maxMessageSizeBytes,1024,1048576),message:props=>`maximum message size must be between 1,024 and 1,048,576 bytes, but ${props.maxMessageSizeBytes} was provided`},{condition:props=>validateRange(props.retentionPeriod?.toSeconds(),60,1209600),message:props=>`message retention period must be between 60 and 1,209,600 seconds, but ${props.retentionPeriod?.toSeconds()} was provided`},{condition:props=>validateRange(props.receiveMessageWaitTime?.toSeconds(),0,20),message:props=>`receive wait time must be between 0 and 20 seconds, but ${props.receiveMessageWaitTime?.toSeconds()} was provided`},{condition:props=>validateRange(props.visibilityTimeout?.toSeconds(),0,43200),message:props=>`visibility timeout must be between 0 and 43,200 seconds, but ${props.visibilityTimeout?.toSeconds()} was provided`},{condition:props=>validateRange(props.deadLetterQueue?.maxReceiveCount,1,Number.MAX_SAFE_INTEGER),message:props=>`dead letter target maximum receive count must be 1 or more, but ${props.deadLetterQueue?.maxReceiveCount} was provided`}],redriveValidationRules=[{condition:({redrivePermission,sourceQueues})=>redrivePermission===index_1().RedrivePermission.BY_QUEUE&&(!sourceQueues||sourceQueues.length===0),message:()=>"At least one source queue must be specified when RedrivePermission is set to 'byQueue'"},{condition:({redrivePermission,sourceQueues})=>!!(redrivePermission===index_1().RedrivePermission.BY_QUEUE&&sourceQueues&&sourceQueues.length>10),message:()=>"Up to 10 sourceQueues can be specified. Set RedrivePermission to 'allowAll' to specify more"},{condition:({redrivePermission,sourceQueues})=>!!((redrivePermission===index_1().RedrivePermission.ALLOW_ALL||redrivePermission===index_1().RedrivePermission.DENY_ALL)&&sourceQueues),message:()=>"sourceQueues cannot be configured when RedrivePermission is set to 'allowAll' or 'denyAll'"}];function validateQueueProps(scope,props){(0,helpers_internal_1().validateAllProps)(scope,index_1().Queue.name,props,queueValidationRules)}function validateRedriveAllowPolicy(scope,policy){(0,helpers_internal_1().validateAllProps)(scope,index_1().Queue.name,policy,redriveValidationRules)}