[AWS SAA] S3 (Simple Storage Service)

인바다·2023년 10월 19일
0
post-thumbnail

S3 (Simple Storage Service)

  • "infinitely scailing" storage

  • Objects(files)는 전체 경로를 Key로 사용한다. 따라서 S3는 global level로 unique한 이름을 갖는다. 이름은 global level이지만 rigion level에 저장된다.

  • Object의 Max size는 5TB 임. 5GB 넘게 uploading 한다면 "multi-part upload"를 사용해야 한다.

Use Cases

  • 백업 및 storage
  • Disaster Recovery
  • Archive
  • Hybrid Cloud storage
  • Application hosting
  • Media hosting
  • Data lakes & big data analytics
  • Software delivery, Static website

굉장히 많은 곳에 쓰인다...

Security

User Based

  • IAM Policies를 사용하여 API를 호출할 수 있는 구체적 user를 정한다.

Resource-Based

  • Bucket Policies : 특정 사용자나 다른 계정의 사용자에게 access를 허용한다. (cross account 허용) 이는 S3를 공개를 만드는 방법이기도 하다.
    - Object Access Control List(ACL), Bucket Access Control List(ACL)도 있다고... bucket policies를 주로 사용함...

Encryption

  • key를 이용해 객체 암호화

S3 Bucket Policies

  • JSON으로 작성되어 있다.
  • Block Public Access(Bucket setting)라고 모든 access 또는 교차계정 또는 policy의거 등등 여러 수준에서 접근을 허용 또는 거부할 수 있는데, 여기에서 거부를 설정하면 policy가 허용했다해도 거부된다.
  • 다음에 나오는 내용말고도 객체를 강제로 암호화하거나 다른 계정의 access를 허용할 수도 있다.
  • Actions : 허용하거나 거부할 수 있는 API 집합
  • Principal : Actions를 사용할 사용자(user)나 계정(account), 서비스(service) 또는 리소스(resource).
  • Effect : Actions를 허용할지 거부할지 정함
  • Resource : 정책이 적용되는 bucket과 object(file) 지정
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyObjectsThatAreNotSSEKMS",
            "Principal": "*",
            "Effect": "Deny",
            "Action": [
            	"s3:PutObject"
            ],
            "Resource": [
                  "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        }
    ]
}

Versioning

  • 버전 관리를 시작하도록 설정하면 버전화 되지 않은 file은 null 버전을 갖는다.
  • 버전 관리를 중단해도 이전 버전은 삭제되지 않는다.
  • 수정, 삭제의 변환 정보가 저장되어 이전으로 돌아 갈 수 있다. version이 삭제되면 돌아가는 것은 불가능하다.

Replication

source, destination buckets 모두 versioning이 활성화되어 있어야 한다. 또한 반드시 S3에 올바른 IAM 권한(읽기, 쓰기)이 설정되어있어야 한다.

복제는 비동기로 이루어지며 다른 계정간에도 가능하다.

복제기능을 설정한 이후 시점부터 추가되는 object(file)만 추가된다. 이전 object(file)도 복제하고 싶은 경우 S3 batch operation을 사용해야한다.

CRR (Cross Region Replication) 사용사례

  • 법규나 내부 체제관리
  • 다른 리전에 있어 발생할 수 있는 지연 시간을 줄이고 싶은 경우
  • 계정간 복제가 필요한 경우

SRR (Same Region Replication) 사용사례

  • 다수의 S3 buckets의 로그를 통합 시
  • 개발 환경이 별도로 있어 운영 환경과 개별 환경간의 실시간 복제를 필요로 한 경우

S3 Storage Classes

수동이나 S3 Lifecycle 설정을 통해서 class 간에 객체를 자동으로 이전할 수 있다.
standard S3에 class 별 지정된 최소 보관 기간동안 보관 후 이전이 가능하다.

S3 Storage Classes 설명 들어가기 전 알아두어야 하는

  • Durability
    저장하는 과정에서 객체가 손실될 수도 있는데, 이를 손실되지 않도록 보장하는 것을 Durability라 한다.
    - storage class에 구분 없이 같다.
    - object across multi-AZ는 99.99999999999%의 높은 Durability를 가진다. (S3에 천만개 object 저장시 평균적으로 10,000년에 한 번 객체 손실이 예상되는 정도)
  • Availability
    - storage class에 따라 다르다.
    ex) S3 Standard는 99.99% Availability로 1년에 약 53분 동안은 서비스를 사용할 수 없다.

Standard

  • 99.99% Availability
  • 자주 접근하는 데이터에 사용
  • 동시에 2개의 기능 장애를 견딤
  • 사용사례: Big Data 분석, 모바일&게임 앱, content 배포

Standard-Infrequent Access (IA)

  • 99.9% Availability
  • 자주 접근하지는 않지만, 접근시 빠르게 접근해야 하는 데이터에 사용
  • S3 standard보다 저렴하지만 검색비용 발생
  • 최소 보관 기간 30일
  • 사용사례: 재해 복구, 백업

One Zone-Infrequent Access

  • 단일 AZ에서 99.99999999999% Durability 이지만, AZ 파괴시 데이터 잃음
  • 99.5% Availability
  • 최소 보관 기간 30일
  • 사용사례: On-premise 데이터 2차 백업, 재생성 가능한 데이터 저장

Glacier class는 cold storage로 archiving과 backup을 위한 저비용 storage다.

Glacier Instant Retrieval

  • Millisecond로 검색이 가능
  • 최소 보관 기간 90일
  • 사용사례: 백업이지만 빠른 검색이 필요한 데이터, 분기에 한 번 access하는 데이터

Glacier Flexible Retrieval

  • Expedited (1~5분), Standard(3~5시간), Bulk(5~12시간, 무료)
  • 최소 보관 기간 90일

Glacier Deep Archive

  • standard(12시간), Bulk(48시간)
  • 데이터를 검색하는데 가장 오래 걸리지만, 검색 비용이 가장 저렴
  • 최소 보관 기간 90일

Intelligent-Tiering

  • 사용 패턴에 따라 access된 tier간 객체를 자동으로 이동시켜줌. 자주, 30일간, 90일간, 90~700이상일, 180일에서 700이상일 등 접근 안한 데이터를 자동으로 class매겨서 이동시킴.
  • 월마다 소액의 monitoring 비용이 청구되지만 검색 비용이 없음


[참조]

Amazon S3란 무엇인가요? - https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/Welcome.html

Using Amazon S3 storage classes - https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html

0개의 댓글