[AWS] Amazon S3

Amazon S3

Amazon S3 소개

모든 타입에 대한 내구성 높은 개체 스토리지 서비스 (사용한 만큼만 지불, 선타자 필요 X, 용량 계산 필요 X)

객체 기반의 무제한 파일 저장 스토리지

URL 을 통해 손쉽게 파일 공유 가능

정적 웹 사이트 호스팅 가능

Amazon S3 에서 제공하는 단순한 웹 서비스 인터페이스를 사용하여
웹에서 언제 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있습니다.


Amazon S3 장점

Amazon S3 는 의도적으로 단순성 및 견고성에 초점을 두는 최소한의 기능 세트를 사용하여 구축되었습니다.


[참고]

HTTP 를 통한 SOAP 지원은 중단되었지만 HTTPS 를 통해 계속해서 사용할 수 있습니다.
새로운 Amazon S3 기능은 SOAP 에 대해 지원되지 않습니다.
REST API 또는 AWS SDK 를 사용하는 것이 좋습니다.


버킷이란?

버킷은 Amazon S3 에 저장된 객체에 대한 컨테이너로 모든 객체든 어떤 버킷에 포함됩니다.
예를 들어, photos/puppy.jpg 로 명명된 객체는 johnsmith 버킷에 저장되며,
다음 URL 을 사용하여 주소를 지정할 수 있습니다.
(http://johnsmith(버킷이름).s3.amazonaws.com/photos/puppy.jpg(객체명))

버킷은 가장 높은 수준에서 Amazon S3 네임스페이스를 구성하고,
스토리지 및 데이터 전송 요금에 대한 책임이 있는 계정을 식별하며,
액세스 제어에서 역할을 하고, 사용량 보고에 대한 집계 단위로 사용되는 등 여러 목적으로 사용됩니다.

특정 리전에서 생성되도록 버킷을 구성할 수 있으며,
객체가 추가될 때마다 Amazon S3 에서 고유한 버전 ID 를 생성하고
이를 객체에 할당하도록 버킷을 구성할 수도 있습니다


객체란?

객체는 Amazon S3 에 저장되는 기본 개체입니다.
객체는 객체 데이터와 메타데이터로 구성됩니다. 데이터 부분은 Amazon S3 에서 볼 수 없습니다.
메타데이터는 객체를 설명하는 이름-값 페어의 집합입니다.
여기에는 마지막으로 수정한 날짜와 같은 몇 가지 기본 메타데이터 및 콘텐츠 형식과 같은 표준 HTTP 메타데이터가 포함됩니다.
객체를 저장할 때 사용자 정의 메타데이터를 지정할 수도 있습니다.

객체는 키(이름) 및 버전 ID 를 통해 버킷 내에서 고유하게 식별됩니다.


키란?

키는 버킷 내 객체의 고유한 식별자입니다. 버킷 내 모든 객체는 정확히 하나의 키를 갖습니다.
버킷, 키 및 버전 ID 의 조합이 각 객체를 고유하게 식별하기 때문에
Amazon S3 는 “버킷 + 키 + 버전”과 객체 자체 사이의 기본 데이터 맵으로 간주할 수 있습니다.


Amazon S3 내 모든 객체는 웹 서비스 엔드포인트, 버킷 이름, 키, 그리고 선택 사항인
버전의 조합을 통해 고유하게 주소를 지정할 수 있습니다.
예를 들어, http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl이라는 URL 에서
“doc”는 버킷의 이름이고 “2006-03-01/AmazonS3.wsdl”은 키입니다.


리전이란?

Amazon S3 에서 사용자가 만드는 버킷을 저장할 리전을 선택할 수 있습니다.
지연 시간 최적화, 비용 최소화, 규정 요구 사항 준수 등 다양한 필요에 따라 리전을 선택할 수 있습니다.
특정 리전에 저장된 객체는 사용자가 명시적으로 객체를
다른 리전으로 전송하지 않는 한 해당 리전을 벗어나지 않습니다.
예를 들어, EU(아일랜드) 리전에 저장된 객체는 해당 지역을 벗어나지 않습니다.


Amazon S3 데이터 일관성 모델

Amazon S3 는 모든 리전의 S3 버킷에 있는 새 객체의 PUT 에 대해
한 가지 주의 사항을 제시함으로써 읽기 후 쓰기 일관성을 제공합니다.
주의할 점은 객체를 만들기 전에 (객체가 있는지 찾기 위해) 키 이름에
HEAD 또는 GET 요청을 하는 경우 Amazon S3 가 읽기 후 쓰기에 대한 최종 일관성을 제공하는 것입니다.

Amazon S3 는 모든 리전의 덮어쓰기 PUTS 및 DELETES 에 대한 최종 일관성을 제공합니다.

단일 키에 대한 업데이트는 원자성입니다.
예를 들어 기존 키에 대해 PUT 할 경우 이후의 읽기가 기존 데이터 또는
업데이트된 데이터를 반환할 수 있지만 절대로 손상된 데이터 또는 부분 데이터를 반환하지 않습니다.

Amazon S3 에서는 Amazon 데이터 센터 내의 여러 서버로 데이터를 복제함으로써 고가용성을 구현합니다.
PUT 요청이 성공하면 데이터가 안전하게 저장됩니다.
그러나 변경 사항에 대한 정보를 Amazon S3 로 복제해야 하는데 이 작업에는 일정 시간이 걸릴 수 있으므로 다음 동작을 관찰할 수 있습니다.


사용법

  1. 버킷을 생성합니다. (여기서 리전을 지정합니다.) Action 을 눌르면 버킷의 생성과 삭제, 비우기가 가능합니다. 버킷은 폴더가 아닌 파일의 종류를 구분해주는 역할을 갖고 있으므로, 폴더처럼 한번에 삭제하는 기능은 없습니다. 버킷내에 파일은 하나씩 없앨 수 있으며, 버킷을 없애려면 버킷내 파일을 다 없애야 합니다.

  2. Uplaod 버튼을 통해 업로드를 합니다.

  3. 파일 정보를 확인합니다. 파일을 선택하고 Action 을 누르면 원하는 기능을 수행합니다. (여기서 파일의 정보공개를 설정할 수 있습니다.)

  4. 파일 업로드 프로그램 (업로드한 파일을 손쉽게 업로드, 다운로드가 가능합니다.)


[정적 웹 호스팅 시] -> static web site hosting 이라는 버튼을 클릭하면 됩니다.
단, 모든 파일은 공개 상태여야 합니다.