diff --git a/.autover/changes/d0cfdbc8-e15b-49ae-b0b4-ec882dec15f2.json b/.autover/changes/d0cfdbc8-e15b-49ae-b0b4-ec882dec15f2.json new file mode 100644 index 000000000..807ffaf08 --- /dev/null +++ b/.autover/changes/d0cfdbc8-e15b-49ae-b0b4-ec882dec15f2.json @@ -0,0 +1,11 @@ +{ + "Projects": [ + { + "Name": "Amazon.Lambda.TestTool", + "Type": "Patch", + "ChangelogMessages": [ + "Support optional SQS client region in event source test tool" + ] + } + ] +} diff --git a/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/SQSEventSource/SQSEventSourceBackgroundService.cs b/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/SQSEventSource/SQSEventSourceBackgroundService.cs index 2125b6f9a..62e214ae8 100644 --- a/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/SQSEventSource/SQSEventSourceBackgroundService.cs +++ b/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/SQSEventSource/SQSEventSourceBackgroundService.cs @@ -43,7 +43,7 @@ public SQSEventSourceBackgroundService(ILogger logger, IA _lambdaClient = lambdaClient; } - private async Task GetQueueArn(CancellationToken stoppingToken) + private async Task GetQueueArn(CancellationToken stoppingToken) { var response = await _sqsClient.GetQueueAttributesAsync(new GetQueueAttributesRequest { @@ -51,7 +51,7 @@ private async Task GetQueueArn(CancellationToken stoppingToken) AttributeNames = new List { "QueueArn" } }, stoppingToken); - return response.QueueARN; + return Arn.Parse(response.QueueARN); } /// @@ -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 @@ -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. /// /// List of messages using the SDK's .NET type - /// The aws region the messages came from. /// The SQS queue arn the messages came from. /// List of messages using the Lambda event's .NET type. - internal static List ConvertToLambdaMessages(List messages, string awsRegion, string queueArn) + internal static List ConvertToLambdaMessages(List messages, Arn queueArn) { - return messages.Select(m => ConvertToLambdaMessage(m, awsRegion, queueArn)).ToList(); + return messages.Select(m => ConvertToLambdaMessage(m, queueArn)).ToList(); } /// /// Convert from the SDK's SQS message to the Lambda event's SQS message type. /// /// Message using the SDK's .NET type - /// The aws region the message came from. /// The SQS queue arn the message came from. /// Messages using the Lambda event's .NET type. - 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, diff --git a/Tools/LambdaTestTool-v2/tests/Amazon.Lambda.TestTool.UnitTests/SQSEventSource/ConvertSDKToLambdaEventTests.cs b/Tools/LambdaTestTool-v2/tests/Amazon.Lambda.TestTool.UnitTests/SQSEventSource/ConvertSDKToLambdaEventTests.cs index c8722551d..31a08b5ae 100644 --- a/Tools/LambdaTestTool-v2/tests/Amazon.Lambda.TestTool.UnitTests/SQSEventSource/ConvertSDKToLambdaEventTests.cs +++ b/Tools/LambdaTestTool-v2/tests/Amazon.Lambda.TestTool.UnitTests/SQSEventSource/ConvertSDKToLambdaEventTests.cs @@ -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); @@ -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);