What is @aws-cdk/aws-sqs?
@aws-cdk/aws-sqs is an AWS Cloud Development Kit (CDK) library that allows you to define Amazon Simple Queue Service (SQS) queues in your AWS infrastructure as code. It provides a high-level, object-oriented abstraction to create and manage SQS queues, configure their properties, and integrate them with other AWS services.
What are @aws-cdk/aws-sqs's main functionalities?
Create an SQS Queue
This code sample demonstrates how to create a basic SQS queue with a visibility timeout of 300 seconds using the AWS CDK.
const cdk = require('@aws-cdk/core');
const sqs = require('@aws-cdk/aws-sqs');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const queue = new sqs.Queue(this, 'MyQueue', {
visibilityTimeout: cdk.Duration.seconds(300)
});
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
Configure Dead-Letter Queue
This code sample shows how to configure a dead-letter queue for an SQS queue. Messages that are not successfully processed after 5 attempts will be moved to the dead-letter queue.
const cdk = require('@aws-cdk/core');
const sqs = require('@aws-cdk/aws-sqs');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const deadLetterQueue = new sqs.Queue(this, 'DeadLetterQueue');
const queue = new sqs.Queue(this, 'MyQueue', {
deadLetterQueue: {
queue: deadLetterQueue,
maxReceiveCount: 5
}
});
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
Integrate SQS with Lambda
This code sample demonstrates how to integrate an SQS queue with an AWS Lambda function. The Lambda function will be triggered whenever a new message is added to the SQS queue.
const cdk = require('@aws-cdk/core');
const sqs = require('@aws-cdk/aws-sqs');
const lambda = require('@aws-cdk/aws-lambda');
const lambdaEventSources = require('@aws-cdk/aws-lambda-event-sources');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const queue = new sqs.Queue(this, 'MyQueue');
const myFunction = new lambda.Function(this, 'MyFunction', {
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda')
});
myFunction.addEventSource(new lambdaEventSources.SqsEventSource(queue));
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
Other packages similar to @aws-cdk/aws-sqs
aws-sdk
The aws-sdk package is the official AWS SDK for JavaScript. It provides low-level APIs for interacting with all AWS services, including SQS. Unlike @aws-cdk/aws-sqs, which is used for defining infrastructure as code, aws-sdk is used for making API calls to AWS services from your application code.
serverless
The serverless framework is a popular open-source framework for building and deploying serverless applications. It supports AWS SQS as an event source for AWS Lambda functions. While @aws-cdk/aws-sqs focuses on infrastructure as code, serverless provides a higher-level abstraction for deploying serverless applications, including SQS integration.
pulumi
Pulumi is an infrastructure as code tool that supports multiple cloud providers, including AWS. It allows you to define and manage AWS SQS queues using familiar programming languages. Pulumi is similar to AWS CDK in that it provides a high-level, object-oriented abstraction for defining cloud infrastructure.
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:
import * as sqs from '@aws-cdk/aws-sqs';
Basic usage
Here's how to add a basic queue to your application:
new sqs.Queue(this, 'Queue');
Encryption
If you want to encrypt the queue contents, set the encryption
property. You can have
the messages encrypted with a key that SQS manages for you, or a key that you
can manage yourself.
new sqs.Queue(this, 'Queue', {
encryption: sqs.QueueEncryption.KMS_MANAGED,
});
const myKey = new kms.Key(this, 'Key');
new sqs.Queue(this, 'Queue', {
encryption: sqs.QueueEncryption.KMS,
encryptionMasterKey: myKey,
});
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.