2017-09-25 1 views
0

IAM 역할을 사용하여 EC2 인스턴스에서 S3에 액세스하고 있습니다. 하지만 제 신청서에서는 파일을 다운로드하기위한 서명 된 URL을 만듭니다. 그러나 사용자가 파일을 다운로드하려고 시도하면 액세스가 거부되었으므로 오류가 표시됩니다.서명 된 URL을 통해 다운로드 할 때 액세스가 거부되었습니다.

var AWS = require('aws-sdk'); 
var s3 = new AWS.S3(); 

//key=file path 
var params = {Bucket: bucket, Key: prefix+'/'+key, Expires: 240} 
var url = s3.getSignedUrl('getObject', params) 
console.log(req.cookies.s, 'got', url) // expires in 60 seconds 
res.redirect(url) 
+0

'AWS S3 Bucket Policy'와 결합하여 s3 객체를 공개하십시오. 참고 : http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html –

+0

몇 가지 코드를 보여줄 수 있습니까? 서명 된 URL이이를 처리하는 올바른 방법입니다. 내가 원하는 바를 알지 못한다면 대중에게 양동이를 열지 말 것을 강력히 권합니다. – stdunbar

+0

업로드 된 파일을 공개로 설정해야합니다. 그렇지 않으면 앱에 업로드 된 파일을 공개로 설정하는 데 몇 acl이 필요합니다. – Ayoub

답변

1

당신이 서명 URL을 제공하고 그들이 Access Denied 오류가 발생할 수 있다는 사실은 서명 된 URL이 유효하지 않음을 말한다.

일부 잠재적 인 이유 :

서명 된 URL이 잘못 건설되었다
  • 가 (당신이 우리에게 코드를 보여주지 않았다, 그래서 우리는이를 확인할 수 없습니다)
  • 자격 증명은 서명을 생성하는 데 사용 URL에이라는 객체에 대한 액세스 권한이없는 (서명 된 URL은 자격 증명의 제한된 사용을 허용하지만 기본 자격 증명은 해당 리소스에 대한 액세스 권한이 있어야합니다.)
  • tim 서명 된 URL에 대한 전자 기간은 만료 (그러나 이것은 다른 오류 메시지가 발생할 것) Access Denied 오히려 서명 URL과 관련된 오류를 표시하는 것보다,이 제안 이후
  • 개체가 상당히 가능성이있는 ( 존재하지 않습니다)
+0

내 응용 프로그램에서 키를 사용할 때마다 다운로드 프로세스가 완벽 해 보입니다. 역할이있는 주석 달기 키를 제거한 후 목록이 완벽하게 보이지만 다운로드가 작동하지 않습니다. 코드에는 변화가 없습니다. –

관련 문제