我有一个项目,其中包含与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)
运行时,它会抛出错误
我们计算的请求签名与您的签名不符 提供。检查您的AWS Secret Access Key和签名方法。请教 服务文档了解详情。
代码是如此基本,以至于我无法看出它可能出错的地方。秘密和访问密钥适用于所有其他AWS通信,因此这不能成为原因,我100%确定队列存在。可能导致这种情况的原因是什么?
答案 0 :(得分:0)
此代码有效 - 请参阅是否可以使用它:
$url = Url::to(['component/datafield','c_id'=>$component_id,'value'=>$used]);
答案 1 :(得分:0)
似乎是一个非常奇怪的,但我通过使用碎片化的AWSSDK而不是完整的解决了这个问题。我正在使用NuGet的主要sdk,其中包含AWS的所有内容。我删除了这个并安装了SDK的核心,s3和sqs部分。一旦我这样做,代码立即工作。不知道为什么它这样做以及为什么它适用于S3而不是SQS,但至少这是一个相当简单的修复。