一个广为人知的vbs脚本已经发布,用于使用REST API从Windows服务器将文件放入Amazon S3,它非常适合自动备份。 REST API还包括文件的删除操作,但我还没有在任何地方看到任何工作脚本,我自己的谦卑努力失败了。
这有用(放置操作,部分代码):
...
StringToSign = Replace("PUT\n\napplication/octet-stream\n\nx-amz-date:" & gmtDateStr & "\n/"& AWS_BUCKETNAME & sRemoteFilePath, "\n", vbLf)
...
With CreateObject("Microsoft.XMLHTTP")
.open "PUT", AWSBucketUrl & sRemoteFilePath, False
...
这不起作用:
...
StringToSign = Replace("DELETE\n\ntext/plain\n\nx-amz-date:" & gmtDateStr & "\n/"& AWS_BUCKETNAME & sRemoteFilePath, "\n", vbLf)
...
With CreateObject("Microsoft.XMLHTTP")
.open "DELETE", AWSBucketUrl & sRemoteFilePath, False
...
返回的错误是" SignatureDoesNotMatch - 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。"由于put操作正常,错误似乎不在密钥和签名方法中。尝试删除代码中的StringToSign可能不正确。
有没有人做过这类事情,或者代码中的错误是否明显?
答案 0 :(得分:0)
您没有在Content-Type
请求中添加DELETE
标题,因为您不会发送内容。
由于没有Content-Type
标头,因此将此元素设置为要签名的字符串中的空字符串。保留所有\n
原样。