boto3 aws presigned url upload example / python aws client
boto3 로 presigned url 을 사용해서 aws s3 에 이미지 upload 하기
이 글은 windows 에서 작업한 내용이다.
환경설정
ref. 1 을 보고 환경을 설정하자.
- AWS 계정
- S3 bucket 생성
- python 3.6 이상
- AWS CLI 및 환경설정
- windows 에서의 환경설정은 다음을 참고하자.
쿠…sal: [컴] Windows 에서 AWS CLI 사용하기
- windows 에서의 환경설정은 다음을 참고하자.
설치
python -m venv .venv
.venv\Scripts\activate
python -m pip install boto3 pytest requests
실행
presigned_url.py 를 실행하면 된다. 아래는 ’test.png’를 upload 하는 command 이다.
python presigned_url.py mytestbucket test.png put
SignatureDoesNotMatch
위처럼 하면 SignatureDoesNotMatch
라는 error 가
발생했다. presinged_url.py
에서 다음 부분을 수정해 주면
된다.[ref. 3 참고]
s3_client = boto3.client('s3', region_name='ap-northeast-2', endpoint_url='https://s3.ap-northeast-2.amazonaws.com')
실행 화면:
(.venv) d:\python\aws>python presigned_url.py mytestbucket test.png put
----------------------------------------------------------------------------------------
Welcome to the Amazon S3 presigned URL demo.
----------------------------------------------------------------------------------------
INFO: Found credentials in shared credentials file: ~/.aws/credentials
INFO: Got presigned URL: https://s3.ap-northeast-2.amazonaws.com/mytestbucket/test.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=MYMYMYMYMYMY%2F20230613%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20230613T011310Z&X-Amz-Expires=1000&X-Amz-SignedHeaders=host&X-Amz-Signature=17c57d34c54ada2e0bde2899f7c67cd2bf044db3f3f3f3f3f3f3f35
Using the Requests package to send a request to the URL.
Putting data to the URL.
Got response:
Status: 200
----------------------------------------------------------------------------------------
curl 로 upload
위에서 생성한 presigned url 을 이용해서 http request 로 upload 를 하면 된다. 그래서 curl 로도 upload 가 가능하다. 아래는 windows curl 의 예시다.
curl -v -X PUT --upload-file "test.png" "https://s3.ap-northeast-2.amazonaws.com/mytestbucket/test.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=MYMYMYMYMYMY%2F20230613%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20230613T011310Z&X-Amz-Expires=1000&X-Amz-SignedHeaders=host&X-Amz-Signature=17c57d34c54ada2e0bde2899f7c67cd2bf044db3f3f3f3f3f3f3f35"
댓글 없음:
댓글 쓰기