如何实例化同时具有自定义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());
我发现RegionEndpoint
和ServiceURL
是互斥的:
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"
};