Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/whatsfordinner/aws-sns-listener

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/whatsfordinner/aws-sns-listener

  • v0.7.1
  • Source
  • Go
  • Socket score

Version published
Created
Source

AWS SNS Listener

This util will let you listen to a Simple Notification Service (SNS) topic by creating a Simple Queue Service (SQS) queue and subscribing that queue to the SNS topic. When it's done, it'll delete the queue and the subscription.

Message body is printed to stdout and logs are printed to stderr so messages can be piped or redirected without worrying about pollution from log messages.

You can also import the package yourself and use it for your own purposes. Check the documentation here!

Pre-compiled binaries are available on the releases page.

Usage

Usage of aws-sns-listener:
  -i int
        Optional duration for delay when polling the SQS queue
  -o    Enable the GRPC OTLP exporter
  -p string
        The path of the SSM parameter to get the topic ARN from, cannot be set along with topic ARN
  -q string
        Optional name for the queue to create
  -t string
        The ARN of the topic to listen to, cannot be set along with parameter path
  -v    Log listener package events
FlagUse
-tThe ARN for the SNS topic that you want to listen to
-qName for the queue you want to create. If not provided it will be a v4 UUID prefixed with sns-listener- E.g. sns-listener-67ea4ab1-fafa-4a1c-ad76-2db314ec17e3
-pThe path to the SSM parameter you want to get the ARN for the SNS topic from. Overwrites -t
-iThe interval for polling the SQS queue in milliseconds
-oEnable the GRPC OTLP exporter for distributed tracing
-vEnable logging to stderr for the listener package

Only one of -t or -p must be provided. All others are optional

Example output:

❯ aws-sns-listener -v -p /sns-listener/topic-arn
2023/03/30 21:49:37 Fetching topic ARN from SSM parameter at path /sns-listener/topic-arn...
2023/03/30 21:49:38 Successfully fetched paramater value: arn:aws:sns:us-east-1:123456789012:aws-sns-topic-listener
2023/03/30 21:49:38 Provided polling interval invalid: 0s. Defaulting to 1 second
2023/03/30 21:49:38 Creating new queue...
	Name: sns-listener-2ee83613-3e69-497e-8378-3ef7b9ba50a8
	Allowing messages from topic: arn:aws:sns:us-east-1:123456789012:aws-sns-topic-listener
	FIFO: false
2023/03/30 21:49:38 Queue created with URL https://sqs.us-east-1.amazonaws.com/123456789012/sns-listener-2ee83613-3e69-497e-8378-3ef7b9ba50a8
2023/03/30 21:49:38 Creating a new SNS subscription...
	SNS topic ARN: arn:aws:sns:us-east-1:123456789012:aws-sns-topic-listener
	SQS queue ARN: arn:aws:sqs:us-east-1:123456789012:sns-listener-2ee83613-3e69-497e-8378-3ef7b9ba50a8
2023/03/30 21:49:38 Subscription created with ARN arn:aws:sns:us-east-1:123456789012:aws-sns-topic-listener:a051f49b-75b3-4a77-91b2-0cf1c64d9bfb
2023/03/30 21:49:38 Starting to listen to queue. Fetching messages every 1s...
{
  "Type" : "Notification",
  "MessageId" : "834b4a6e-7412-5a71-ba02-16f11fbcd2bc",
  "TopicArn" : "arn:aws:sns:us-east-1:123456789012:aws-sns-topic-listener",
  "Message" : "Hello from SNS!",
  "Timestamp" : "2023-03-30T10:50:22.443Z",
  "SignatureVersion" : "1",
  "Signature" : "uPYnR89ZJHHx5VqNOtZ1+vXz2B1gVPoNAJAyDPG4REFmnWKMTf2jUkg/oGLRVtRotAJYDdJ+xlV7tg0nshiSQ3bTj6ryNbrSrmSs1pSTKRT99UAw0RlEhzWQrvhHB1xhTJ15x21gMsuzm5wgtP3BK1qBluV0KoUzpa8H8Uk9jWElycArQyhJS8MKV57EzyFY6AW+0GHsO7PTkhB8K+aM9GtmW52yqgMYXds8vPsh83b4REVGiMlS6s/XPa+3UcKsEqNRDxi/JQ3rwosFwsZgITaXD9R3UoEETuE0jxFtphsXn6mDOVJc6oSnODEbHu0/PdZCGn2pQqkDcUZIuroZsQ==",
  "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-56e67fcb41f6fec09b0196692625d385.pem",
  "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:ap-southeast-2:123456789012:aws-sns-topic-listener:a051f49b-75b3-4a77-91b2-0cf1c64d9bfb"
}
^C2023/03/30 21:50:35 Received interrupt instruction, cancelling context
2023/03/30 21:50:35 Context cancelled, no longer listening to queue
2023/03/30 21:50:35 Removing subscription with ARN arn:aws:sns:us-east-1:123456789012:aws-sns-topic-listener:a051f49b-75b3-4a77-91b2-0cf1c64d9bfb...
2023/03/30 21:50:35 Subscription removed
2023/03/30 21:50:35 Deleting queue with URL https://sqs.us-east-1.amazonaws.com/123456789012/sns-listener-2ee83613-3e69-497e-8378-3ef7b9ba50a8...
2023/03/30 21:50:35 Deleted queue

The utility will make the best possible effort to clean up any infrastructure in the event of failure. However, it is possible you might wind up with a queue and a subscription lying around in your AWS account that you don't want.

Building

go build

Testing

The tests currently mock out the SQS and SNS API so no valid AWS credentials are required

go test ./...

FAQs

Package last updated on 03 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc