Mof*_*fen 5 .net amazon-sqs amazon-web-services aws-sdk-net localstack
我在 localstack 中设置了一个队列,我可以sqs list-queues使用 CLI 通过查询来验证该队列是否存在:
> 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"
]
}
Run Code Online (Sandbox Code Playgroud)
队列位于 Region 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());
Run Code Online (Sandbox Code Playgroud)
我发现RegionEndpoint和ServiceURL是相互排斥的:
RegionEndpoint 和 ServiceURL 是互斥的属性。无论最后设置哪个属性,都会导致另一个属性自动重置为 null。
我需要将服务端点设置为http://localhost:4566指向 localstack,如何设置区域端点?我在这件事上走的路正确吗?
更新:我在 google 上搜索了默认区域 us-east-1,当我将队列放在那里时,SDK 设法找到了它 - 所以它一定是区域配置问题。
Mof*_*fen 10
用于AuthenticationRegion指定区域(IClientConfig的一部分)
var sqsClientConfig = new AmazonSQSConfig()
{
RegionEndpoint = RegionEndpoint.APSoutheast2,
ServiceURL = "http://localhost:4566"
};
Run Code Online (Sandbox Code Playgroud)
变成:
var sqsClientConfig = new AmazonSQSConfig()
{
AuthenticationRegion = "ap-southeast-2",
ServiceURL = "http://localhost:4566"
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2576 次 |
| 最近记录: |