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



如何实例化同时具有自定义Region和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和ServiceURL是互斥属性。最后设置的属性将导致另一个属性自动重置为空。

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

更新:我在谷歌上搜索了默认区域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"
};

相关内容

  • 没有找到相关文章