사용자가 S3에서 사진을 업로드/다운로드 할 수있게 해주는 EC2의 웹 앱을 호스팅하고 있습니다. EC2와 S3는 같은 지역에 있습니다.AWS S3에서 다운로드 할 수 없습니다 : 액세스가 거부되었습니다
자격 증명 : 공식 문서 다음은 자격 증명이 자동으로 내가 만든 (s3fullAccess
권한)에 IAM 역할 공급 EC2에 연결해야합니다.
문제 : 사용자 (브라우저에서)는 사진을 다운로드 할 수는 없지만 성공적으로 업로드 할 수 있습니다. 다운로드 링크는 aws-sdk
님의 getSignedUrl()
방법으로 생성되었습니다.
오류 메시지 :
InvalidAccessKeyId : 당신이 제공하는 AWS 액세스 키 ID가 우리의 기록에 존재하지 않습니다.
먼저 사용자가 성공적으로 자료를 업로드 할 수 있으므로 access key
이 올바른 것으로 보입니다.
내 생각 엔 사용자가 브라우저에서 링크를 클릭하여 다운로드하기 때문에 EC2와 S3간에 상호 작용이 없으므로 다운로드 할 때 IAM 역할이 사용되지 않습니다. 그러나 EC2 자격 증명으로 signedDownloadUrl
이 생성되지 않습니까? 그리고 쿼리 문자열에 액세스 키 쌍이 모두 제공됩니다. 그래서 내 추측은 잘못되었을 수도 있습니다 ..
어떤 제안이나 아이디어라도 감사하겠습니다.
내가 IAM 사용자를 작성하지 않은
편집, 만 IAM 역할을한다. 이것이 중요한지 모르겠다.
S3 버킷에 대한 직접 링크에서 다운로드를 시도 했습니까? 예 .http : //s3-us-west-1.amazonaws.com/BUCKET/PATH/TO/IMAGE.jpeg' 또는 'http : // BUCKET.s3.amazonaws.com/PATH/TO/IMAGE.jpeg'. 동일한 오류 메시지가 표시되면 버킷 및 CORS의 권한을 확인하십시오. 그러나 EC2 및 S3의 도메인이 서로 다른지 여부에 따라 다릅니다. – zer00ne
@ zer00ne 액세스가 거부되었습니다. 링크 앞에 잠금 아이콘이 있습니다. –
@ zer00ne 오류 메시지가 다릅니다. 웹 앱의 '잘못된 액세스 키 ID'및 s3 관리 콘솔의 '액세스 거부'입니다. EC2와 S3도 같은 지역에 있습니다. –