Amazon Web Services 한국 블로그

Amazon S3 경로 기반 API 사용 중지 계획 안내

지난 주 저희는 Amazon S3 버킷에 있는 객체의 주소를 지정하는 데 사용되는 경로 기반 액세스 모델을 중지할 것임을 발표했습니다. 이 블로그 게시물을 작성하기 위해 저는 현 상황에 대해 S3 팀과 대화의 시간을 가졌으며, 이와 관련된 자세한 설명을 해드리고자 합니다.

아시다시피 S3는 2006년 초에 출시되었습니다. Jeff Bezos가 생각했던 S3의 초기 사양은 간단했습니다. 그는 인터넷을 위한 malloc(C 프로그램의 주요 메모리 할당 함수 중 하나)을 원했습니다. 여기에서 시작한 S3는 이제 수조 개의 객체를 저장하고 초당 수백만 건의 요청을 처리하는 수준으로 성장했습니다. 13년의 성장 기간 동안 AWS에서는 S3에 다양한 스토리지 옵션, 기능 및 보안 제어 기능을 추가했습니다.

이전 모델 vs. 신규 모델

S3은 현재 경로 스타일과 가상 호스팅 스타일의 두 가지 주소 모델을 지원합니다. 각 모델을 간단히 살펴보겠습니다. 경로 스타일 모델은 다음과 같은 형태를 가집니다(전역 S3 엔드포인트).

https://s3.amazonaws.com/jbarr-public/images/ritchie_and_thompson_pdp11.jpeg
https://s3.amazonaws.com/jeffbarr-public/classic_amazon_door_desk.png

또는 다음과 같은 형태를 가질 수도 있습니다(리전 S3 엔드포인트).

https://s3-us-east-2.amazonaws.com/jbarr-public/images/ritchie_and_thompson_pdp11.jpeg
https://s3-us-east-2.amazonaws.com/jeffbarr-public/classic_amazon_door_desk.png

이 예에서 jbarr-publicjeffbarr-public은 버킷 이름이며 /images/ritchie_and_thompson_pdp11.jpeg/jeffbarr-public/classic_amazon_door_desk.png는 객체 키입니다.

객체가 개별적인 AWS 계정에서 소유하고 있으며 서로 다른 S3 버킷에 위치(또한 개별적인 AWS 리전에 있을 수도 있음)하는 경우에도 두 객체 모두 DNS 하위 도메인 s3.amazonaws.com에 위치하게 됩니다. 그렇다면 가상 호스팅 스타일 참조는 어떻게 되는지 한 번 살펴보겠습니다(신규 모델이라고 생각할 수 있겠지만 이 모델은 이미 2010년부터 제공되어 왔습니다.).

https://jbarr-public.s3.amazonaws.com/images/ritchie_and_thompson_pdp11.jpeg
https://jeffbarr-public.s3.amazonaws.com/classic_amazon_door_desk.png

이러한 URL은 동일한 객체를 참조하지만 객체는 이제 개별적인 DNS 하위 도메인(각각 jbarr-public.s3.amazonaws.comjeffbarr-public.s3.amazonaws.com)에 위치합니다. 작지만 매우 중요한 차이점이라고 할 수 있겠습니다. URL을 사용하여 객체를 참조할 때에는 DNS 해석을 사용하여 하위 도메인 이름을 IP 주소에 매핑합니다. 경로 스타일 모델에서는 하위 도메인이 항상 s3.amazonaws.com 도는 리전 엔드포인트 중 하나가 되지만 가상 호스팅 스타일에서는 하위 도메인은 버킷에 특정됩니다. 이 추가적인 엔드포인트 특정 수준이 바로 S3의 많은 중요 기능 개선을 지원할 수 있게 해 주는 열쇠입니다.

이전 모델 사용 중지 계획

지난 주 발표했던 사용 중지 계획 원안에 대한 피드백을 바탕으로 AWS에서는 중요한 사항 한 가지를 변경하게 되었습니다. 변경 내용을 요약하자면 다음과 같습니다.

기존 계획 – 2020년 9월 30일까지만 경로 스타일 모델을 지원합니다.

개정된 계획 – 2020년 9월 30일 또는 그 이전까지 생성된 버킷에 대해 경로 스타일 모델을 계속 지원합니다. 이 날짜 이후에 생성된 버킷은 가상 호스팅 모델을 사용하여 참조되어야 합니다.

AWS에서 가상 호스팅 참조 방식으로 이전하는 이유는 두 가지가 있습니다.

