Skip to main content

Actions

The ballerinax/aws.sqs package exposes the following clients:

ClientPurpose
ClientSend, receive, and manage messages and queues in Amazon SQS.

For event-driven integration, see the Trigger Reference.


Client

Send, receive, and manage messages and queues in Amazon SQS.

Configuration

FieldTypeDefaultDescription
regionRegionRequiredAWS region where the SQS queue is located (e.g., US_EAST_1).
authStaticAuthConfig|ProfileAuthConfig|DEFAULT_CREDENTIALSRequiredAuthentication configuration: static credentials, AWS profile, or default credential chain.

Initializing the client

import ballerinax/aws.sqs;

configurable string accessKeyId = ?;
configurable string secretAccessKey = ?;

sqs:Client sqsClient = check new ({
region: sqs:US_EAST_1,
auth: {
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
}
});

Operations

Send & receive messages

sendMessage

Delivers a message (1 byte to 256 KiB) to the specified SQS queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the target SQS queue.
messageBodystringYesThe message content to send.
delaySecondsint?NoDelay in seconds before the message becomes visible (0–900).
messageAttributesmap<MessageAttributeValue>?NoCustom message attributes as key-value pairs.
messageDeduplicationIdstring?NoDeduplication token for FIFO queues.
messageGroupIdstring?NoMessage group identifier for FIFO queues.

Returns: SendMessageResponse|error

Sample code:

sqs:SendMessageResponse response = check sqsClient->sendMessage(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
"Hello from Ballerina!"
);

Sample response:

