0
module.exports = function (express, router) {
var _ = require('lodash'),
aws = require('aws-sdk'),
AWSConfig = require('../../config/AWSConfig.json');
router.route('/resource/file/sign')
.post(function (req, res) {
var bucket = "myTestBucket";
aws.config.update({accessKeyId: AWSConfig.AWS_ACCESS_KEY, secretAccessKey: AWSConfig.AWS_SECRET_KEY});
var s3 = new aws.S3();
var options = {
Bucket: bucket,
Key: req.body.name,
Expires: 60,
ContentType: req.body.type,
ACL: 'private'
};
s3.getSignedUrl('putObject', options, function (err, data) {
if (err) {
return res.send('Error with S3')
}
res.json({
signed_request: data,
url: 'https://s3.amazonaws.com/' + bucket + '/' + req.body.name
})
})
});
return router;
};
此請求返回signed_request
並且正常工作。Amazon S3簽名作品被禁止使用
但是,當我嘗試上傳到網址我得到forbidden
在我的OPTIONS
請求。
我也得到了CORS
錯誤:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 403.
這是我第一次嘗試使用amazon s3
這樣的IM希望你們當中有些人可能能夠指導我在正確的方向。
UPDATE
我沒有嘗試編輯權限和CORS標頭現在CORS錯誤是走了,但我仍然禁止上傳。
這裏是我的配置:
桶政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddCannedAcl",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::learningbank-test/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": [
"public-read"
]
}
}
}
]
}
權限:
我已更新我的問題你可以看看嗎? –