첫째, 수십 개의 리전에 수십억 개의 버킷이 생성되는 세계가 곧 도래한다는 사실을 고려할 때, 모든 수신 요청을 적은 수의 엔드포인트로 라우팅하는 것은 장기적으로 이치에 맞지 않습니다. 이 중앙 집중식 모델에서는 DNS 해석, 규모 조정, 보안 및 트래픽 관리(DDoS 방지 포함)가 더욱 힘들어집니다. 가상 호스팅 모델은 문제가 발생했을 때 피해 범위(AWS에서는 내부적으로 이를 “폭발 반경”이라고 부릅니다)를 줄여주며 이는 가용성 및 성능 향상에 도움이 됩니다.

둘째, 개발 팀에서는 여러 가지 강력한 기능을 준비 중이며 그 중 상당수가 가상 호스팅 스타일 하위 도메인의 사용에 의존합니다. 이 모델로의 이전은 이러한 새 기능이 발표되는 즉시 활용할 수 있다는 혜택을 제공합니다. 예를 들어, AWS에서는 오래된 보안 암호 방식 및 버전 중 일부의 사용을 중지할 계획을 가지고 있습니다(세부 사항은 추후 제공). 여러분이 가상 호스팅 참조를 사용하고 있는 경우 AWS와 사용자 모두의 입장에서 이 사용 중지 절차가 더 쉽고 매끄럽게 진행될 수 있습니다.

신규 모델 도입 혜택

가상 호스팅 참조의 사용을 통해 얻게 되는 혜택의 예 중 하나로, 각 버킷의 보안 구성(암호화 기능 및 암호화 버전 포함)에 대한 제어 기능 향상이 있습니다. 이 외에 새로운 아이디어가 있으면 AWS에 알려주시기 바랍니다.

적용 계획

다음은 현재 계획에 대한 알아두어야 할 몇 가지 사항입니다.

경로 스타일 참조 식별S3 액세스 로그(Host Header 필드 확인) 및 AWS CloudTrail 데이터 이벤트(requestParameters 입력 항목의 host 요소 확인)를 사용하면 경로 스타일 요청을 제출하는 애플리케이션을 식별할 수 있습니다.

프로그래밍 방식의 액세스 – 애플리케이션이 AWS SDK 중 하나를 사용하여 S3에 액세스하는 경우, 해당 SDK을 최신 버전으로 유지하는 것 외에는 어떤 작업도 수행할 필요가 없습니다. SDK는 버킷 이름에 하나 이상의 “.” 문자가 포함된 경우 외에는 ’이미 S3에 가상 호스팅 참조를 사용합니다.

마침표를 포함한 버킷 이름 – “.” 문자를 포함하는 버킷 이름은 웹 사이트 호스팅 및 기타 사용 사례에 사용하기에 전혀 문제가 없습니다. 그러나 이러한 이름은 TLS 및 SSL 인증서와 관련하여 문제가 있는 것으로 알려져 있습니다. AWS에서는 이러한 버킷에 대한 가상 호스트 요청을 지원하기 위해 열심히 노력하고 있으며 자세한 계획은 2020년 9월 30일 무렵에 알려드리겠습니다.

라우팅되지 않는 이름 – 일부 문자는 URL의 경로 구성 요소에서는 유효하지만 도메인 이름의 일부로는 유효하지 않습니다. 또한 경로는 대소문자를 구분하지만 하위 도메인 이름은 이를 구분하지 않습니다. AWS에서는 작년부터 새 버킷에 대해 보다 엄격한 규칙을 적용하고 있습니다. 라우팅되지 않는 이름의 버킷에 데이터가 있으며 이를 가상 호스트 요청으로 전환하려는 경우, 새 S3 배치 작업 기능을 사용하여 데이터를 이동할 수 있습니다. 그러나 이 옵션을 사용할 수 없는 경우에는 AWS 개발자 지원 팀에 문의하십시오.

설명서 – AWS에서는 모든 개발자가 가상 호스트 요청을 사용하는 애플리케이션을 구축하도록 권장하기 위해 S3 설명서를 업데이트할 계획을 가지고 있습니다. 가상 호스팅 설명서가 먼저 업데이트될 것으로 보입니다.

문의 방법

S3 팀은 이미 몇몇 고객의 마이그레이션을 지원하고 있으며 앞으로도 더 많은 고객을 지원할 준비가 되어 있습니다.

AWS에서는 이 사용 중지 작업이 문제 없이 원활하게 완료될 수 있게 하는 것을 목표로 삼고 있으며 작업 비용이 최소화될 수 있도록 도와드리고자 합니다. 문제 또는 우려 사항이 있는 경우 언제든지 저희에게 문의해 주시기 바랍니다.

Jeff;

추신 – 도구 및 기타 리소스에 대한 추가 정보를 곧 제공해 드릴 예정이니 기대하시기 바랍니다.