Docs / Strand / connectors/aws-sqs
AWS SQS
Direction: Read / Write | Type: aws.sqs
Amazon Simple Queue Service connector for sending and receiving messages from SQS queues.
Required Permissions
The IAM user or role must have the following permissions:
| Operation | Required IAM Permissions |
|---|---|
send_message |
sqs:SendMessage |
receive_message |
sqs:ReceiveMessage, sqs:DeleteMessage |
Tip: Scope permissions to specific queue ARNs to follow the principle of least privilege.
Operations
| Operation | Direction | Description |
|---|---|---|
send_message |
Write | Send a message to the queue |
receive_message |
Read | Receive messages from the queue |
Connector Configuration
| Field | Required | Default | Description |
|---|---|---|---|
| Authentication Type | No | api_key |
api_key for explicit credentials, role to use the host's IAM role / default credential chain |
| Region | Yes | - | AWS region code (e.g., us-east-1) |
| Endpoint URL | No | - | Custom endpoint for a self-managed target or an AWS VPC endpoint. Leave empty for AWS. |
| Access Key ID | Conditional | - | AWS access key (encrypted). Required when Authentication Type is api_key |
| Secret Access Key | Conditional | - | AWS secret key (encrypted). Required when Authentication Type is api_key |
| Role ARN | Conditional | - | Your IAM role ARN for cross-account access via STS AssumeRole. Required when Authentication Type is role. The role must trust the Tendrl AWS account. |
| External ID | No | - | External ID for STS AssumeRole (encrypted). Recommended with role auth to prevent confused-deputy attacks. |
| Queue URL | No | - | Default SQS queue URL (can be overridden at node level) |
Role-Based Authentication
With role authentication you do not store static access keys; Strand authenticates using the host's default credential chain (EC2 instance profile, ECS task role, or environment credentials). You must still provide a Role ARN when creating the connector (the role should trust the Tendrl AWS account); an optional External ID hardens the trust policy.
Node Configuration
| Field | Required | Description |
|---|---|---|
| Operation | Yes | send_message or receive_message |
| Queue URL | No | SQS queue URL (overrides connector default) |
| Max Messages | No | Maximum messages to receive (default: 1, for receive_message only) |
Output
send_message
json
{
"success": true,
"status": "sent",
"data": {
"message_id": "abc-123-def",
"queue_url": "https://sqs.us-east-1.amazonaws.com/123456789/my-queue"
},
"service": "aws.sqs",
"operation": "send_message"
}
receive_message
json
{
"success": true,
"status": "received",
"data": {
"messages": [{"key": "value"}],
"count": 1
},
"service": "aws.sqs",
"operation": "receive_message"
}
When the queue is empty:
json
{
"success": true,
"status": "empty",
"data": {
"messages": [],
"count": 0
},
"service": "aws.sqs",
"operation": "receive_message"
}
Access received messages:
jinja2
{{ payload.data.messages[0] }}
{{ payload.data.count }}
Example
Connector Setup:
json
{
"region": "us-east-1",
"access_key_id": "AKIAIOSFODNN7EXAMPLE",
"secret_access_key": "wJalrXUtnFEMI/K7MDENG...",
"queue_url": "https://sqs.us-east-1.amazonaws.com/123456789/my-queue"
}
Connector Setup (role-based):
json
{
"auth_type": "role",
"region": "us-east-1",
"role_arn": "arn:aws:iam::123456789012:role/strand-access",
"queue_url": "https://sqs.us-east-1.amazonaws.com/123456789/my-queue"
}
Node Configuration (send):
- Operation:
send_message
Node Configuration (receive):
- Operation:
receive_message - Max Messages:
5
Tendrl