Amazon SQS Quick Start
This tutorial will get you from zero to up and running with AWS SQS and MassTransit.

- The source for this sample is available on GitHub.
Prerequisites
The following instructions assume you are starting from a completed In-Memory Quick Start
This example requires the following:
- a functioning installation of the dotnet runtime and sdk (at least 6.0)
- an AWS account, where you have the ability to control the IAM permissions for SQS and SNS
Setup AWS
- Log into AWS
- Create a User with
Access key - Programmatic access
- Grant the user the
Sample IAM Policy
below
- Grant the user the
Sample IAM Policy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SqsAccess", "Effect": "Allow", "Action": [ "sqs:SetQueueAttributes", "sqs:ReceiveMessage", "sqs:CreateQueue", "sqs:DeleteMessage", "sqs:SendMessage", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue", "sqs:DeleteQueue", "sqs:TagQueue" ], "Resource": "arn:aws:sqs:*:YOUR_ACCOUNT_ID:*" },{ "Sid": "SnsAccess", "Effect": "Allow", "Action": [ "sns:GetTopicAttributes", "sns:CreateTopic", "sns:Publish", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:YOUR_ACCOUNT_ID:*" },{ "Sid": "SnsListAccess", "Effect": "Allow", "Action": [ "sns:ListTopics" ], "Resource": "*" } ]}
Change the Transport to AmazonSQS
Add the MassTransit.AmazonSQS package to the project.
$ dotnet add package MassTransit.AmazonSQS
Edit Program.cs
Change UsingInMemory
to UsingAmazonSQS
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddMassTransit(x => { // elided ... x.UsingAmazonSqs((context, cfg) => { cfg.Host("us-east-1", h => { h.AccessKey("your-iam-access-key"); h.SecretKey("your-iam-secret-key"); }); cfg.ConfigureEndpoints(context); }); }); services.AddHostedService<Worker>(); });
Run the project
$ dotnet run
The output should have changed to show the message consumer generating the output (again, press Control+C to exit). Notice that the bus address now starts with amazonsqs
.
Building...
info: MassTransit[0]
Configured endpoint Message, Consumer: GettingStarted.MessageConsumer
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: /Users/chris/Garbage/start/GettingStarted
info: MassTransit[0]
Bus started: amazonsqs://us-east-1/a-topic-name
info: GettingStarted.MessageConsumer[0]
Received Text: The time is 3/24/2021 12:11:10 PM -05:00
At this point the service is connecting to Amazon SQS/SNS in the region us-east-1
and publishing messages which are received by the consumer.
๐