Skip to main content

Amazon SQS Component

Send, receive and manage messages within an Amazon (AWS) SQS queue

Component key: aws-sqs

Description

Amazon SQS is a message queueing service from Amazon Web Services. The Amazon SQS component allows you to send and receive messages within an Amazon SQS queue.

Using Amazon SQS as a FIFO queue for instance executions

If you have a workflow that requires requests to be processed in a specific order, or a workflow that requires you to process only one record at a time, you can leverage the Amazon SQS component along with an SQS FIFO queue to ensure that the requests are processed sequentially.

See Using a FIFO Queue to Ensure In-Order Processing for more information.

Connections

AWS SQS Access Key and Secret

An AWS IAM access key pair is required to interact with Amazon SQS. Make sure that the key pair you generate in AWS has proper permissions to the SQS resources you want to access. Read more about SQS IAM policies in the AWS docs.

AWS Role ARN

To enable the IAM role authentication begin by logging into the AWS Console and navigate to Identity and Access Management (IAM).

To create an ARN user and generate credentials:

  1. Navigate to Users and select Create User.
  • Provide a User name and check the box providing them user access to the AWS Managment Console if needed.
  • Once completed with the User creation, copy the ARN provided in the summary for a later step.
  1. To obtain the ARN for an existing User, click on the designated username from the Users page and the ARN will be provided in the summary section.
  2. From the summary section, select Create access key
  • Select Third-party service as the access key type and select next.
  • Set a description and select create access key.
  • Copy the Access Key and Secret access key and enter those into the connection configuration of your integration along with the ARN.

To create and assign a user a role:

  1. Navigate to Roles and select Create Role.
  • Select Custom Trust Policy for the Trusted entity types
  • Copy the following statement into the statement console. Making sure to replace the ARN with the user's actual ARN from the previous section
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "ARN"
},
"Action": "sts:AssumeRole"
}
]
}
  • When adding permissions provide the AmazonSQSFullAccess permission
  • Complete remaining steps and select Create Role

Data Sources

Select Queues

Select an SQS queue from a list | key: selectQueue | type: picklist


Actions

Create Queue

Create an Amazon SQS Queue | key: createQueue

Output Example Payload

{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000",
"attempts": 1,
"totalRetryDelay": 0
},
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/012345678900/my-example-queue"
}
}

Delete Message

Delete a message from an Amazon SQS Queue | key: deleteMessage


Delete Queue

Delete an Amazon SQS Queue | key: deleteQueue

Output Example Payload

{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000",
"attempts": 1,
"totalRetryDelay": 0
}
}
}

Get a Queue's URL

Get the URL of an Amazon SQS Queue given its name | key: getQueueUrl

Output Example Payload

{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000",
"attempts": 1,
"totalRetryDelay": 0
},
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/012345678900/my-example-queue"
}
}

List Queues

Fetch a list of Amazon SQS Queues | key: listQueues

Output Example Payload

{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000",
"attempts": 1,
"totalRetryDelay": 0
},
"QueueUrls": [
"https://sqs.us-east-1.amazonaws.com/012345678900/my-example-queue",
"https://sqs.us-east-1.amazonaws.com/012345678900/my-second-queue"
]
}
}

Receive Messages

Receive messages from an Amazon SQS Queue | key: receiveMessages

note

Receive Messages can behave differently depending on what kind of queue you are trying to poll. If you are using a non-FIFO queue, this action may return false blank responses. SNS FIFO is intended for customer use cases where it is critical to maintain the consistency in processing messages across multiple independent services in a strictly ordered manner. If you are polling a FIFO queue you are guaranteed to receive the maximum amount of messages you specify (up to 10) per request. Refer to the AWS docs for information on migrating to a FIFO queue

Output Example Payload

{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000",
"attempts": 1,
"totalRetryDelay": 0
},
"Messages": [
{
"MessageId": "00000000-00000000-00000000-00000000",
"ReceiptHandle": "Example Receipt Handle",
"MD5OfBody": "e909509655c5154f008e0ee43ed655b2",
"Body": "My Test Message",
"Attributes": {
"SenderId": "EXAMPLE5OBBA2B7URDN4G",
"ApproximateFirstReceiveTimestamp": "1646857534190",
"ApproximateReceiveCount": "3",
"SentTimestamp": "1646857528982"
},
"MessageAttributes": {
"exampleKey1": {
"StringValue": "exampleValue",
"DataType": "String"
},
"exampleKey2": {
"StringValue": "exampleValue2",
"DataType": "String"
}
}
}
]
}
}

Send Message

Send a message to an Amazon SQS Queue | key: sendMessage

Output Example Payload

{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000",
"attempts": 1,
"totalRetryDelay": 0
},
"MD5OfMessageBody": "05e891701cde4c383b66f46a7b9a808c",
"MD5OfMessageAttributes": "23adb2d3b76c04a687f9a5fcfb6086bb",
"MessageId": "00000000-00000000-00000000-00000000"
}
}