Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .autover/changes/d0cfdbc8-e15b-49ae-b0b4-ec882dec15f2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"Projects": [
{
"Name": "Amazon.Lambda.TestTool",
"Type": "Patch",
"ChangelogMessages": [
"Support optional SQS client region in event source test tool"
]
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ public SQSEventSourceBackgroundService(ILogger<SQSEventSourceProcess> logger, IA
_lambdaClient = lambdaClient;
}

private async Task<string> GetQueueArn(CancellationToken stoppingToken)
private async Task<Arn> GetQueueArn(CancellationToken stoppingToken)
{
var response = await _sqsClient.GetQueueAttributesAsync(new GetQueueAttributesRequest
{
QueueUrl = _config.QueueUrl,
AttributeNames = new List<string> { "QueueArn" }
}, stoppingToken);

return response.QueueARN;
return Arn.Parse(response.QueueARN);
}

/// <summary>
Expand Down Expand Up @@ -94,7 +94,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)

var lambdaPayload = new
{
Records = ConvertToLambdaMessages(response.Messages, _sqsClient.Config.RegionEndpoint.SystemName, queueArn)
Records = ConvertToLambdaMessages(response.Messages, queueArn)
};

var invokeRequest = new InvokeRequest
Expand Down Expand Up @@ -187,29 +187,27 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
/// Convert from the SDK's list of messages to the Lambda event's SQS message type.
/// </summary>
/// <param name="messages">List of messages using the SDK's .NET type</param>
/// <param name="awsRegion">The aws region the messages came from.</param>
/// <param name="queueArn">The SQS queue arn the messages came from.</param>
/// <returns>List of messages using the Lambda event's .NET type.</returns>
internal static List<SQSEvent.SQSMessage> ConvertToLambdaMessages(List<Message> messages, string awsRegion, string queueArn)
internal static List<SQSEvent.SQSMessage> ConvertToLambdaMessages(List<Message> messages, Arn queueArn)
{
return messages.Select(m => ConvertToLambdaMessage(m, awsRegion, queueArn)).ToList();
return messages.Select(m => ConvertToLambdaMessage(m, queueArn)).ToList();
}

/// <summary>
/// Convert from the SDK's SQS message to the Lambda event's SQS message type.
/// </summary>
/// <param name="message">Message using the SDK's .NET type</param>
/// <param name="awsRegion">The aws region the message came from.</param>
/// <param name="queueArn">The SQS queue arn the message came from.</param>
/// <returns>Messages using the Lambda event's .NET type.</returns>
internal static SQSEvent.SQSMessage ConvertToLambdaMessage(Message message, string awsRegion, string queueArn)
internal static SQSEvent.SQSMessage ConvertToLambdaMessage(Message message, Arn queueArn)
{
var lambdaMessage = new SQSEvent.SQSMessage
{
AwsRegion = awsRegion,
AwsRegion = queueArn.Region,
Body = message.Body,
EventSource = "aws:sqs",
EventSourceArn = queueArn,
EventSourceArn = queueArn.ToString(),
Md5OfBody = message.MD5OfBody,
Md5OfMessageAttributes = message.MD5OfMessageAttributes,
MessageId = message.MessageId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ public void ConvertSDKMessageFull()
ReceiptHandle = "receiptHandle"
};

var eventMessage = SQSEventSourceBackgroundService.ConvertToLambdaMessage(sdkMessage, "us-west-2", "queueArn");
var queueArn = Arn.Parse("arn:aws:sqs:us-west-2:123456789012:queueName");
var eventMessage = SQSEventSourceBackgroundService.ConvertToLambdaMessage(sdkMessage, queueArn);
Assert.Equal("us-west-2", eventMessage.AwsRegion);
Assert.Equal("queueArn", eventMessage.EventSourceArn);
Assert.Equal("arn:aws:sqs:us-west-2:123456789012:queueName", eventMessage.EventSourceArn);
Assert.Equal("aws:sqs", eventMessage.EventSource);

Assert.Equal(sdkMessage.Attributes, eventMessage.Attributes);
Expand Down Expand Up @@ -61,9 +62,10 @@ public void ConvertSDKMessageWithNullCollections()
ReceiptHandle = "receiptHandle"
};

var eventMessage = SQSEventSourceBackgroundService.ConvertToLambdaMessage(sdkMessage, "us-west-2", "queueArn");
var queueArn = Arn.Parse("arn:aws:sqs:us-west-2:123456789012:queueName");
var eventMessage = SQSEventSourceBackgroundService.ConvertToLambdaMessage(sdkMessage, queueArn);
Assert.Equal("us-west-2", eventMessage.AwsRegion);
Assert.Equal("queueArn", eventMessage.EventSourceArn);
Assert.Equal("arn:aws:sqs:us-west-2:123456789012:queueName", eventMessage.EventSourceArn);
Assert.Equal("aws:sqs", eventMessage.EventSource);

Assert.Equal("theBody", eventMessage.Body);
Expand Down