cueitup
lets you inspect messages in an AWS SQS queue in a simple and
deliberate manner. You can pull one or more messages on demand, peruse through
them in a list, and, if needed, persist them to your local filesystem. cueitup
offers both a terminal UI and a web interface.
homebrew:
brew install dhth/tap/cueitup
go:
go install github.com/dhth/cueitup@latest
Or get the binaries directly from a release. Read more about verifying the authenticity of released artifacts here.
Create a YAML configuration file that looks like the following. The location of
this file depends on your operating system, and can be determined by running
cueitup -h
.
profiles:
# a name for a profile; you refer to it when running cueitup
- name: profile-a #
# the SQS queue URL
queue_url: https://sqs.eu-central-1.amazonaws.com/000000000000/queue-a
# use this to leverage a profile contained in the shared AWS config and credentials files
# https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html
aws_config_source: profile:local-profile
# the format of the message body; possible values: [json, none]
format: json
- name: profile-b
queue_url: https://sqs.eu-central-1.amazonaws.com/000000000000/queue-b
aws_config_source: env
format: none
- name: profile-c
queue_url: https://sqs.eu-central-1.amazonaws.com/000000000000/queue-c
aws_config_source: env
format: json
# to only show the contents of a nested object
subset_key: Message
# cueitup will display this key value pair as "context" in its list
context_key: aggregateId
cueitup
can display messages via two interfaces: a TUI or a webpage
$ cueitup tui --help
open cueitup's TUI
Usage:
cueitup tui <PROFILE> [flags]
Flags:
-c, --config-path string location of cueitup's config file (default "/Users/user/Library/Application Support/cueitup/cueitup.yml")
-d, --debug whether to only display config picked up by cueitup
-D, --delete-messages whether to start the TUI with the setting "delete messages" ON (default true)
-h, --help help for tui
-P, --persist-messages whether to start the TUI with the setting "persist messages" ON
-M, --show-message-count whether to start the TUI with the setting "show message count" ON (default true)
-S, --skip-messages whether to start the TUI with the setting "skip messages" ON
cueitup.mov
$ cueitup serve --help
open cueitup's web interface
Usage:
cueitup serve <PROFILE> [flags]
Flags:
-c, --config-path string location of cueitup's config file (default "/Users/user/Library/Application Support/cueitup/cueitup.yml")
-d, --debug whether to only display config picked up by cueitup
-D, --delete-messages whether to start the web interface with the setting "delete messages" ON (default true)
-h, --help help for serve
-o, --open whether to open web interface in browser automatically
-S, --select-on-hover whether to start the web interface with the setting "select on hover" ON
-M, --show-message-count whether to start the web interface with the setting "show message count" ON (default true)
cueitup-web.mov
Say the messages in your SQS queue look like this.
{
"browserInfo": {
"browserName": "Firefox",
"browserVersion": 118,
"deviceType": "Desktop",
"platform": "Linux"
},
"isBot": true,
"metadata": "{\"aggregateId\":\"00000000-0000-0000-0000-000000012363\",\"sequenceNr\":347}",
"sessionId": "987e6543-b21a-34c5-d678-123456789abc",
"transactionId": "123e4567-e89b-12d3-a456-426614174000"
}
You can configure cueitup
to show a specific key value pair as "context" in
its UI. You do do via the context_key
configuration property.
- name: sample-profile
queue_url: ...
aws_config_source: ...
format: json
context_key: transactionId
If you want to only see the nested object under browserInfo
, you'd configure a
profile like this:
- name: sample-profile
queue_url: ...
aws_config_source: ...
format: json
subset_key: browserInfo
context_key: platform
cueitup
can also work with stringified JSON.
- name: sample-profile
queue_url: ...
aws_config_source: ...
format: json
subset_key: metadata
context_key: aggregateId
Keymap | Description |
---|---|
<tab> |
Switch focus to next section |
<s-tab> |
Switch focus to previous section |
? |
Show help view |
q |
Go back or quit |
Keymap | Description |
---|---|
h/<Up> |
Move cursor up |
k/<Down> |
Move cursor down |
n |
Fetch the next message from the queue |
N |
Fetch up to 10 more messages from the queue |
} |
Fetch up to 100 more messages from the queue |
d |
Toggle deletion mode; cueitup will delete messages after reading them |
M |
Toggle polling for message count in queue |
p |
Toggle persist mode (messages will be saved to a specific location) |
s |
Toggle skipping mode (consume messages without populating the internal list) |
Keymap | Description |
---|---|
[ , h |
Show details for the previous entry in the list |
] , l |
Show details for the next entry in the list |
In case you get the cueitup
binary directly from a
release, you may want to verify its
authenticity. Checksums are applied to all released artifacts, and the resulting
checksum file is signed using
cosign.
Steps to verify (replace A.B.C
in the commands listed below with the version
you want):
-
Download the following files from the release:
- cueitup_A.B.C_checksums.txt
- cueitup_A.B.C_checksums.txt.pem
- cueitup_A.B.C_checksums.txt.sig
-
Verify the signature:
cosign verify-blob cueitup_A.B.C_checksums.txt \ --certificate cueitup_A.B.C_checksums.txt.pem \ --signature cueitup_A.B.C_checksums.txt.sig \ --certificate-identity-regexp 'https://github\.com/dhth/cueitup/\.github/workflows/.+' \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com"
-
Download the compressed archive you want, and validate its checksum:
curl -sSLO https://github.com/dhth/cueitup/releases/download/vA.B.C/cueitup_A.B.C_linux_amd64.tar.gz sha256sum --ignore-missing -c cueitup_A.B.C_checksums.txt
-
If checksum validation goes through, uncompress the archive:
tar -xzf cueitup_A.B.C_linux_amd64.tar.gz ./cueitup # profit!
cueitup
is built using the TUI framework bubbletea.