Setting up an SQS message integration
aws configure --profile rl-sqs-profile set role_arn <ROLE_ARN> aws configure --profile rl-sqs-profile set external_id <EXTERNAL_ID> aws configure --profile rl-sqs-profile set role_session_name rl-sqs-session aws configure --profile rl-sqs-profile set source_profile default aws configure --profile rl-sqs-profile set region <REGION>aws sqs get-queue-url --queue-name <QUEUE_NAME> --queue-owner-aws-account-id 013474081760 --profile rl-sqs-profile
Receiving messages from the SQS queue using .NET SDK
public static async Task ReceiveSqsMessages()
{
var roleArnToAssume = "<ROLE_ARN>";
var externalId = "<EXTERNAL_ID>";
var queueName = "<QUEUE_NAME>";
RegionEndpoint region = RegionEndpoint.USWest2;
var client = new Amazon.SecurityToken.AmazonSecurityTokenServiceClient(region);
// Create the request to use with the AssumeRoleAsync call.
var assumeRoleRequest = new AssumeRoleRequest()
{
RoleSessionName = "rl-sqs-session",
RoleArn = roleArnToAssume,
ExternalId = externalId
};
var assumeRoleResponse = await client.AssumeRoleAsync(assumeRoleRequest);
// Now create a new client based on the credentials of the caller assuming the role.
var sqsClient = new Amazon.SQS.AmazonSQSClient(credentials: assumeRoleResponse.Credentials);
var queueUrlResponse = await sqsClient.GetQueueUrlAsync(new GetQueueUrlRequest
{
QueueName = queueName,
QueueOwnerAWSAccountId = "013474081760"
});
// Receive the messages from the SQS queue.
var receiveMessageResponse = await sqsClient.ReceiveMessageAsync(new ReceiveMessageRequest
{
QueueUrl = queueUrlResponse.QueueUrl,
MaxNumberOfMessages = 10,
WaitTimeSeconds = 10
});
var messages = receiveMessageResponse.Messages;
}Last updated
Was this helpful?