[AWS SAA] S3 (개념, 보안, 복제 등)

junghan·2023년 2월 27일
0

AWS SAA

목록 보기
25/51
post-thumbnail

S3란?

Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. 모든 규모와 산업의 고객은 Amazon S3를 사용하여 데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터와 같은 다양한 사용 사례에 대해 데이터 양을 제한 없이 저장하고 보호할 수 있습니다.

일전에 ft_transcendence라는 게이밍서비스 과제를 할 때, 팀원이 프로필기능을 구현하기 위해 S3를 통해 유저 지정한 프로필 사진을 저장하여 미디어를 호스팅했던 기억이 있습니다.



S3 buckets

  • s3는 파일을 버킷에 저장하는데, 버킷은 상위레벨 디렉토리로 표시됩니다.
  • bucket은 리전 수준에서 정의가 되지만, 전세계적으로 유니크한 이름을 사용해야 합니다.

네이밍 규칙

  • No uppercase
  • No underscore
  • 반드시 소문자 또는 숫자로 시작해야 한다.
  • 3 ~ 63 글자
  • IP가 아니여야합니다.
  • xn--으로 시작하는 접두사는 사용불가
  • s3alias로 끝나는 접미사는 사용불가


S3 Objects

Key

  • Objects는 하나의 파일이며 이는 Key를 가지고 있습니다.
    Key는 full_path를 의미합니다.
  • s3://junghan_bucket /my_text.txt
  • s3://junghan_bucket /my_folder_1/my_folder_2/my_text.txt
    Key는 prefix + object name 으로 구성 됩니다.
  • 버킷 내에는 사실 디렉토리라는 개념이 없습니다.(콘솔에서는 디렉토리처럼 표시되어 있지만).
  • 매우 긴 이름과 슬래시(/)가 들어간 Key가 있을 뿐입니다.

Value

  • Object의 value는 body의 내용을 담고 있습니다.
  • Object의 최대 사이즈는 5TB (5000GB)입니다.
  • 만약 5GB 이상 업로드를 하려면 “multi-part upload”를 해야 합니다. 즉, 나누어 업로드 해야 합니다(5 * 1000번). 한 번에 5TB를 업로드 할 수는 없습니다. (multi-part form data와 비슷)
  • Object는 Metadata를 가질 수 있습니다(이는 key-value 쌍으로 구성된 리스트로, 시스템 정보 또는 유저 metadata가 될 수 있습니다.).
  • Object는 또한 Tags를 가질 수 있다(이는 Unicode로 구성된 key / value 쌍으로 이루어지며 10개까지 가질 수 있습니다.)
  • 보안 또는 수명 주기 그리고 Version ID를 관리하는 데 좋습니다.
    Object는 Version ID를 가질 수 있습니다(버전 설정이 켜져 있으면).


Security

  • 사용자 기반
    • IAM 정책 – IAM의 특정 사용자에게 허용되어야 하는 API 호출

  • 리소스 기반
    • 버킷 정책 – S3 콘솔의 버킷 전체 규칙 - 교차 계정 허용
    • Object Access Control List(ACL)(액세스 제어 목록) – 세분화된 수준(비활성화 가능)
    • Bucket Access Control List(ACL) – 덜 일반적임(비활성화 가능)

  • 참고: IAM 보안 주체는 다음과 같은 경우 S3 객체에 액세스할 수 있습니다.
    • 사용자 IAM 권한이 허용하거나 리소스 정책이 허용합니다.
    • 그리고 명시적인 DENY가 없습니다.

  • 암호화: 암호화 키를 사용하여 Amazon S3의 객체 암호화

S3 Bucket Policies

  • JSON 기반 정책
    • Resource: 버킷 및 개체
    • Effect: 허용/거부
    • Actions: 허용 또는 거부할 API 집합
    • Principal: 정책을 적용할 계정 또는 사용자

  • 정책에 S3 버킷을 사용하여 다음을 수행합니다.
    • 버킷에 대한 공개 액세스 권한 부여
    • 업로드 시 객체를 강제로 암호화
    • 다른 계정에 대한 액세스 권한 부여(크로스 계정)

https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html

S3 Websites Hosting

S3는 정적 웹사이트(static websites)를 호스팅 할 수 있으며 이를 www로 접근 가능하도록 만들 수 있습니다.

• 웹사이트 URL은 아래와 같은 형식을 가집니다.

http://demo-bucket.s3-website-us-west-2.amazonaws.com http://demo-bucket.s3-website.us-west-2.amazonaws.com

S3 정적 웹사이트 호스팅

  1. 정적 웹사이트 호스팅 활성화

  1. 호스팅할 객체 저장

  1. 호스팅을 한 뒤, 403 Forbidden 오류가 발생하면 위에서 설명했던 버킷 정책 공개 읽기를 허용이 되어있는지 확인하고 수정해주면 됩니다.



S3 Versioning

Amazon S3에서는 파일을 버전 관리할 수 있습니다
이것은 버킷 수준에서 활성화해야 하는 설정입니다.

사용자가 파일을 업로드할 때마다 선택키에서 해당 파일의 버전이 생성될 텐데요동일한 키를 업로드하고 해당 파일을 덮어쓰는 경우 버전 2, 버전 3 등을 생성하게 됩니다.

이 방법은 의도하지 않게 삭제하지 않도록 보호해주기 때문입니다 실수로 파일을 삭제하더라도 이전 버전을 복구할 수 있는 거죠

