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

13
cdk/node_modules/aws-cdk-lib/aws-sqs/.jsiirc.json generated vendored Normal file
View File

@@ -0,0 +1,13 @@
{
"targets": {
"java": {
"package": "software.amazon.awscdk.services.sqs"
},
"dotnet": {
"namespace": "Amazon.CDK.AWS.SQS"
},
"python": {
"module": "aws_cdk.aws_sqs"
}
}
}

110
cdk/node_modules/aws-cdk-lib/aws-sqs/README.md generated vendored Normal file
View File

@@ -0,0 +1,110 @@
# Amazon Simple Queue Service Construct Library
Amazon Simple Queue Service (SQS) is a fully managed message queuing service that
enables you to decouple and scale microservices, distributed systems, and serverless
applications. SQS eliminates the complexity and overhead associated with managing and
operating message oriented middleware, and empowers developers to focus on differentiating work.
Using SQS, you can send, store, and receive messages between software components at any volume,
without losing messages or requiring other services to be available.
## Installation
Import to your project:
```ts nofixture
import * as sqs from 'aws-cdk-lib/aws-sqs';
```
## Basic usage
Here's how to add a basic queue to your application:
```ts
new sqs.Queue(this, 'Queue');
```
## Encryption
By default queues are encrypted using SSE-SQS. If you want to change the encryption mode, set the `encryption` property.
The following encryption modes are supported:
* KMS key that SQS manages for you
* KMS key that you can managed yourself
* Server-side encryption managed by SQS (SSE-SQS)
* Unencrypted
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).
```ts
// Use managed key
new sqs.Queue(this, 'Queue', {
encryption: sqs.QueueEncryption.KMS_MANAGED,
});
// Use custom key
const myKey = new kms.Key(this, 'Key');
new sqs.Queue(this, 'Queue', {
encryption: sqs.QueueEncryption.KMS,
encryptionMasterKey: myKey,
});
// Use SQS managed server side encryption (SSE-SQS)
new sqs.Queue(this, 'Queue', {
encryption: sqs.QueueEncryption.SQS_MANAGED,
});
// Unencrypted queue
new sqs.Queue(this, 'Queue', {
encryption: sqs.QueueEncryption.UNENCRYPTED,
});
```
## Encryption in transit
If you want to enforce encryption of data in transit, set the `enforceSSL` property to `true`.
A resource policy statement that allows only encrypted connections over HTTPS (TLS)
will be added to the queue.
```ts
new sqs.Queue(this, 'Queue', {
enforceSSL: true,
});
```
## First-In-First-Out (FIFO) queues
FIFO queues give guarantees on the order in which messages are dequeued, and have additional
features in order to help guarantee exactly-once processing. For more information, see
the SQS manual. Note that FIFO queues are not available in all AWS regions.
A queue can be made a FIFO queue by either setting `fifo: true`, giving it a name which ends
in `".fifo"`, or by enabling a FIFO specific feature such as: content-based deduplication,
deduplication scope or fifo throughput limit.
## Dead letter source queues permission
You can configure the permission settings for queues that can designate the created queue as their dead-letter queue using the `redriveAllowPolicy` attribute.
By default, all queues within the same account and region are permitted as source queues.
```ts
declare const sourceQueue: sqs.IQueue;
// Only the sourceQueue can specify this queue as the dead-letter queue.
const queue1 = new sqs.Queue(this, 'Queue2', {
redriveAllowPolicy: {
sourceQueues: [sourceQueue],
}
});
// No source queues can specify this queue as the dead-letter queue.
const queue2 = new sqs.Queue(this, 'Queue', {
redriveAllowPolicy: {
redrivePermission: sqs.RedrivePermission.DENY_ALL,
}
});
```

44
cdk/node_modules/aws-cdk-lib/aws-sqs/grants.json generated vendored Normal file
View File

@@ -0,0 +1,44 @@
{
"resources": {
"Queue": {
"hasResourcePolicy": true,
"grants": {
"consumeMessages": {
"actions": [
"sqs:ReceiveMessage",
"sqs:ChangeMessageVisibility",
"sqs:GetQueueUrl",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes"
],
"keyActions": [
"kms:Decrypt"
],
"docSummary": "Grant permissions to consume messages from a queue\n\nThis will grant the following permissions:\n\n - sqs:ChangeMessageVisibility\n - sqs:DeleteMessage\n - sqs:ReceiveMessage\n - sqs:GetQueueAttributes\n - sqs:GetQueueUrl\n\nIf encryption is used, permission to use the key to decrypt the contents of the queue will also be granted to the same principal.\n\nThis will grant the following KMS permissions:\n\n - kms:Decrypt"
},
"sendMessages": {
"actions": [
"sqs:SendMessage",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl"
],
"keyActions": [
"kms:Decrypt",
"kms:Encrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*"
],
"docSummary": "Grant access to send messages to a queue to the given identity.\n\nThis will grant the following permissions:\n\n - sqs:SendMessage\n - sqs:GetQueueAttributes\n - sqs:GetQueueUrl\n\nIf encryption is used, permission to use the key to encrypt/decrypt the contents of the queue will also be granted to the same principal.\n\nThis will grant the following KMS permissions:\n\n - kms:Decrypt\n - kms:Encrypt\n - kms:ReEncrypt*\n - kms:GenerateDataKey*"
},
"purge": {
"actions": [
"sqs:PurgeQueue",
"sqs:GetQueueAttributes",
"sqs:GetQueueUrl"
]
}
}
}
}
}

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

@@ -0,0 +1 @@
export * from './lib';

1
cdk/node_modules/aws-cdk-lib/aws-sqs/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});var _noFold;exports.QueuePolicy=void 0,Object.defineProperty(exports,_noFold="QueuePolicy",{enumerable:!0,configurable:!0,get:()=>{var value=require("./lib").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("./lib").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("./lib").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("./lib").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("./lib").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("./lib").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("./lib").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("./lib").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("./lib").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("./lib").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("./lib").QueueGrants;return Object.defineProperty(exports,_noFold="QueueGrants",{enumerable:!0,configurable:!0,value}),value}});

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)}