{"messageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "md5OfMessageBody": "e4d909c290d0fb1ca068ffaddf22cbd0"}
receiveMessage

Retrieves one or more messages from the specified queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
maxNumberOfMessagesint?NoMaximum number of messages to receive (1–10, default 1).
waitTimeSecondsint?NoLong poll duration in seconds (0–20).
visibilityTimeoutint?NoVisibility timeout for received messages in seconds.
messageAttributeNamesstring[]?NoNames of custom message attributes to include.
messageSystemAttributeNamesMessageSystemAttributeName[]?NoSystem attributes to include (e.g., ALL, SENDER_ID).

Returns: Message[]|error

Sample code:

sqs:Message[] messages = check sqsClient->receiveMessage(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
maxNumberOfMessages = 5,
waitTimeSeconds = 10
);

Sample response:

[{"messageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "body": "Hello from Ballerina!", "md5OfBody": "e4d909c290d0fb1ca068ffaddf22cbd0", "receiptHandle": "AQEBwJn..."}]
deleteMessage

Deletes a message from the queue using its receipt handle.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
receiptHandlestringYesThe receipt handle of the message to delete.

Returns: error?

Sample code:

check sqsClient->deleteMessage(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
messages[0].receiptHandle ?: ""
);
changeMessageVisibility

Changes the visibility timeout of a received message (0 to 43,200 seconds).

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
receiptHandlestringYesThe receipt handle of the message.
visibilityTimeoutintYesNew visibility timeout in seconds (0–43,200).

Returns: error?

Sample code:

check sqsClient->changeMessageVisibility(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
messages[0].receiptHandle ?: "",
60
);

Batch operations

sendMessageBatch

Sends up to 10 messages to the specified queue in a single request.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the target SQS queue.
entriesSendMessageBatchEntry[]YesArray of batch send entries (max 10), each with an id and body.

Returns: SendMessageBatchResponse|error

Sample code:

sqs:SendMessageBatchResponse batchRes = check sqsClient->sendMessageBatch(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
[
{id: "msg1", body: "First message"},
{id: "msg2", body: "Second message"},
{id: "msg3", body: "Third message"}
]
);

Sample response:

{"successful": [{"id": "msg1", "messageId": "a1b2c3d4...", "md5OfMessageBody": "abc123"}, {"id": "msg2", "messageId": "e5f6a7b8...", "md5OfMessageBody": "def456"}, {"id": "msg3", "messageId": "c9d0e1f2...", "md5OfMessageBody": "ghi789"}], "failed": []}
deleteMessageBatch

Deletes up to 10 messages from the queue in a single request.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
entriesDeleteMessageBatchEntry[]YesArray of entries, each with an id and receiptHandle.

Returns: DeleteMessageBatchResponse|error

Sample code:

sqs:DeleteMessageBatchResponse deleteRes = check sqsClient->deleteMessageBatch(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
[
{id: "msg1", receiptHandle: messages[0].receiptHandle ?: ""},
{id: "msg2", receiptHandle: messages[1].receiptHandle ?: ""}
]
);

Sample response:

{"successful": [{"id": "msg1"}, {"id": "msg2"}], "failed": []}

Queue management

createQueue

Creates a new standard or FIFO queue. FIFO queue names must end with .fifo.

Parameters:

NameTypeRequiredDescription
queueNamestringYesName of the queue to create.
queueAttributesQueueAttributes?NoQueue configuration attributes (visibility timeout, retention period, etc.).
tagsmap<string>?NoCost allocation tags for the queue.

Returns: string|error

Sample code:

string queueUrl = check sqsClient->createQueue("my-new-queue");

Sample response:

"https://sqs.us-east-1.amazonaws.com/123456789/my-new-queue"
deleteQueue

Deletes the queue specified by the URL, regardless of contents.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the queue to delete.

Returns: error?

Sample code:

check sqsClient->deleteQueue("https://sqs.us-east-1.amazonaws.com/123456789/my-queue");
getQueueUrl

Returns the URL of an existing queue by its name.

Parameters:

NameTypeRequiredDescription
queueNamestringYesName of the queue.
queueOwnerAWSAccountIdstring?NoAWS account ID of the queue owner (for cross-account access).

Returns: string|error

Sample code:

string queueUrl = check sqsClient->getQueueUrl("my-queue");

Sample response:

"https://sqs.us-east-1.amazonaws.com/123456789/my-queue"
listQueues

Lists queues in your account, with optional prefix filtering and pagination.

Parameters:

NameTypeRequiredDescription
maxResultsint?NoMaximum number of results to return.
nextTokenstring?NoPagination token from a previous response.
queueNamePrefixstring?NoFilter queues by name prefix.

Returns: ListQueuesResponse|error

Sample code:

sqs:ListQueuesResponse queues = check sqsClient->listQueues(queueNamePrefix = "my-");

Sample response:

{"queueUrls": ["https://sqs.us-east-1.amazonaws.com/123456789/my-queue", "https://sqs.us-east-1.amazonaws.com/123456789/my-fifo-queue.fifo"]}
purgeQueue

Irreversibly deletes all messages from the specified queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the queue to purge.

Returns: error?

Sample code:

check sqsClient->purgeQueue("https://sqs.us-east-1.amazonaws.com/123456789/my-queue");

Queue attributes

getQueueAttributes

Retrieves one or more attributes of the specified queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
attributeNamesQueueAttributeName[]?NoList of attribute names to retrieve. Defaults to all attributes.

Returns: GetQueueAttributesResponse|error

Sample code:

sqs:GetQueueAttributesResponse attrs = check sqsClient->getQueueAttributes(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue"
);

Sample response:

{"queueAttributes": {"VisibilityTimeout": "30", "MessageRetentionPeriod": "345600", "ApproximateNumberOfMessages": "5", "CreatedTimestamp": "1700000000"}}
setQueueAttributes

Sets one or more attributes on the specified queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
queueAttributesQueueAttributesYesAttributes to set (e.g., visibility timeout, retention period).

Returns: error?

Sample code:

check sqsClient->setQueueAttributes(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
{visibilityTimeout: 60, messageRetentionPeriod: 86400}
);

Queue tagging

tagQueue

Adds cost allocation tags to the specified queue (max 50 tags recommended).

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
tagsmap<string>YesKey-value pairs for the tags.

Returns: error?

Sample code:

check sqsClient->tagQueue(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
{"Environment": "Production", "Team": "Backend"}
);
untagQueue

Removes one or more tags from the specified queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.
tagsstring[]YesList of tag keys to remove.

Returns: error?

Sample code:

check sqsClient->untagQueue(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue",
["Environment", "Team"]
);
listQueueTags

Lists all cost allocation tags for the specified queue.

Parameters:

NameTypeRequiredDescription
queueUrlstringYesThe URL of the SQS queue.

Returns: ListQueueTagsResponse|error

Sample code:

sqs:ListQueueTagsResponse tagsRes = check sqsClient->listQueueTags(
"https://sqs.us-east-1.amazonaws.com/123456789/my-queue"
);

Sample response:

{"tags": {"Environment": "Production", "Team": "Backend"}}

Dead-Letter queue operations

startMessageMoveTask

Starts a task to move messages from a dead-letter queue to another queue.

Parameters:

NameTypeRequiredDescription
sourceARNstringYesARN of the source dead-letter queue.
destinationARNstring?NoARN of the destination queue. Defaults to the original source queue.
maxNumberOfMessagesPerSecondint?NoMaximum messages moved per second.

Returns: StartMessageMoveTaskResponse|error

Sample code:

sqs:StartMessageMoveTaskResponse moveRes = check sqsClient->startMessageMoveTask(
"arn:aws:sqs:us-east-1:123456789:my-dlq"
);

Sample response:

{"taskHandle": "eyJ0YXNrSGFuZGxlIjoiYTFiMmMzZDQifQ=="}
cancelMessageMoveTask

Cancels an active message move task.

Parameters:

NameTypeRequiredDescription
taskHandlestringYesThe task handle returned by startMessageMoveTask.

Returns: CancelMessageMoveTaskResponse|error

Sample code:

sqs:CancelMessageMoveTaskResponse cancelRes = check sqsClient->cancelMessageMoveTask(
"eyJ0YXNrSGFuZGxlIjoiYTFiMmMzZDQifQ=="
);

Sample response:

{"approximateNumberOfMessagesMoved": 42}