본문 바로가기

DevOps/AWS

AWS S3는 무엇일까? S3에 파일 업로드

Amazon S3는 Simple Storage Services의 약자로 확장성이 뛰어나며, 무한대로 저장 가능하고, 사용 가능한 객체 스토리지 서비스다. 파일 서버 역할을 한다고 생각하면 됩니다. Amazon S3를 사용해 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있다.

 

    AWS S3(Simple Storage Service)의 특징

    • 저장할 수 있는 파일 수의 제한이 없다.
    • URL을 통해 손쉽게 파일 공유 기능 제공한다.
    • 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스할 수 있다.
    • 파일에 인증을 붙여서 무단으로 액세스 하지 못하도록 할 수 있다.
    • 버전 관리 기능을 통해서 사용자에 의한 실수도 복원이 가능하다.
    • 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다.
    • 정보의 중요도에 따라서 보호 수준을 차등할 수 있고, 이에 따라서 비용을 절감할 수 있다. (RSS)

     

    AWS S3에서 사용되는 용어

    버킷(bucket)

    버킷은 Amazon S3에 저장된 객체에 대한 컨테이너다. 객체가 파일이라면 버킷은 연관된 객체를 그룹핑한 최상위 디렉터리라고 할 수 있다.

    버킷 단위로 지역(region)을 지정할 수 있고, 또 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다. 버킷의 이름은 S3 리전 중에서 유일해야 한다. 계정 별로 최대 100개의 버킷을 포함할 수 있다. 버킷을 생성한 후에는 버킷 이름 또는 해당 리전을 변경할 수 없다.

     

    객체(object)

    객체는 S3에 데이터가 저장되는 기본 단위로써 파일과 메타 데이터로 이루어져 있다.

    객체는 키(이름) 및 버전 ID를 통해 버킷 내에서 고유하게 식별된다. (버킷에서 S3 버전 관리가 사용 설정된 경우).

    메타데이터는 객체를 설명하는 이름-값 페어의 집합이다. 여기에는 마지막으로 수정한 날짜와 같은 몇 가지 기본 메타데이터 및 Content-Type 같은 표준 HTTP 메타데이터가 포함된다. 객체를 저장할 때 사용자 임의로도 설정 가능하다.

     

    버전 관리

    S3에 저장된 객체들의 변화를 저장한다. S3 버전 관리를 사용하여 버킷에 저장된 모든 버전의 모든 객체를 보존, 검색 및 복원할 수 있다. 예를 들어 A라는 객체를 사용자가 의도치 않게 삭제하거나 변경해도 각각의 변화를 모두 기록하기 때문에 쉽게 복구가 가능하다.

     

    버킷 정책

    버킷 정책은 버킷과 해당 버킷의 객체에 액세스 권한을 부여할 수 있는 리소스 기반 AWS Identity and Access Management(IAM) 정책이다. 버킷 소유자만 정책을 버킷에 연결할 수 있다. 버킷에 연결된 권한은 버킷 소유자가 소유한 모든 버킷의 객체에 적용된다. 버킷 정책은 크기가 20KB로 제한된다.
    버킷 정책에는 AWS에서 표준인 JSON 기반 액세스 정책 언어가 사용된다. 버킷 정책을 사용하여 버킷의 객체에 대한 권한을 추가하거나 거부할 수 있다. 

     

    S3 액세스 포인트

    Amazon S3 액세스 포인트는 해당 엔드포인트를 사용하여 데이터에 액세스 하는 방법을 설명하는 전용 액세스 정책이 포함된 명명된 네트워크 엔드포인트이다. 액세스 포인트는 GetObject 및 PutObject 같은 S3 객체 작업을 수행하는 데 사용할 수 있는 버킷에 연결된다.

     

    ACL(액세스 제어 목록)

    ACL을 사용하여 권한이 부여된 사용자에게 개별 버킷 및 객체에 대한 읽기 및 쓰기 권한을 부여한다. 각 버킷과 객체마다 하위 리소스로서 연결되어 있는 ACL이 있다. ACL은 액세스를 허용할 AWS 계정 또는 그룹과 액세스 유형을 정의한다

     

    RSS

    Reduced Redundancy Storage의 약자로 일반 S3 객체에 비해서 데이터가 손실될 확률이 높은 형태의 저장 방식. 대신에 가력이 저렴하기 때문에 복원이 가능한 데이터, 이를테면 섬네일 이미지와 같은 것을 저장하는데 적합하다.

     

    Glacier

    영어로는 빙하라는 뜻으로 매우 저렴한 가격으로 데이터를 저장할 수 있는 아마존의 스토리지 서비스

     

     

    AWS S3(Simple Storage Service 버킷 생성

    1. 버킷 만들기 클릭

    그럼 바로 bucket을 만들어 보겠습니다. s3를 검색하고 들어간 다음, 버킷 만들기를 클릭합니다.

     

    2. 버킷 이름, 리전 입력

    버킷 이름을 원하는 이름으로 명시를 하면 됩니다.

    버킷 이름 규칙에는 모든 AWS 리전의 모든 AWS 계정에서 고유해야 하기 때문에 다른 계정에서 이미 만든 버킷 이름은 안될 수 있습니다.

    자세하 내용은 버킷 명명 규칙을 참고하면 됩니다.

     

    3. 버전 관리 설정

    버전 관리의 경우, 같은 파일을 올리면서 계속 업데이트 과정을 거치더라도, 업데이트 이전의 내용을 복원할 수 있게 해 줍니다.

    4. 객체 소유권 설정 (ACL 활성화 여부)

    5. 퍼블릭 액세스 차단 설정

    가장 첫 번째 부분을 체크해두면, 공개 설정으로 해둔 파일을 업로드할 때, 업로드가 거절이 됩니다. 체크를 해제하면 공개 파일을 업로드할 때 업로드가 됩니다. 두 번째의 경우, 첫 번째 체크를 해제하더라도, 비공개로 인식해서 공개가 되지 않습니다.

    ​즉 bucket를 비공개로 사용하겠다고 하면 체크를 하는 것이 좋고, 업로드하는 파일 중 어떠한 것들은 공개하고 싶다라고 하면 체크를 해제하는 것이 좋습니다.

    6. 버킷 읽기, 수정

    버킷을 생성하면 다음처럼 버킷 이름, 리전 정보를 확인할 수 있습니다.

    클릭해서 들어가면 권한, 속성 등 정보를 수정할 수 있습니다.

    7. 객체(폴더 및 파일) 생성 

    버킷 안에 파일을 넣기 위한 폴더를 생성합니다.

     

    위 사진처럼 폴더가 추가되고 "업로드" 버튼을 클릭해 파일을 추가합니다.

    업로드 시 여러 스토리지 클래스가 있는데 기본으로 선택해서 진행합니다.

     

    업로드가 완료되면 완료된 파일을 확인할 수 있습니다.

    8. 공유 시 권한 에러 및 해결

    파일 공유 url로 브라우저에 입력하면 접근 거부 응답을 받습니다.

     

     

    이를 해결하기 위해 파일 상세 정보 페이지에 들어가서 권한 정보를 수정합니다.

    모든 사람의 경우 읽기를 허용해주고 다시 브라우저로 파일을 접속합니다.

    밑의 사진을 보면 접근 거부 응답을 받지 않고 파일 내용을 확인할 수 있습니다.