C#AWS SQS请求签名与提供的签名不匹配

时间:2017-05-12 11:34:52

标签: c# amazon-web-services

我有一个项目,其中包含与AWS通信的类。 SQS是唯一不起作用的。可以安全地假设访问密钥和密钥有效。我也可以在其他地方访问此队列,所以我100%存在。

我创建了一个超级基本方法,这是失败的。

var Config = new AmazonSQSConfig() { ServiceURL = "https://sqs.eu-west-1.amazonaws.com/.....etc"};
var Client = new AmazonSQSClient(Config);
SendMessageRequest request = new SendMessageRequest() { MessageBody = "Hello", };
SendMessageResponse sendMessageResponse = Client.SendMessage(request);

当最后一行Client.SendMessage(request)运行时,它会抛出错误

的403异常
  

我们计算的请求签名与您的签名不符   提供。检查您的AWS Secret Access Key和签名方法。请教   服务文档了解详情。

代码是如此基本,以至于我无法看出它可能出错的地方。秘密和访问密钥适用于所有其他AWS通信,因此这不能成为原因,我100%确定队列存在。可能导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:0)

此代码有效 - 请参阅是否可以使用它:

$url = Url::to(['component/datafield','c_id'=>$component_id,'value'=>$used]);

答案 1 :(得分:0)

似乎是一个非常奇怪的,但我通过使用碎片化的AWSSDK而不是完整的解决了这个问题。我正在使用NuGet的主要sdk,其中包含AWS的所有内容。我删除了这个并安装了SDK的核心,s3和sqs部分。一旦我这样做,代码立即工作。不知道为什么它这样做以及为什么它适用于S3而不是SQS,但至少这是一个相当简单的修复。