Skip to content
Latchkey

aws sqs send-message: Send Messages to SQS in CI

aws sqs send-message places a message on an SQS queue identified by its queue URL, with extra required fields for FIFO queues.

Integration tests inject a message to exercise a consumer, and deploy hooks notify downstream workers. FIFO queues add two mandatory fields that catch people out.

What it does

aws sqs send-message sends --message-body to the queue at --queue-url. For FIFO queues (ending in .fifo) you must add --message-group-id, and either --message-deduplication-id or content-based dedup on the queue. --message-attributes carries typed metadata.

Common usage

Terminal
# Standard queue
aws sqs send-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/jobs \
  --message-body '{"event":"deploy","sha":"'"$GITHUB_SHA"'"}'
# FIFO queue (group + dedup required)
aws sqs send-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/jobs.fifo \
  --message-body '{"event":"deploy"}' \
  --message-group-id deploys \
  --message-deduplication-id "$GITHUB_SHA"

Options

FlagWhat it does
--queue-url <url>Full queue URL (not the name) (required)
--message-body <text>Message payload (required)
--message-group-id <id>Required for FIFO ordering
--message-deduplication-id <id>Required for FIFO unless content-based dedup is on
--delay-seconds <n>Delay delivery (standard queues)
--message-attributes {..}Typed metadata attributes

In CI

send-message wants the queue URL, not the name; resolve it once with aws sqs get-queue-url --queue-name jobs --query QueueUrl --output text. FIFO queues reject a message lacking --message-group-id, and duplicate dedup IDs within the 5-minute window are silently dropped (the same SHA twice will only enqueue once), which is usually what you want for idempotency.

Common errors in CI

"An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the SendMessage operation: The specified queue does not exist" means a wrong URL or region. "InvalidParameterValue: The queue should either have ContentBasedDeduplication enabled or MessageDeduplicationId provided explicitly" is the missing FIFO dedup ID. "MissingParameter: The request must contain the parameter MessageGroupId" is the missing FIFO group. "AccessDenied" means missing sqs:SendMessage.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →