2016-09-14 3 views
1

나는 powershell 스크립트를 작성하여 s3 url에서 파일을 다운로드합니다. 나는 (403) 금지 된 오류를 계속 간직하고있다. 내가 사용하는 명령은s3에서 url을 통해 다운로드

Invoke-WebRequest -Uri "http://bucketname.s3.amazonaws.com/file.txt" 

EC2 인스턴스가 S3 버킷에서 다운로드에 액세스 할 수있는 그것과 관련된 IAM 역할을합니다. aws cli 명령 (cp, ls 등)을 성공적으로 실행할 수 있습니다. 이 요청과 함께 전달하는 자격 증명에 문제가 있습니까? 이 요청과 함께 AWS 자격 증명을 전달해야합니까?

+1

S3는'http'가 아니라'https'를 사용한다고 생각합니다. – wOxxOm

+0

나는이 고침을 고쳤다! – PrestonM

답변

2

Invoke-WebRequest cmdlet을 사용하면 S3에 자격 증명을 전달하지 않습니다. 그래서 파일을 다운로드 할 권한이있는 EC2 인스턴스에 있더라도 Amazon S3는이를 알지 못합니다.

AWS CLI를 사용할 때 요청과 함께 자격 증명을 보냅니다.

  1. 가 S3에서 파일을 공개합니다 :

    당신은 몇 가지 옵션이 있습니다. 이렇게하면 cmdlet이있는 그대로 작동 할 수 있습니다. 하지만 누구나을 다운로드 할 수 있습니다.
  2. 대신 AWS SDK를 사용하여 파일을 다운로드하십시오. 언급 한대로 잘 작동합니다.
  3. AWS SDK를 사용하여 사전 서명 된 URL을 생성 한 다음 Invoke-WebRequest을 미리 서명 된 URL과 함께 사용하여 파일을 다운로드 할 수 있습니다.
  4. Invoke-WebRequest 호출로 자격 증명을 보냅니다. 나는 당신이 바퀴를 재발 명하고 있기 때문에 이것을 추천하지 않을 것이다.
관련 문제