상세 컨텐츠

본문 제목

AWS 4일차 (2) S3

카테고리 없음

by kiminaki 2021. 6. 6. 22:07

본문

S3 객체 스토리지 클래스, 암호화 설정하기

S3 암호화를 하게되면 보안상 좋게된다. 사용자는 이용할때 그냥 이용하지만 사실 여기서 자동으로 암호 해독과정이 일어난다. 그래서 암호화한 파일이 많을경우 더욱 많은 비용이 과금 된다.

 

기존이 있는 버킷을 암호화 할수도 있고, 이미 생성된 버킷을 암호화할 수 있고, 특정 객체만 암호화를 수행할 수 있다.

 

 

기본적이 암호화는 S3에서 버킷-속성-기본 암호화에서 할 수 있다.

 

 

 

S3 객체 메타데이터 설정하기

메타데이란 무엇일까 ? 메타데이터의 의미는 데이터의 데이터이다. 즉 데이터를 설명해 주는것이 메타 데이터이다. 

 

예를들어

한 객체에 대해서 이런식으로 표현 할 수 있는것이다. 이는 아마존 FAQ에서 더 확인 해 볼 수 있다. 

 

  • Cache-Control: 브라우저 캐시 정책을 설정합니다. Value에 max-age=3600과 같은 식으로 데이터 만기 시간을 초 단위로 지정할 수 있습니다. 만기 시간이 지나기 전에 다시 요청을 할 경우 브라우저에서는 서버에서 데이터를 가져오지 않고 로컬에 있는 데이터를 사용합니다. 이 설정은 AWS의 CDN 서비스인 CloudFront와도 연계됩니다. Cache-Control에 대한 내용은 상당히 방대하므로 인터넷을 참조하기 바랍니다.
  • Content-Disposition: Value에 attachment로 설정하면 JPG 파일 같은 경우 웹 브라우저에서 그림 파일을 보여주지 않고 바로 다운로드합니다. 그림 파일 뿐만 아니라 다른 형식의 파일에도 지정할 수 있습니다.
  • Content-Type: 웹 브라우저에서 파일을 어떻게 처리해야 하는지 알려주는 메타데이터 입니다. 보통 확장자에 따라 자동으로 설정됩니다. 확장자가 없는 파일은 이 메타데이터를 통해 강제로 형식을 지정해 줄 수 있습니다. 예를 들면 HTML을 담고 있는 hello라는 파일을 올리고, 웹 브라우저에서 열면 내용이 보이지 않고 바로 다운로드가 되어버립니다. 그래서 hello라는 파일의 Content-Type을 text/html로 설정해주면 웹 브라우저에서 HTML 파일로 인식해서 내용을 보여주게 됩니다.
  • Content-Language: 텍스트로 된 파일(HTML 등)의 언어를 지정합니다. en, ko, jp 혹은 en-us, ko-kr, ja-jp 등으로 지정합니다.
  • Expires: Cache-Control과 같은 동작을 하지만 초 단위가 아닌 특정 날짜와 시간을 지정하여 만기 시간을 설정합니다. Tue, 22 Apr 2014 20:00:00 GMT와 같은 형식으로 지정해야 합니다.
  • Content-Encoding: 데이터 인코딩 방식입니다. Value에 gzip을 지정할 수 있으며 이때에는 데이터를 압축하여 전송한 뒤 웹 브라우저에서는 압축을 해제하여 사용하게 됩니다. 텍스트 데이터가 많고 용량이 큰 경우 이 메타데이터를 사용하면 데이터 전송 비용을 절감할 수 있습니다(JPG나 PNG 등의 그림 파일은 이미 포맷 자체가 압축 데이터이므로 gzip을 설정하더라도 용량이 크게 줄어들지 않습니다. 따라서 그림 파일에는 이 메타데이터를 설정하지 않는 것이 좋습니다). gzip을 가장 많이 사용하며 deflate도 지정할 수 있습니다.

