如何使用REST API从vbs脚本中删除S3对象

时间:2017-03-01 19:35:52

标签: rest amazon-s3 vbscript

一个广为人知的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可能不正确。

有没有人做过这类事情,或者代码中的错误是否明显?

1 个答案:

答案 0 :(得分:0)

您没有在Content-Type请求中添加DELETE标题,因为您不会发送内容。

由于没有Content-Type标头,因此将此元素设置为要签名的字符串中的空字符串。保留所有\n原样。