간만에 AWS 유지보수 건이 떨어졌다.
AWS Signature Version 4 to replace AWS Signature Version 2 for signing S3 API requests
Amazon S3 will no longer support path-style API requests starting September 30th, 2020
AWS Signature Version 4 to replace AWS Signature Version 2 for signing S3 API requests
2019년 6월 24일 부터는 S3 API 요청시 Signature Version 2 방식(SigV2)의 서명으로는 통신사용이 불가능하다. 기존 코드가 SigV2 서명을 사용 중이었다면 보안이 강화된 SigV4 방식으로 코드를 수정해야 한다. 2014년 1월 이후에 런칭된 리전(서울리전 등...) 에서는 SigV4 만 지원하므로 수정할 필요가 없으나 그 전에 런칭된 리전(도쿄리전 등....) 에서는 SigV2, SigV4 모두 사용이 가능했으므로 어떤 버전의 서명을 사용중인지 체크해야 한다. 개발 프레임워크 로그에서 서명 버전을 확인할 수 있으면 좋겠지만 스프링에서는 확인할 수 없었다. 대신 AWS CloudTrail 로그나 Athena 쿼리로 조회할 수 있다.
SELECT *
FROM s3_cloudtrail_events_db.cloudtrail_myawsexamplebucket_table
WHERE eventsource='s3.amazonaws.com'
AND json_extract_scalar(additionalEventData, '$.SignatureVersion')='SigV2'
LIMIT 5
SignatureVersion 이 SigV2 인 레코드가 있다면 SDK 를 최신버전으로 바꾸는 것으로 간단하게 해결된다.
사용 언어 확인 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/UsingAWSSDK.html
참고로 나는 AWS SDK for JAVA 1.10 버전에서 1.11 로 변경하여 해결하였다. 람다 스무개를 다바꿨다... ㅡㅡ;;
Amazon S3 will no longer support path-style API requests starting September 30th, 2020
S3 주소 지정시에 두가지 형식을 사용할 수 있었다.
- //s3.amazonaws.com/<bucketname>/key (Path style)
- //<bucketname>.s3.amazonaws.com/key) (Virtual-hosted style)
버킷 이름이 도메인 호스트 자리에 들어가느냐 경로(path) 안에 들어가느냐 인데, 경로 방식을 2020년 9월 30일부터 폐기하기로 했다. 경로 방식을 사용 중이라면 미리 준비해 놓는 것이 좋다.
미리 공지주는건 좋은데, 그래도 Deprecate 난 반댈세...