AWS .NET SDK 使用 Localstack 时如何指定区域

AWS .NET SDK How to specify region when using Localstack

如何实例化同时具有自定义区域和 ServiceURL 的 .NET AWSSDK SQS 客户端?


更多信息:

我在 localstack 中设置了一个队列,我可以使用 CLI 通过 sqs list-queues 查询验证它是否存在:

> aws --endpoint-url=http://localhost:4566 --region=ap-southeast-2 sqs list-queues

{
    "QueueUrls": [
        "http://localhost:4566/000000000000/question-renderer-requests-errors",
        "http://localhost:4566/000000000000/question-renderer-requests"
    ]
}

队列位于 ap-southeast-2 区域,但是当我尝试通过 SDK 访问队列时,它找不到任何东西:

var cred = new BasicAWSCredentials("test", "test");

var sqsClientConfig = new AmazonSQSConfig()
{
    RegionEndpoint = RegionEndpoint.APSoutheast2,
    ServiceURL = "http://localhost:4566"
};

var sqsClient = new AmazonSQSClient(cred, sqsClientConfig);

var queues = await sqsClient.ListQueuesAsync(new ListQueuesRequest());

我发现RegionEndpointServiceURL是互斥的:

RegionEndpoint and ServiceURL are mutually exclusive properties. Whichever property is set last will cause the other to automatically be reset to null.

我需要将服务端点设置为 http://localhost:4566 以指向 localstack,如何同时设置区域端点?我做的对吗?

更新: 我在 google 上搜索了默认区域 us-east-1,当我将队列放在那里时,SDK 设法找到了它 - 所以这一定是区域配置问题。

使用AuthenticationRegion指定区域(IClientConfig的一部分)


var sqsClientConfig = new AmazonSQSConfig()
{
    RegionEndpoint = RegionEndpoint.APSoutheast2,
    ServiceURL = "http://localhost:4566"
};

变为:

var sqsClientConfig = new AmazonSQSConfig()
{
    AuthenticationRegion = "ap-southeast-2",
    ServiceURL = "http://localhost:4566"
};