파일을 가져 와서 s3 버킷으로 스트리밍하려고하는데 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?Node/Knox를 사용하여 S3에 업로드 중입니다. 소켓이 끊어졌습니다.
내 코드 : 헤더가 제대로 채워 객체
var client = knox.createClient({
key: 'AAAAAAAAAAAA',
secret: 'BBBBBBBBBBBB',
bucket: 'my-imgs',
});
var elem = list.shift(); // {_id:'filename.jpg', main_img: 'http://example.com/file.jpg'}
request.get(elem.main_img,function(err,res){
var headers = {
'Content-Length': res.headers['content-length'],
'Content-Type': res.headers['content-type'],
'x-amz-acl': 'public-read'
};
console.log(headers) //outputs are ok, error comes after
var req = client.putStream(res, elem._id, headers,function(err,s3res){
if(err) console.log(err);
console.log(s3res);
});
}).on('error', function(err) {
console.log(err)
});
이 요청 아무것도 오류하지 않으며, 몇 초 후에 내가 얻을 :
{ [Error: socket hang up] code: 'ECONNRESET' }
내가 내를 구성해야합니까 그것이 전송을 받아 들일 수있는 특별한 방법으로 양동이? 방금 AWS 콘솔을 통해 'US 표준'으로 만들었으며 한 가지만 수행하여 업로드가 가능할 정도로 치열한 모습을 보였습니다. 나는 그것이 문제 일 수 있다는 느낌을 가지고 있지만, 그것을 고칠 방법에 관해서는 전혀 모른다. 그리고 내가 본 모든 튜토리얼은 매우 시대에 뒤떨어져있다. 실마리를 줘라!
정책 :
{
"Statement": [
{
"Sid": "allow-public-read",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-imgs/*"
},
{
"Sid": "allow-public-put",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-imgs/*"
}
]
}
이 유 솔루션을 받으셨어요을? –
콜백을 사용하고 싶다면'get (url)'대신'getFile (url, callback)'을 사용하십시오. – DaGaMs