Note

  • 버전 관리를 활성화하기 전에 버전 관리가 적용되지 않은 모든 파일은 널(null) 버전을 갖게 됩니다

  • 버전 관리를 중단한다고 해서 이전 버전이 삭제 되지는 않습니다.

Bucket Versioning

  1. 버저닝을 활성화

  1. 새로운 버전의 파일을 업로드

  2. S3 버컷의 버전표시 토글을 활성화 한 뒤, 객체의 변화 확인

  1. 이전 버전으로 롤백하고 싶다면 객체를 삭제하면 됩니다.
  • 버전 표시 후, 삭제를 시도하면 파일은 영구 삭제
  • 버전 표시 하지 않고 삭제를 시도하면 파일은 삭제 마크를 붙인 채 기록됩니다 삭제



S3 복제(CRR, SRR)

복제를 사용하면 Amazon S3 버킷에서 객체를 자동으로 비동기식으로 복사할 수 있습니다. 객체 복제용으로 구성된 버킷은 동일한 AWS 계정 또는 다른 계정이 소유할 수 있습니다. 개체를 단일 대상 버킷 또는 여러 대상 버킷에 복제할 수 있습니다. 대상 버킷은 다른 AWS 리전에 있거나 소스 버킷과 동일한 리전에 있을 수 있습니다.

  • 소스 및 대상 버킷에서 버전 관리를 활성화해야 합니다.
  • Cross-Region Replication(CRR)
  • Same-Region Replication(SRR)
  • 버킷은 다른 AWS 계정에 있을 수 있습니다.
  • 복사는 비동기식입니다.
  • S3에 적절한 IAM 권한을 부여해야 합니다.

사용 사례:

• CRR – compliance, 액세스 대기 시간 단축, 계정 간 복제
• SRR – 로그 집계, 프로덕션 계정과 테스트 계정 간의 실시간 복제

Note

• 복제를 활성화하면 새 개체만 복제됩니다. (복제 시점 이후 파일)
• 선택적으로 S3 Batch Replication을 사용하여 기존 개체를 복제할 수 있습니다.
• 기존 객체 및 복제에 실패한 객체 복제

  • DELETE 작업의 경우
    • 삭제 마커를 소스에서 대상으로 복제할 수 있습니다(선택적 설정).
    버전 ID가 있는 삭제는 복제되지 않습니다(악의적인 삭제 방지).
    - 삭제 마커 복제 설정하면 가능

  • 복제의 "Chaining"이 없습니다.
    • 버킷 1이 버킷 2로 복제되고 버킷 3으로 복제되는 경우
    • 그러면 버킷 1에서 생성된 객체는 버킷 3에 복제되지 않습니다.



S3 class type

AWS S3는 사용 사례 시나리오 및 성능 액세스 요구 사항에 맞는 다양한 S3 스토리지 클래스를 제공합니다.

S3 Standard – 일반적으로 사용됨

• 99.99% 가용성
• 자주 접근하는 데이터에 사용
• 낮은 대기 시간 및 높은 처리량
• 2개의 동시 시설 장애 유지
• 사용 사례: 빅 데이터 분석, 모바일 및 게임 애플리케이션, 콘텐츠 배포…


S3 Infrequent Access (자주 접근하지 않는 클래스)

• 자주 액세스하지 않지만 필요할 때 신속하게 액세스해야 하는 데이터의 경우
• S3 Standard보다 저렴한 비용

Amazon S3 Standard-Infrequent Access(S3 Standard-IA)

• 99.9% 가용성
• 사용 사례: 재해 복구, 백업

Amazon S3 One Zone-Infrequent Access(S3 One Zone-IA)

• 단일 AZ에서 높은 내구성(99.999999999%); AZ가 파괴되면 데이터 손실
• 99.5% 가용성
• 사용 사례: 온프레미스 데이터 또는 다시 생성할 수 있는 데이터의 보조 백업 복사본 저장


빙하 스토리지 클래스

• 아카이빙/백업을 위한 저비용 객체 스토리지
• 가격: 스토리지 가격 + 객체 검색 비용

Amazon S3 Glacier 즉시 검색

• 밀리초 검색, 분기에 한 번 액세스하는 데이터에 적합
• 최소 보관 기간 90일

Amazon S3 Glacier 유연한 검색(이전 Amazon S3 Glacier):

• 신속(1~5분), 표준(3~5시간), 대량(5~12시간) - 무료
• 최소 보관 기간 90일

Amazon S3 Glacier Deep Archive – 장기 저장용:

• 표준(12시간), 대량(48시간)
• 최소 보관 기간 180일


S3 지능형 계층화

• 소액의 월별 모니터링 및 자동 계층화 요금
• 사용량에 따라 액세스 계층 간에 개체를 자동으로 이동합니다.
• S3 Intelligent-Tiering에는 검색 요금이 없습니다.

• 상용 액세스 계층(자동): 기본 계층
• Infrequent Access 계층(자동): 30일 동안 액세스하지 않은 객체
• 아카이빙 인스턴트 액세스 계층(자동): 90일 동안 개체에 액세스하지 않음
• 아카이브 액세스 계층(선택 사항): 90일에서 700일 이상으로 구성 가능
• 심층 아카이브 액세스 계층(선택 사항): config. 180일에서 700일 이상

S3 class 별 비교

https://aws.amazon.com/ko/s3/storage-classes/

AWS Certified Solutions Architect Associate 시험합격!

profile
42seoul, blockchain, web 3.0

0개의 댓글