다음은 그림 11-53과 같은 S3 전용 메타데이터입니다.

  • Website Redirect Location: 웹 브라우저로 해당 파일에 접속했을 때 다른 파일이나 URL로 리다이렉션하는 기능입니다. /hello.html 처럼 S3에 올라가 있는 파일명을 지정할 수 있습니다.(이 때에는 /로 시작해야 합니다.) 또는 http://www.example.com처럼 외부 도메인 또는 URL을 지정할 수도 있습니다. 이 설정은 버킷을 정적 웹사이트 호스팅으로 설정한 뒤 S3 Website Endpoint로 접속해야 동작합니다(x-amz-website-redirect-location).
  • 사용자 정의 메타데이터
  • x-amz-meta-: 사용자 마음대로 사용할 수 있는 메타데이터입니다. 객체에 추가적인 설명을 넣고 싶을 때 사용합니다. x-amz-meta- 뒤에 임의로 이름을 붙여 x-amz-meta-user-id와 같이 사용하면 됩니다.
  • S3 시스템 정의 메타데이터. 일부 S3 세부 설정들을 이 메타데이터로 대신할 수 있습니다. 그리고 S3 콘솔에서 설정한 세부 설정들은 HTTP Response Header에 아래 키로 표현됩니다.
  • x-amz-server-side-encryption: 데이터 암호화 옵션입니다. Properties의 Details에서 Server Side Encryption 설정을 대신할 수 있으며 AES256을 값으로 가집니다.
  • x-amz-version-id: S3 버킷에 버저닝 기능을 켰을 때, 파일의 버전을 표시합니다(사용자가 편집할 수 없는 메타데이터).
  • x-amz-delete-marker: S3 버킷에 버저닝 기능을 켜고, 파일을 삭제하면 파일이 완전히 삭제되지 않고 삭제 표시(delete-marker) 설정이 됩니다. true를 값으로 가집니다 (사용자가 편집할 수 없는 메타데이터).
  • x-amz-storage-class: 스토리지 클래스 옵션입니다. Properties의 Details에서 스토리지 클래스(Storage Class) 설정을 대신할 수 있으며 STANDARD와 REDUCED_REDUNDANCY를 값으로 가집니다.

 

메타데이터 편집은 버킷에 있는 객체-속성에서 할 수 있다.

S3 로깅

 

로깅 데이터를 생성할 버킷에 속성-서버 엑세스 로깅에 편집을 클릭한다.

 

활성화 시키고 어디에 저장할지 경로를 지정해준다.

 

 

10~20분뒤에 로깅데이터가 생성되어지고, 전문프로그램을 통해 분석할 수 있다.

S3 버저닝(S3 Versioning)

버저닝이란 ? 버전이라는말은 다들 알것이다.

예를들어 나는 롤이라는 게임을 한다. 주기적으로 서버에서 패치를 해주면 매 패치마다 챔피언의 고유수치같은것들이 달라진다. 

 

S3에서 버저닝이란 어떤걸까 ? 파일을 버전별로 관리 한다는 뜻이다. 어떤 파일에 대해서 삭제 변경등이 이루어질때마다 버저닝을 하는것이다.

 

버저닝의 장점은 파일에 대한 버전을 모두 저장한다는 것인데. 변경이나 삭제 했을때 예전의 파일을 백업할 수 있게 해준다.

 

자 그럼 버킷안에 있는 IU2 파일을 삭제해본다.

 

 

해당 버킷의 속성-버킷 버전 관리를 활성화 해준다. 

 

 

 

그 다음 버킷의 객체가 있는곳에서 버전표시를 해주면 이런식으로 관련 버전들이 나온다. 현재 IU파일이 삭제 상태지만 해당 사진을 클릭하고 다운로드를 누르면 백업이 가능하다.

