2017-03-20 1 views
0

다음과 같은 문제가 발생했습니다 : 새 파일을 업로드하면 signed url을 사용하고 aws-sdk을 사용하여 업로드 된 파일 S3에서 헤드 객체를 가져 오십시오. 오류 Forbidden,하지만 새 파일을 업로드하면 AWS 콘솔을 사용하여 머리 객체를 가져올 수 있습니다. 아무도 그 문제를 알고 있습니까?AWS S3 버킷, 파일에서 머리 객체를 가져올 수 없습니다.

+0

그 반대의 경우는 어떻습니까? 코드에서 파일을 업로드하는 경우 콘솔에서 다운로드 할 수 있습니까? 콘솔의 올바른 경로에있는 것처럼 보입니까? –

+0

도전 과제는 새 파일을 S3 버킷에 업로드하는 데 서명 된 URL을 사용하는 것이 었습니다. –

+0

그 점은 이해하지만 문제가 다운로드되었는지 여부 또는 문제가 실제로 * 업로드 *되어 성공했는지 여부를 확인하려고했으나 의도 한대로 개체를 만들지 못했습니다. 또한,'PUT'에서 서명 된 URL을'GET'을 위해 재사용 할 수 없습니다 ... REST 동사 ('PUT','GET','DELETE' 등) 때문에 새로운 서명 된 URL이 필요합니다. .)가 서명에 통합됩니다. 서명 된 URL은 서명 될 때 지정된 작업 만 수행 할 수 있습니다. –

답변

0

presigned POST url에 올바른 ACL을 지정했는지 확인하십시오. 예 : (bucket-owner-full-control) 세트 :

var s3 = new AWS.S3(); 
var params = { Bucket: req.body.bucketname, ACL: 'bucket-owner-full-control', Key: req.body.name, ContentType: req.body.type }; 
s3.getSignedUrl('putObject', params, function (err, url) .... 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 내가 노력하고 내가 –

+0

흠, 이상한, 내가 그것으로 – Vor

+0

조금 더 살펴 보자 같은 오류가 발생했습니다 그것은 내 코드입니다 : 양동이, 키 : 는'매개 변수 = { 통하자 '123/example.wav'를 ACL : 'bucket-owner-full-control' } console.log (s3.getSignedUrl ('putObject', parameters)) ' 그런 다음 curl을 사용하여 새 파일을 업로드합니다. 코드를 사용하여 헤드 객체를 얻는 방법을 시도한 후 : 'let params = { 버켓 : 버킷, 키 : '123/example.wav' }; console.log ('데이터', 데이터) } s3.headObject (params, (err, data) => { if (err) console.log ('ERRsRR', 오류) console.log' –