Moves all messages including its attributes from one AWS SQS queue to another.
Expected moving performance is 10K messages per minute.
- Node.js 8.10 or later
- optionally yarn 1 or later
- Batch messages processing and concurrent promises fulfillment provide high performance
- Messages are deleting from source queue only if they have been successfully sent to destination queue
- Message attributes are copied over
- CLI tool supports SQS names instead of full URLs
npm install -g sqs-move-with-attrs
or
yarn global add sqs-move-with-attrs
Clone project repository from github to the local folder and run
yarn install
Empty configuration object and Default Credential Provider chain are used in CLI to create AWS SQS client.
AWS credentials and AWS region configuration should be supplied to SDK either through shared credentials file / shared config file either through environment variables.
If AWS region not specified in AWS config file please define it via AWS_REGION environment variable.
sqs-move-with-attrs <source_SQS_URL_or_name> <destination_SQS_URL_or_name>
yarn move <source_SQS_URL_or_name> <destination_SQS_URL_or_name>
Node.js
const {SQS} = require("aws-sdk");
const {SqsMoveWithAttrs} = require("sqs-move-with-attrs");
...
Typescript
import {SQS} from "aws-sdk"
import {SqsMoveWithAttrs} from "sqs-move-with-attrs";
...
common part of script
const sqsClient = new SQS({region:'us-east-1'});
const sqsMoveWithAttrs = new SqsMoveWithAttrs(
sqsClient,
"https://sqs.us-east-1.amazonaws.com/<accountId>/sqs-name-dlq",
"https://sqs.us-east-1.amazonaws.com/<accountId>/sqs-name");
(async () => {
try {
await sqsMoveWithAttrs.move();
} catch (err) {
console.error(err);
process.exit(-1)
}
})();