(버저닝은 좋은기능이지만 용량이 늘어날수록 함께 저장되기 때문에 과금이 많이 부과 될 수 있다.

 

주의할점이 하나더 있는데 버저닝은 일시정지만 가능하고 비활성화가 안된다. 

 

 

 

S3 버킷 수명 주기 설정하기

수명주기 lifecycle이란 ? 

수명주기는 일정시간이 지났을때 사용되지 않는 파일들을 삭제하거나 다른 곳에 백업하여 S3 저장공간을 절약 및 관리하고 싶을 때 사용합니다.

 

 

 

해당 버킷의 관리 수명 주기 규칙에서 생성을 클릭합니다.

 

 

 

  • 수명 주기 규칙 이름
    • 말 그대로 이름입니다. 용도에 맞게 설정합니다.

  • 규칙 범위 선택
    • 이 규칙은 버킷의 모든 객체에 적용됨
      - 버킷 내 모든 객체에 적용됩니다.
    • 하나 이상의 필터를 사용하여 이 규칙의 범위 제한
      - 객체마다 제한 할 수 있습니다.
  • 접두사
    • 하나 이상의 필터를 사용하여 이 규칙의 범위 제한을 설정 해야 보입니다.
    • 접두사는 제한하고싶은 폴더를 정확히 입력해줘야 합니다. 예를들어 /Whether/sun이 있을때 /sun만 입력하면 적용이 안됩니다. 풀 네임으로 작성해야합니다.

해당 파트에서는 수명 주기 규칙을 정할 수 있습니다.

 

 

 

 

 

Standard-IA는 장기 스토리지, 백업 및 재해 복구 파일용 데이터 스토어에 적합합니다.

지능형 계층화는 새로운 애플리케이션과 같이 알 수 없는 스토리지 액세스 패턴이나
데이터 레이크처럼 예측할 수 없는 액세스 패턴을 가진 데이터 세트에 적합한 스토리지
클래스입니다.

One Zone-IA는 자주 액세스하지만 필요할때 빠르게 액세스해야하는 데이터에 적합합니다.

Glacier는 데이터 보관을 위한 안전하고 내구력 있으며 저렴한 스토리지 클래스입니다.
중요한 정보를 저장하는데 사용합니다.

Glacier Deep Archive는 가장 저렴한 비용의 스토리지 클래스이며 1년에 한 두번 정도
액세스할 수 있는 데이터의 장기 보관 및 디지털 보존을 목적으로 합니다.
7~10년 이상의 데이터를 저렴하게 보관하는데 주로 사용하며 검색이 상당히 느려
주의를 요합니다.

  • 스토리지 클래스 간에 객체의 현재 버전 전환
    • 원하는 스토리지 클래스 전환을 선택하고 객체 생성 후 경과 기간을 설정해주시면 됩니다.
  • 스토리지 클래스 간에 객체의 이전 버전 전환
    • 현재 버전 전환과 방법은 동일합니다.
  • 객체의 현재버전 만료
    • 날짜를 지정하면 그 날짜 기준으로 만료 상태로 변경되며 시간이 좀더 경과된 후 삭제됩니다.
  • 객체의 이전 버전 영구 삭제
    • 설정된 날짜 기준으로 삭제됩니다.
  • 만료된 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제
    • 현재 날짜 기준으로 실행됩니다.
  • 처리가 일어나는 시간 같은 경우 내부적으로 적용되며 따로 명시되어 있지는 않습니다.

 

 

 

S3 버킷 기타 설정

S3 버킷은 앞서 설명한 것 이외에도 다양한 설정이 가능합니다. 아래 설정들은 간략한 설명으로 대신하겠습니다.

  • Notifications: 낮은 중복 스토리지(Reduced Redundancy Storage)를 사용하는 객체가 유실되었을 때 SNS(Simple Notification Service)로 알림을 전송해주는 기능입니다.
  • Tags: 버킷에 태그를 설정합니다. AWS의 Cost Allocation Reports에서 S3의 비용 내역을 볼 수 있으며 이 보고서에는 여기서 설정한 태그 별로 집계된 사용 내역 및 비용이 표시됩니다.
  • Requester Pays: 기본적으로 S3 버킷 소유자는 사용 공간 및 데이터 전송량에 따른 요금을 지불하게 됩니다. 이 설정을 사용하면 버킷 소유자는 사용 공간에 대해서만 요금을 지불하면 되고, 데이터 전송량에 따른 요금은 데이터를 다운로드한 사용자가 지불하게 됩니다. 이 설정을 사용하면 버킷에 대한 익명 접근은 모두 차단됩니다. 자세한 내용은 링크를 참조하기 바랍니다.