어느 사용자가 AWS S3 테스트 버킷을 eu-west-1 지역에 만들고 일부 파일을 업로드했는데, 며칠 후 AWS 청구 페이지에서 예상치 못한 비용을 발견하였는데, 하루 동안 약 1억 건의 S3 PUT 요청이 발생하는 것을 확인하였다.
엥 이게 뭐지? 싶었겠지
그래서 확인해보니 AWS 기본 설정으로는 S3 버킷에 대한 요청이 기록되지 않지만, CloudTrail 로그를 통해 외부 계정에서 대량의 쓰기 요청이 들어오고 있음을 발견하였음.
그런데 왜?
유명한 오픈소스 라이브러리 중 하나가 기본 설정으로 S3에 백업을 저장하는 기능이 있는데,
하필 오픈 소스 샘플 코드에 하필 해당 사용자와 같은 버킷 이름을 사용하고 있었음. 아무도 안쓰는 줄 알았겠지.
S3 bucket name은 global unique
bucket_name = 'hamster-is-cute'
s3 bucket name: hamster-is-cute
그러니까 해당 라이브러리로 테스트를 할 시 테스트랍시고 만든 해당 S3 쪽으로 request가 가는 현상이 나타난 것.
무엇이 문제냐
해당 테스트로 만든 S3는 deny로 정책을 해놓았기에 당연히 허용되지 않은 사용자는 사용할 수 없고,
S3 요청 시 4xx error를 반환하는데도 불구하고, 요금을 부과해버리는 현상이 나타난 것.
사용도 못 했는데 돈을 내야한다??
추가로 위 S3 Requests 사진을 보면 S3 Bucket이 EU 리전에 있음에도 불구하고 US 요청에 대한 비용이 나온다.
어찌된 일인가 하니, S3 요청 시 region 을 명시할 수도 하지 않을 수도 있는데, region을 명시하지 않을 시 us-east-1으로 먼저 request를 하고 그 다음 S3가 있는 다른 리전으로 request를 한다.
만약 S3 Bucket이 ap-northeast-2에 있는 경우
Specify AWS region -> 1. ap-northeast-2
Not specifying -> 1. us-east-1 -> ap-northeast-2
그렇기 때문에 region을 명시하지 않으면, request 비용이 2배가 되는 이벤트를 즐길 수 있다.
당연히 해당 사례는 aws에 support case를 열어 비용을 면제 받았지만, s3 이름을 알고 있으면 ddos 마냥 행운의 요금 고지서를 날려줄 수 있겠다.
24/05/01
AWS의 부사장인 jeff가 해당 문제 고치겠다고 함. DM 그만 좀 날려달라..
https://twitter.com/jeffbarr/status/1785386554372042890
24/05/13
AWS가 공식적으로 S3 error request에 대해 비용을 부과하지 않게 업데이트 완료
행운의 고지서를 날릴 수 없게되었다.
https://aws.amazon.com/ko/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/
해당 사례 원본
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] Lambda Connection Handler (0) | 2024.06.17 |
---|---|
CodeBuild - empty git-upload-pack given for primary source and source version refs/heads/develop (1) | 2024.06.13 |
Amazon Aurora MySQL version 3 Upgrade (0) | 2024.03.26 |
AWS CloudFormationd으로 기존 리소스 IaC 템플릿 생성하기 (0) | 2024.02.19 |
[AWS] S3 Server Access Logging (1) | 2024.02.02 |
댓글