Amazon S3 일반 목적 버킷 접근
Amazon S3 일반 목적 버킷 접근
Amazon S3 일반 목적 버킷은 Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK, Amazon S3 REST API 중 하나로 접근할 수 있어요. 각 접근 방식은 특정 사용 사례를 지원해요.
출처: 문서
본문
사용 사례 (Use cases)
일반 목적 버킷의 사용 사례에 따라 버킷 안 데이터에 접근하는 권장 방식이 달라져요. 일반적인 사용 사례는 다음과 같아요.
- 정적 웹사이트 – Amazon S3로 정적 웹사이트를 호스팅할 수 있어요. Block Public Access 같은 보안 설정을 켠 채 정적 웹사이트를 호스팅하려면 Amazon CloudFront와 오리진 접근 제어(OAC), HTTPS 같은 추가 보안 헤더를 함께 사용하는 것을 권장해요. 참고로 Amazon S3는 정적 웹사이트 접근에 가상 호스트 스타일과 경로 스타일 URL을 모두 지원해요. 두 방식 모두 접근 가능하므로 DNS 호환 버킷 이름을 만드는 것을 권장해요.
- 공유 데이터셋 – Amazon S3에서 규모를 키우면 여러 최종 고객이나 사업 부서에 공유 일반 목적 버킷 안의 고유 접두사를 배정하는 다중 테넌트 모델을 흔히 채택해요. S3 액세스 포인트를 사용하면 하나의 큰 버킷 정책을 공유 데이터셋에 접근해야 하는 각 애플리케이션의 개별 액세스 포인트 정책으로 나눌 수 있어요.
- 데이터 탐색 및 관리 – Storage Browser for Amazon S3는 웹 애플리케이션에 추가할 수 있는 오픈소스 컴포넌트로, 최종 사용자에게 Amazon S3 데이터를 탐색·관리하는 간단한 인터페이스를 제공해요.
- 고처리량 워크로드 – Mountpoint for Amazon S3는 일반 목적 버킷을 로컬 파일 시스템으로 마운트하는 고처리량 오픈소스 파일 클라이언트예요. open, read 같은 파일 시스템 연산으로 S3 객체에 접근하며, Mountpoint가 이를 S3 객체 API 호출로 변환해 줘요.
- 다중 리전 애플리케이션 – Amazon S3 Multi-Region 액세스 포인트는 여러 AWS 리전에 있는 버킷의 요청을 처리하는 전역 엔드포인트를 제공해요. 인터넷 기반 요청을 가속화해 네트워크 복원력을 제공해요.
- SFTP – 인터넷을 통해 민감한 데이터를 안전하게 전송해야 한다면 SFTP 지원 서버를 일반 목적 버킷과 함께 사용할 수 있어요. 먼저 SFTP 지원 서버를 만든 뒤 사용자 계정을 설정하고, 서버를 S3 버킷과 연결하면 돼요.
Amazon S3 콘솔 (Amazon S3 console)
콘솔은 Amazon S3와 AWS 리소스를 관리하기 위한 웹 기반 사용자 인터페이스예요. 콘솔 UI만으로 코드 작성 없이 대부분의 버킷 작업을 수행할 수 있어요. AWS 계정에 가입했다면 https://console.aws.amazon.com/s3/에서 S3를 선택해 접근할 수 있어요.
AWS CLI
시스템 명령줄에서 명령을 내리거나 스크립트를 작성해 AWS(및 S3) 작업을 수행할 수 있어요. 여러 버킷에 접근해야 한다면 반복 작업을 자동화해 시간을 절약할 수 있어요. AWS CLI는 Windows, macOS, Linux를 지원해요. Amazon S3 명령에 대한 자세한 내용은 s3api와 s3control 명령을 참고하세요.
AWS SDK
AWS는 Java, Python, Ruby, .NET, iOS, Android 등 다양한 언어와 플랫폼용 라이브러리와 샘플 코드를 제공해요. SDK는 기본 Amazon S3 REST API를 감싸 서명 계산, 요청 서명, 오류 관리, 자동 재시도 같은 작업을 처리해 프로그래밍 작업을 단순화해 줘요.
Amazon S3와의 모든 상호작용은 인증되거나 익명이에요. SDK를 사용하면 제공한 키에서 라이브러리가 인증용 서명을 계산해요.
Amazon S3 REST API
Amazon S3의 아키텍처는 프로그래밍 언어 중립적으로 설계되어 있어요. REST API는 Amazon S3에 대한 HTTP 인터페이스이며, 표준 HTTP 요청으로 버킷과 객체를 만들고, 가져오고, 삭제해요. HTTP를 지원하는 어떤 도구든 사용할 수 있고, 익명으로 읽을 수 있는 객체라면 브라우저로도 가져올 수 있어요.
애플리케이션에서 REST API를 직접 호출한다면 서명을 계산해 요청에 추가하는 코드를 직접 작성해야 해요.