【发布时间】:2018-03-19 22:53:36
【问题描述】:
我希望使用 Digital Oceans 空间(似乎与 S3 具有相同的 API),并希望通过上传示例文件来尝试。我有很多困难。这是我到目前为止所做的事情
{'hi' : 'world'}
是我要上传的文件hiworld.json 的内容。我了解我需要先创建一个 aws v4 签名才能提出此请求。
var aws4 = require('aws4')
var request = require('request')
var opts = {'json': true,'body': "{'hi':'world'}",host: '${myspace}.nyc3.digitaloceanspaces.com', path: '/hiworld.json'}
aws4.sign(opts, {accessKeyId: '${SECRET}', secretAccessKey: '${SECRET}'})
然后我发送请求
request.put(opts,function(error, response) {
if(error) {
console.log(error);
}
console.log(response.body);
});
但是,当我检查我的 Digital Ocean 空间时,我发现我的文件没有创建。我注意到,如果我将 PUT 更改为 GET 并尝试访问现有文件,我没有问题。
这是我的标题的样子
headers:
{ Host: '${myspace}.nyc3.digitaloceanspaces.com',
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
'Content-Length': 14,
'X-Amz-Date': '20171008T175325Z',
Authorization: 'AWS4-HMAC-SHA256 Credential=${mykey}/20171008/us-east-1//aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=475e691d4ddb81cca28eb0dcdc7c926359797d5e383e7bef70989656822accc0' },
method: 'POST' }
【问题讨论】:
标签: javascript amazon-s3 digital-ocean