Page

관련 포스팅

2023년 10월 11일 수요일

AWS Chapter02, Part1 - Amazon S3

AWS 자격증 취득을 위한 공부 chapter 2에 들어왔다. 지금까지 누적 2시간 가량을 들었는데, 일단 퀄리티 자체는 굉장히 좋다. 그리고 서비스 차원에서 다양한 언어의 자막도 지원하며, 한글자막도 지원을 한다. 하지만, 강사의 표현이 굉장히 쉽고, 발음도 또박또박 해주기 때문에 나는 영어 공부도 할겸 영어자막을 켜놓고 들었다. 평소에도 학교에서 영어강의를 듣고있어서 그런지 솔직히 90% 이상은 다 알아들을 수 있다는 점이 조금 신기하기도 하다. 역시나 이곳 캐나다에서 영어에 많이 노출이 되다보니 자연스럽게 귀가 트이고 말문이 트이는 것 같다.

학기 중에 따로 강의를 듣는 것이기 때문에 시험기간이 겹치거나 학교 일정에 바쁜일이 생기면 이 강의는 당연히 후순위로 밀리게 된다. 따라서 내 목표는 12월 말까지 강의를 마무리하고, 바로 AWS 자격증 시험을 보는 것이다. 아직까지는 그리 어려운 내용이 나오지 않아서 할만하다.


Selecting the Storage Service

  1. Amazon S3 (Simple Storage Service):

    • 객체 기반의 스토리지 서비스로, 웹 스케일 데이터 저장 및 검색에 적합하다. 대규모 데이터 백업, 웹 사이트, 모바일 앱, 빅데이터 분석 등에 사용된다.
  2. Amazon Glacier & Glacier Deep Archive:

    • 장기 데이터 아카이브와 백업을 위한 저비용 스토리지 서비스다. Glacier는 몇 분에서 몇 시간 안에 데이터를 검색할 수 있고, Glacier Deep Archive는 12시간 내에 데이터 검색이 가능하다.
  3. Amazon CloudFront:

    • 콘텐츠 전송 네트워크 (CDN) 서비스로, 웹 콘텐츠와 애플리케이션을 사용자에게 빠르게 전달하기 위해 전 세계에 분산된 Edge Location에 콘텐츠를 캐시한다.
  4. Amazon EBS (Elastic Block Store):

    • 블록 스토리지 서비스로, Amazon EC2 인스턴스와 함께 사용한다. 데이터베이스나 애플리케이션 호스팅에 주로 사용된다.
  5. AWS Storage Gateway:

    • 온프레미스 환경과 AWS 클라우드 간의 통합 서비스다. 온프레미스 데이터를 AWS 스토리지 서비스로 쉽게 이전하거나 백업할 수 있다.
  6. Snow Family (예: Snowball, Snowmobile):

    • 대규모 데이터 이전을 위한 서비스다. 오프라인 방식으로 데이터를 AWS로 전송할 때 사용한다. Snowball은 페타바이트 규모, Snowmobile은 엑사바이트 규모의 데이터 전송을 지원한다.
  7. Databases (예: RDS, DynamoDB):

    • AWS는 다양한 데이터베이스 서비스를 제공한다. RDS(Relational Database Service)는 관계형 데이터베이스를 지원하며, DynamoDB는 NoSQL 데이터베이스 서비스다.

이러한 서비스들은 AWS 환경에서의 데이터 저장, 전송 및 처리를 위한 다양한 옵션을 제공한다. 각 서비스의 특성과 필요한 요구 사항에 따라 적절한 서비스를 선택하면 좋겠다.

Block Storage

  • Used on local networks
    • iSCSI
    • Fibre Channel
  • AWS can use block storage with virtual machines within the AWS cloud using EBS

File Storage

  • AWS uses similar, called object storage in S3
  • Used with NAS devices locally
  1. Block Storage:

    • 데이터를 독립된 '블록' 단위로 저장하는 스토리지 유형이다.
    • 각 블록은 고유한 주소를 가지지만, 그 안의 내용을 구별하는 메타데이터나 구조는 포함하지 않는다.
    • 주로 데이터베이스와 같은 고성능 애플리케이션에서 사용된다.
  2. File Storage:

    • 데이터를 '파일'과 '디렉터리' 구조 안에 저장하는 스토리지 유형이다.
    • 파일은 이름, 디렉터리 위치, 메타데이터와 같은 정보와 함께 저장된다.
    • 여러 사용자나 애플리케이션에서 동시에 공유하여 액세스할 수 있다.

간단히 말하면, Block Storage는 데이터를 작은 블록 단위로 분리하여 저장하며, File Storage는 우리가 일반적으로 생각하는 파일 시스템 형태로 데이터를 저장한다.

Block Storage와 File Storage의 공통점과 차이점

공통점:

  1. 데이터 저장: 두 스토리지 모두 데이터를 안전하게 저장하고 유지하는 데 사용된다.
  2. 내구성: 대부분의 스토리지 솔루션들은 데이터의 내구성을 보장하기 위한 여러 복제본을 유지한다.
  3. 확장성: 필요에 따라 저장 용량을 확장할 수 있다.

차이점:

  1. 데이터 조직 및 액세스:

    • Block Storage: 데이터는 독립된 '블록'으로 분할되어 저장된다. 각 블록에는 고유한 식별자가 있지만, 파일 이름이나 데이터 구조는 없다. 따라서, 연속된 블록이 하나의 파일을 구성할 수도 있고, 서로 다른 파일의 일부가 될 수도 있다.
    • File Storage: 데이터는 '파일'로 구성되어 디렉터리 구조 안에 저장된다. 사용자는 파일 경로와 이름을 통해 데이터에 액세스한다.
  2. 용도:

    • Block Storage: 주로 데이터베이스, 애플리케이션 호스팅 등의 IOPS가 중요한 작업에 적합하다. AWS의 EBS(Elastic Block Store)가 이에 해당한다.
    • File Storage: 공유 파일 시스템이 필요한 워크로드, 문서 관리, 미디어 저장 및 공유 등에 적합하다. AWS의 EFS(Elastic File System)가 이에 해당한다.
  3. 동시 액세스:

    • Block Storage: 일반적으로 단일 인스턴스에서만 블록 스토리지에 동시 액세스하는 것이 권장된다.
    • File Storage: 여러 사용자나 애플리케이션에서 동시에 액세스할 수 있다.
  4. 프로토콜:

    • Block Storage: iSCSI, Fibre Channel 등의 블록 기반 프로토콜을 사용한다.
    • File Storage: NFS, SMB 등의 파일 기반 프로토콜을 사용한다.

요약하면, Block Storage는 블록 단위로 데이터를 저장하며 주로 데이터베이스와 같은 IOPS 중심의 워크로드에 적합하다. 반면, File Storage는 파일 단위로 데이터를 저장하며 여러 사용자나 애플리케이션에서 동시에 액세스할 때 유용하다.

Selecting Storage

  • Size
  • Performance
  • Cost

Summary

  • The S3 (Simple Storage Service) service provides storage for objects (files).
  • Block storage is provided using the Elastic Block Store (EBS).
  • Select storage services based on capacity (size), performance, and cost.

S3 Storage class

  • Object storage
  • Distributes across at least three Availability zones.
    • Except: 1A (1 zone, least expensive)
  • Supports encryption and automatic data classification.
  • Big data analytics and run directly against stored data.

알겠다. 주어진 내용을 바탕으로 Amazon S3와 관련된 주요 특징들에 대해 설명하겠다.

Amazon S3 (Simple Storage Service):

  1. Object Storage:

    • S3는 객체 스토리지 서비스다. 이는 데이터를 파일 형태의 '객체'로 저장하며, 각 객체는 데이터, 메타데이터 및 고유한 식별자를 포함한다.
  2. 데이터 분산:

    • S3는 데이터를 적어도 세 개의 가용 영역(Availability Zones)에 분산하여 저장한다. 이렇게 함으로써 높은 내구성과 가용성을 보장한다.
    • 그러나 "1A" 또는 "One Zone-IA (Infrequent Access)" 스토리지 클래스를 사용하는 경우, 데이터는 하나의 가용 영역에만 저장된다. 이 클래스는 덜 중요한 데이터나 장기간 접근이 드물게 필요한 데이터에 사용하기에 적합하며, 다른 스토리지 클래스에 비해 비용이 낮다.
  3. 보안 및 관리 기능:

    • S3는 데이터를 암호화하여 저장할 수 있다. 사용자는 객체를 저장할 때 서버 측 암호화를 사용하거나, 클라이언트 측에서 데이터를 암호화한 후 업로드할 수 있다.
    • 또한 S3는 자동 데이터 분류 및 관리를 지원하여, 데이터의 수명 주기를 효과적으로 관리할 수 있다.
  4. 빅 데이터 분석:

    • S3에 저장된 데이터에 대해 빅 데이터 분석을 직접 실행할 수 있다. 여러 AWS 분석 서비스와 통합되어, 사용자는 데이터를 다른 위치로 이동시키지 않고도 분석을 수행할 수 있다.

이러한 특징들은 Amazon S3를 높은 내구성, 확장성 및 유연성을 가진 객체 스토리지 서비스로 만든다. 사용자는 이러한 특징을 활용하여 다양한 워크로드와 요구 사항에 맞는 데이터 저장 및 관리 전략을 구축할 수 있다.

Getting Data into S3

  • API
  • Amazon Direct Connect
  • Storage Gateway
  • Kinesis Firehose
  • Transfer Acceleration
  • Snow family
    • Snowball: PB
    • Snowball Edge: 100TB
    • Snowmobile: EB

Amazon S3로 데이터를 가져오는 여러 가지 방법들에 대한 간단한 설명을 제공하겠다.

  1. API:

    • AWS는 S3 객체를 생성, 읽기, 업데이트 및 삭제하기 위한 프로그래밍 방식의 접근을 제공하는 API를 제공한다. 대표적으로는 PUT, GET, DELETE 요청이 있다.
  2. Amazon Direct Connect:

    • Direct Connect는 사용자의 데이터 센터와 AWS의 데이터 센터 사이에 전용 네트워크 연결을 설정한다. 이를 통해 인터넷을 거치지 않고 높은 대역폭과 더 안정적인 연결로 S3와 다른 AWS 서비스로 데이터를 전송할 수 있다.
  3. Storage Gateway:

    • Storage Gateway는 온프레미스 환경과 AWS 클라우드 간의 통합을 제공한다. 이 서비스를 사용하면 온프레미스 데이터를 가상 애플리케이션 인터페이스나 물리적 하드웨어 어플라이언스를 통해 S3로 쉽게 백업하거나 이전할 수 있다.
  4. Kinesis Firehose:

    • Kinesis Firehose는 실시간 스트리밍 데이터를 쉽게 로드하기 위한 완전 관리형 서비스다. 데이터를 실시간으로 수집하고, 변환 후 S3나 다른 AWS 서비스로 전송할 수 있다.
  5. Transfer Acceleration:

    • S3 Transfer Acceleration은 사용자가 S3로의 데이터 업로드 및 다운로드 속도를 높이기 위해 Amazon CloudFront의 글로벌 가속화 위치를 활용한다.
  6. Snow family:

    • Snowball: 대규모 데이터 이전을 위한 장치로, 페타바이트(PB) 규모의 데이터를 AWS로 빠르게 전송할 수 있다.
    • Snowball Edge: Snowball의 확장 버전으로, 약 100TB의 저장 용량을 가진다. 추가적인 컴퓨팅 기능과 데이터 처리 능력도 갖추고 있다.
    • Snowmobile: 엑사바이트(EB) 규모의 데이터를 AWS로 전송하기 위한 특수화된 컨테이너 트럭이다. 매우 큰 데이터 세트를 짧은 시간 내에 AWS로 이전하고자 할 때 사용된다.

이러한 방법들은 데이터의 크기, 전송 속도 요구사항, 비용 및 인프라의 구성에 따라 다르게 적용될 수 있다.

Summary

  • S3 storage is distributed across 3 AZs, except 1A, which uses one zone and is less expensive.
  • S3 allows for automatic data classification.
  • Files stored in S3 can be encrypted.
  • Many other services can store data in S3, including Kinesis, Firehose, Storage Gateway, and the AWS API

S3 Terminology

S3 Concepts

  • Buckets
  • Regions
  • Objects
  • Keys: logical name of the object
  • Object URLs
  • Eventual consistency
    • Objects in S3 buckets have eventual consistency.
    • Objects in Elastic block Stores area consistent.
  • Works great for static website hosting

알겠다. 주어진 S3의 주요 개념들에 대해 설명하겠다.

  1. Buckets:

    • Amazon S3에서 객체를 저장하기 위한 기본 컨테이너다. 각각의 Bucket은 전역적으로 고유한 이름을 가져야 한다.
  2. Regions:

    • S3의 데이터는 AWS의 특정 지역(Regions)에 저장된다. 사용자는 Bucket을 생성할 때 이를 호스팅할 리전을 선택할 수 있다.
  3. Objects:

    • S3에 저장되는 데이터 항목들이다. 객체는 파일, 이미지, 동영상 등 어떠한 데이터 형태로도 저장될 수 있다.
  4. Keys:

    • S3의 각 객체는 키를 사용하여 고유하게 식별된다. 키는 객체의 논리적 이름으로, 폴더 구조를 포함하여 전체 경로가 될 수 있다.
  5. Object URLs:

    • S3에서 객체에 액세스하기 위한 고유한 URL이다. 이 URL은 Bucket 이름, 리전, Amazon S3 도메인 및 객체 키를 포함한다.
  6. Eventual Consistency:

    • S3의 객체는 '최종 일관성' 모델을 따른다. 이는 새로운 객체를 추가하거나 기존 객체를 삭제/업데이트한 후에는 짧은 시간 동안 일관성이 보장되지 않을 수 있다는 것을 의미한다. 그러나 Elastic Block Store (EBS)는 일관성을 가진다.
  7. Works great for static website hosting:

    • S3는 정적 웹사이트 호스팅에 적합하다. HTML, CSS, JavaScript 및 이미지와 같은 정적 리소스를 저장하고 웹사이트로 서비스할 수 있다.

이러한 개념들은 Amazon S3의 핵심 구성 요소 및 특징이며, 이를 이해하면 S3의 다양한 기능과 용도를 더 효과적으로 활용할 수 있다.

Common S3 Operations

  • Creating and deleting buckets
  • Writing objects
  • Reading objects
  • Deleting objects
  • Managing object properties
  • Listing keys in buckets

네, S3에서 수행할 수 있는 일반적인 작업들에 대해 설명하겠다.

  1. Creating and Deleting Buckets:

    • 생성: AWS Management Console, AWS CLI, SDK를 사용하여 새로운 Bucket을 생성할 수 있다. Bucket을 생성할 때는 고유한 이름과 원하는 리전을 지정해야 한다.
    • 삭제: Bucket을 삭제하기 전에 그 안의 모든 객체와 버전을 먼저 삭제해야 한다. AWS Management Console, AWS CLI, SDK 등의 도구를 사용하여 Bucket을 삭제할 수 있다.
  2. Writing Objects:

    • 데이터(객체)를 S3 Bucket에 업로드하는 것이다. 객체를 업로드할 때는 고유한 키와 함께 저장되며, 선택적으로 메타데이터, 액세스 권한 및 다른 설정도 지정할 수 있다.
  3. Reading Objects:

    • 저장된 객체를 검색하거나 다운로드한다. 객체의 키나 S3 제공 URL을 사용하여 해당 객체에 액세스할 수 있다.
  4. Deleting Objects:

    • 저장된 객체를 삭제한다. 객체의 키를 사용하여 특정 객체를 삭제할 수 있다.
  5. Managing Object Properties:

    • 객체의 메타데이터, 액세스 권한, 스토리지 클래스 및 다른 속성을 관리한다. 예를 들면, 객체의 저장 수명 주기를 설정하거나, 서버 측 암호화를 활성화할 수 있다.
  6. Listing Keys in Buckets:

    • Bucket 내에 저장된 객체들의 키를 나열한다. 이는 Bucket의 내용을 탐색하거나 특정 객체를 찾기 위해 사용된다.

이러한 기본 작업들은 Amazon S3를 사용하여 데이터를 저장, 검색 및 관리하는 데 필요한 핵심 작업이다. AWS Management Console, AWS CLI, SDK 등 다양한 도구와 인터페이스를 통해 이러한 작업들을 수행할 수 있다.

REST Interface

  • Representational State Transfer (REST)
    • S3 API
    • Maps HTTP methods to CRUD operations
      • Create uses PUT or POST
      • Read uses GET
      • Update uses POST or PUT
      • Delete uses DELETE

REST (Representational State Transfer)는 네트워크 상에서 리소스를 정의하고 리소스에 대한 주소를 지정하며, 해당 리소스에 대한 CRUD (Create, Read, Update, Delete) 작업을 수행하기 위한 프로토콜입니다. 주로 HTTP를 사용하여 구현된다.

Amazon S3는 REST 기반의 API를 제공하여 사용자가 프로그래밍 방식으로 S3의 리소스와 작업을 수행할 수 있게 한다. 여기서의 주요 매핑에 대해 설명하겠다.

  1. S3 API:

    • Amazon S3의 기능과 작업을 수행할 수 있게 하는 프로그래밍 인터페이스다. 이 API는 REST를 기반으로 하며, HTTP 메서드를 사용하여 S3 리소스에 접근하고 작업을 수행한다.
  2. Maps HTTP methods to CRUD operations:

    • Create: 새 리소스(예: 객체)를 생성하거나 저장한다.

      • PUT: 지정된 URI에 리소스를 생성하거나, 이미 있으면 해당 리소스를 교체한다.
      • POST: 서버가 처리한 후 적절한 URI에 리소스를 저장한다.
    • Read: 리소스를 조회한다.

      • GET: 지정된 URI의 리소스를 검색한다.
    • Update: 리소스를 수정한다.

      • POST: 리소스의 부분적인 수정을 수행한다.
      • PUT: 리소스의 전체를 교체한다.
    • Delete: 리소스를 삭제한다.

      • DELETE: 지정된 URI의 리소스를 삭제한다.

Amazon S3와 같은 RESTful 서비스는 이러한 HTTP 메서드를 사용하여 리소스의 상태를 전송하고 변경하는데, 이를 통해 개발자는 웹을 통해 분산 시스템에서의 상호 작용을 단순화하고 표준화할 수 있다.

Summary

  • Think of S3 buckets like drives on your local computer.
  • Files are objects in S3 buckets.
  • An S3 bucket can act as a static web server.
  • The S3 API is based on REST, which uses HTTP methods.

S3 advanced features

S3 Features

  • Prefixed and delimiters
  • Storage classes
    • Amazon S3 Standard : $$$$$
    • Amazon S3 Infrequent Access (IA) Storage: $$$$
    • Amazon S3 Reduced Redundancy Storage (RRS): $$
    • Glacier: $
    • 따라서 S3 Standard로 시작해서 점차 Glacier로 가는 path가 이상적이다.
  • Encryption
    • Sever-Side Encryption(SSE)
    • Client-Side Encryption(CSE)
  • Versioning
  • Multi-Factor Authentication (MFA) Delete
  • Multi-part upload
  • Range GETs
  • Cross-Region replication
  • Logging
  • Event notifications

S3의 주요 기능들에 대한 간단한 설명을 제공하겠다.

  1. Prefixes and Delimiters:

    • S3에서 객체는 '키'로 식별된다. Prefix와 Delimiter는 객체의 키 구조를 활용하여 폴더처럼 객체 그룹을 조직하고 검색하는 데 사용된다.
  2. Storage Classes:

    • S3는 데이터의 액세스 패턴 및 수명주기에 따라 다양한 스토리지 클래스를 제공한다.
      • Amazon S3 Standard: 자주 액세스하는 데이터에 적합하며, 최고의 성능과 내구성을 제공한다.
      • Amazon S3 Infrequent Access (IA): 잘 접근되지 않지만, 필요할 때 빠르게 액세스해야하는 데이터에 적합하다.
      • Amazon S3 Reduced Redundancy Storage (RRS): 중복된 데이터의 저장 비용을 절감하고 싶을 때 사용된다. 그러나 S3 Standard에 비해 내구성이 떨어진다.
      • Glacier: 장기 보관용 데이터에 적합하며, 저렴한 비용으로 데이터를 저장한다.
  3. Encryption:

    • Server-Side Encryption (SSE): 데이터가 S3에 저장될 때 암호화하고, 다운로드할 때 복호화한다.
    • Client-Side Encryption (CSE): 클라이언트 측에서 데이터를 암호화한 후 S3에 업로드하며, 다운로드 후 클라이언트에서 복호화한다.
  4. Versioning:

    • 객체의 여러 버전을 저장하고 관리할 수 있다.
  5. Multi-Factor Authentication (MFA) Delete:

    • MFA를 사용하여 객체 삭제를 보호한다.
  6. Multi-part upload:

    • 큰 객체를 여러 부분으로 나누어 업로드하며, 나중에 다시 합칠 수 있다.
  7. Range GETs:

    • 객체의 일부분만 검색할 수 있다.
  8. Cross-Region Replication:

    • 한 리전에서 저장된 객체를 다른 리전의 S3 Bucket으로 자동 복제한다.
  9. Logging:

    • 모든 요청에 대한 로그를 기록하며, 분석과 모니터링에 사용할 수 있다.
  10. Event notifications:

  • 특정 이벤트(예: 객체 업로드)가 발생할 때 알림을 받을 수 있다.

S3의 이러한 기능들은 데이터의 보안, 내구성 및 가용성을 강화하고, 다양한 워크로드와 요구 사항에 대응할 수 있게 해준다.

Summary

  • S3 uses prefixes in place of folders, through they appear as folders.
  • Choosing the right storage class is based on performance and cost.
  • Administrators can receive event notifications based on activities performed against S3 objects.

Creating S3 buckets lab

DNS compliant

  • Fully qualified domain name (FQDN)
  • The bucket names must be globally unique.

DNS(Domain Name System) 호환성은 인터넷의 도메인 이름을 IP 주소로 변환하고, IP 주소를 도메인 이름으로 다시 변환하는 데 사용되는 시스템을 말한다. Amazon S3의 버킷 이름은 DNS 호환성을 갖춰야 한다는 것이 특징이다.

Fully qualified domain name (FQDN):

  • FQDN은 컴퓨터나 네트워크 호스트의 전체 도메인 이름을 말한다. FQDN은 각 호스트의 고유한 이름을 제공하며, 일반적으로 "host.domain.tld" 형식을 따른다. 여기서 "tld"는 최상위 도메인을 나타낸다.

버킷 이름은 전역적으로 고유해야 한다:

  • Amazon S3에서 버킷의 이름은 전역적으로 고유해야 한다. 이는 전 세계의 모든 AWS 사용자 사이에서 버킷의 이름이 중복될 수 없다는 것을 의미한다. 이 규칙은 버킷을 고유한 FQDN으로 사용할 수 있게 하기 위한 것이다. 예를 들어, "my-unique-bucket"라는 이름의 S3 버킷을 만들면 해당 버킷의 FQDN은 "my-unique-bucket.s3.amazonaws.com"이 될 것이다.

이러한 DNS 호환성 규칙은 S3 버킷의 웹 호스팅과 같은 기능을 가능하게 한다.

버킷이라는 것을 생각할 때, 우리가 물을 담아두는 버킷을 상상해 보자. 이런 버킷에는 물을 담을 수도 있고, 다른 것들을 담을 수도 있다. Amazon S3의 버킷도 비슷한데, 이것은 물 대신에 사진, 동영상, 문서와 같은 파일을 인터넷에 저장하는 데 사용된다.

이렇게 S3 버킷에 파일을 저장하면, 언제든지 인터넷을 통해 그 파일을 볼 수 있다. 그리고 이 버킷은 전 세계 어디서든 접근할 수 있다는 것이 특별한 점이다.

그런데, S3에서 버킷의 이름은 전 세계에서 오직 하나만 있어야 한다. 예를 들면, '나의 첫번째 버킷'이라는 이름의 버킷을 만들었다면, 전 세계의 다른 모든 사람들은 동일한 이름으로 버킷을 만들 수 없다.

그리고 이런 버킷 안에는 다양한 폴더와 파일을 넣을 수 있다. 마치 컴퓨터의 폴더 안에 파일을 넣는 것처럼 말이다. 이 때, 각 파일은 그 안에 있는 위치와 이름으로 찾을 수 있게된다.

요약하면, S3의 버킷은 인터넷에 파일을 안전하게 저장할 수 있는 공간이라고 생각하면 되며, 그 안에 넣은 파일은 언제든지 다시 보거나 가져올 수 있다는 것이다.

Versioning

Versioning은 한번 실행하면 cancel이나 disable은 안되고 suspend만 된다. Amazon S3의 버전 관리(Versioning) 기능은 매우 강력한데, 특히 데이터의 실수로 인한 손실이나 오버라이드를 방지하기 위해 사용된다. 버전 관리를 활성화하면 S3는 모든 객체의 모든 버전을 자동으로 저장하고 유지한다.

버전 관리가 활성화된 버킷에서 객체를 삭제하면 실제로 삭제되지 않고, 해당 객체에 대한 삭제 마커가 추가된다. 이렇게 하면 이전 버전의 객체를 언제든지 복구할 수 있다.

하지만, 한 번 버전 관리가 활성화되면 이를 완전히 비활성화할 수 없다. 대신, 버전 관리를 일시 중지(Suspend)할 수 있다. 이렇게 할 경우, 버전 관리가 일시 중지된 후에 저장된 객체는 버전이 생성되지 않지만, 이전에 버전 관리가 활성화된 동안 저장된 객체의 버전은 보존된다.

따라서, 버전 관리를 사용할 때는 이러한 특성을 염두에 두고 조심스럽게 활용해야 한다.

Summary

  • Use the AWS Console to create S3 buckets.
  • After creating a bucket, you can upload files like any other cloud-based storage solution.
  • Objects can be configured with security parameters to control access.

S3 bucket properties

Static web hosting

  • html 등 static한 사이트를 hosting할 수 있다.

Amazon S3의 버킷은 정적 웹 호스팅(Static Web Hosting) 기능을 제공한다.

정적 웹 호스팅이란? 정적 웹 사이트는 서버 측 프로그래밍 없이 클라이언트에게 직접 제공되는 웹 페이지로 구성된다. 주로 HTML, CSS, JavaScript 파일과 같은 고정된 내용만 있는 웹 페이지들로 구성된다.

S3의 정적 웹 호스팅 기능:

  1. 간단한 설정: S3 버킷 설정에서 몇 번의 클릭으로 정적 웹 호스팅을 활성화할 수 있다.
  2. 도메인 연결: 사용자 지정 도메인 이름을 S3 버킷에 연결하여 사이트의 주소를 원하는 대로 설정할 수 있다.
  3. 높은 내구성 및 가용성: Amazon S3는 데이터의 높은 내구성과 가용성을 보장한다. 따라서 웹사이트의 데이터는 안전하게 보호된다.
  4. 비용 효율적: 전통적인 웹 호스팅 서비스에 비해 S3는 사용한만큼만 비용을 지불하므로 매우 비용 효율적이다.
  5. 전세계 액세스: S3의 글로벌 인프라 덕분에 전 세계 어디서든 빠르게 웹사이트에 액세스할 수 있다.

예를 들어, 개인 포트폴리오나 프로젝트 소개 사이트 같은 간단한 웹사이트를 만들고 싶다면, S3의 정적 웹 호스팅 기능을 사용하면 손쉽게 웹사이트를 인터넷에 올릴 수 있다.

Default Encryption

  • AWS Key Management Service (KMS)
  • storage security이다.

기본 암호화(Default Encryption)는 Amazon S3 버킷에 저장된 데이터를 자동으로 암호화하는 기능이다. 이 기능을 사용하면 버킷에 저장되는 모든 객체는 자동으로 암호화된다.

AWS Key Management Service (KMS): KMS는 AWS에서 제공하는 중앙화된 키 관리 서비스다. 이 서비스를 사용하면 암호화 키를 쉽게 생성, 제어 및 관리할 수 있다. KMS는 암호화 키의 라이프사이클을 관리하며, 키를 안전하게 저장하고 사용자의 권한에 따라 암호화 키에 대한 액세스를 제어한다.

S3의 기본 암호화와 KMS: S3의 기본 암호화 설정에서 KMS를 사용하도록 선택할 수 있다. 이렇게 설정하면, S3는 KMS의 고유 키(또는 사용자가 지정한 키)를 사용하여 객체를 암호화하고 복호화한다.

storage security: 데이터를 안전하게 보관하는 것은 매우 중요하다. 암호화는 데이터를 보호하는 주요 방법 중 하나로, 암호화되지 않은 데이터가 공격자에게 노출될 경우 그 데이터는 읽을 수 없도록 변환된다. 따라서, S3의 기본 암호화 기능은 저장된 데이터의 보안을 강화하는 데 중요한 역할을 한다.

결론적으로, S3의 기본 암호화 기능을 사용하면 버킷에 저장되는 모든 데이터를 자동으로 암호화하여 데이터의 보안을 강화할 수 있다. KMS와 함께 사용하면 암호화 키의 관리와 보안도 간편하게 할 수 있다.

Permissions

  • account setting
  • bucket polity: JSON policies
  • policy generator
  • CORS configuration

Permissions은 AWS에서 리소스에 대한 액세스를 제어하는 방법을 말한다. 특히 Amazon S3에서는 다양한 수준의 권한 설정이 가능하다.

  1. Account Setting:

    • AWS 계정의 전반적인 설정이다. IAM(Identity and Access Management)을 사용하여 사용자, 그룹 및 권한을 관리한다. IAM을 통해 특정 사용자에게 S3 버킷 또는 오브젝트에 대한 액세스 권한을 부여하거나 제한할 수 있다.
  2. Bucket Policy:

    • 버킷 정책은 JSON 형식의 문서로, 특정 버킷 또는 그 안의 오브젝트에 대한 권한을 정의한다. 예를 들어, 특정 사용자에게 버킷 내의 모든 객체를 읽게 하거나, 특정 IP 주소에서만 오브젝트를 업로드하게 할 수 있다.
  3. Policy Generator:

    • AWS에서 제공하는 도구로, 버킷 정책을 쉽게 생성할 수 있다. 사용자는 원하는 권한과 조건을 선택하면, 도구가 이에 해당하는 JSON 정책을 자동으로 생성한다.
  4. CORS Configuration:

    • CORS (Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스에 액세스할 수 있게 해주는 메커니즘이다. S3 버킷에서 정적 웹 콘텐츠를 호스팅할 때, 다른 도메인의 웹 페이지가 이 콘텐츠에 액세스할 수 있도록 CORS 설정을 할 수 있다.

이러한 권한 설정들을 통해 S3 버킷 및 오브젝트에 대한 세밀한 액세스 제어가 가능하다. 사용자는 이러한 도구와 설정을 사용하여 데이터의 보안 및 공유를 효과적으로 관리할 수 있다.

Management

  • Lifecycle rule
    • 여기서 storage class transition rule을 설정할 수 있다.
    • 예를 들어, 30일 후에 Standard IA로 이동해라, Glacier로 60일 후에 이동해라 등등

Lifecycle rule은 Amazon S3에서 데이터의 수명 주기를 자동으로 관리하기 위한 규칙이다. 이 규칙을 사용하면 오브젝트가 저장된 지 정해진 시간이 지난 후에 자동으로 다른 스토리지 클래스로 이동하게 할 수 있거나, 특정 기간이 지난 후에 오브젝트를 자동으로 삭제하게 할 수 있다.

Lifecycle rule의 주요 기능:

  1. Storage Class Transition:

    • 스토리지 클래스 전환 규칙을 설정하여 오브젝트를 한 스토리지 클래스에서 다른 스토리지 클래스로 자동으로 이동할 수 있다.
    • 예를 들어, 오브젝트를 처음에는 S3 Standard 클래스에 저장하고, 30일 후에는 저렴한 S3 Standard-IA 클래스로 이동하도록 설정할 수 있다. 또한, 60일 후에는 더 저렴한 Glacier로 이동하도록 설정할 수도 있다. 이러한 전환은 주로 비용을 절감하기 위해 사용된다.
  2. Expiration:

    • 오브젝트의 유효 기간을 설정하여, 그 기간이 지나면 자동으로 삭제되도록 할 수 있다. 예를 들어, 90일 후에 오브젝트를 자동으로 삭제하도록 설정할 수 있다.

Lifecycle rule을 설정하는 과정은 다음과 같다:

  1. S3 콘솔에 로그인하고 원하는 버킷을 선택한다.
  2. 관리(Management) 섹션으로 이동한다.
  3. Lifecycle 규칙 추가(Add Lifecycle Rule)를 클릭한다.
  4. 필요한 설정을 입력하고 규칙을 저장한다.

이렇게 설정한 Lifecycle 규칙은 자동으로 적용되어, 오브젝트의 수명 주기를 효과적으로 관리할 수 있다.

Summary

  • Object properties include storage class, encryption, metadata, and tags.
  • Metadata is used to define the purpose of the object.
  • Tags are used to search, organize, and manage access.

S3에서는 폴더의 개념이 없다. 다만 prefix와 delimiter가 이런 역할을 대신해 주는 것이다.

Amazon S3는 기본적으로 평평한 네임스페이스를 가지고 있어서, 전통적인 파일 시스템에서와 같은 폴더나 디렉토리의 개념이 존재하지 않는다. 대신, S3에서는 prefixdelimiter를 사용하여 폴더와 유사한 구조를 표현하고 관리한다.

  1. Prefix:

    • prefix는 오브젝트 키의 시작 부분이다. 예를 들어, "photos/summer/july/image01.jpg"라는 오브젝트 키가 있다면, "photos/summer/july/"는 prefix로 볼 수 있다. 이렇게 prefix를 사용하면 특정 부분으로 시작하는 오브젝트들만 선택하여 보거나 관리할 수 있다.
  2. Delimiter:

    • delimiter는 오브젝트 키를 분리하는 문자다. 대부분의 경우에는 슬래시(/)를 delimiter로 사용하여 폴더와 유사한 계층 구조를 표현한다. 위의 예에서 슬래시(/)는 delimiter로 작동하여 "photos", "summer", "july"와 같은 다양한 "폴더"를 표현한다.

S3 콘솔에서 버킷을 보면, 폴더처럼 보이는 구조를 볼 수 있는데, 이는 실제로는 prefixdelimiter를 사용하여 표현된 것이다. 이를 통해 사용자는 폴더와 유사한 방식으로 데이터를 조직하고 관리할 수 있다. 하지만 실제로는 모든 오브젝트들이 동일한 레벨에 있으며, 그들의 키만이 구분되는 구조라는 것을 이해하는 것이 중요하다.

Marked for deletion

Marked for deletion은 데이터나 리소스가 삭제될 예정임을 표시하는 상태나 라벨을 의미한다. 특히 데이터 관리 시스템에서 이는 리소스를 즉시 삭제하는 것이 아니라 나중에 배치 작업이나 다른 프로세스에 의해 삭제될 예정임을 나타낼 때 사용된다.

Amazon S3에서 버전 관리가 활성화된 버킷에서 오브젝트를 삭제하려고 하면, 해당 오브젝트는 실제로 삭제되지 않는다. 대신 삭제 마커(Deletion Marker)가 해당 오브젝트의 최신 버전으로 추가된다. 이 삭제 마커는 오브젝트가 "삭제될 예정"이라는 것을 나타내며, 실제로는 데이터가 여전히 S3 버킷에 존재한다. 이러한 방식으로 S3는 실수로 데이터를 삭제하는 것을 방지하고, 필요한 경우 삭제된 오브젝트를 쉽게 복원할 수 있게 한다.

Marked for deletion 또는 유사한 표시를 사용하는 주요 이유는:

  1. 데이터의 실수로 인한 삭제를 방지하기 위해.
  2. 삭제 처리를 최적화하거나 지연시키기 위해.
  3. 삭제 전에 추가적인 확인 또는 승인 절차를 거치기 위해.

따라서, Marked for deletion은 리소스나 데이터가 삭제될 예정이라는 것을 명시적으로 나타내며, 이를 통해 데이터 관리에 더 큰 유연성과 안정성을 제공한다.

Summary

  • You can add AES-256 encryption to any object.
  • When creating S3 bucket folders, prefixes are added to objects so that they appear as folders.
  • An object can have up to 10 tags

Amazon S3에서 오브젝트에는 최대 10개의 태그를 부여할 수 있다. 이 태그는 key-value 쌍의 형태로 되어 있으며, 데이터 분류, 액세스 관리, 비용 추적 등 다양한 용도로 사용될 수 있다.

태그의 주요 사용 사례는 다음과 같다:

  1. 비용 추적: 특정 프로젝트나 팀에 대한 비용을 추적하기 위해 S3 오브젝트에 태그를 부여할 수 있다.
  2. 관리 및 분류: 태그를 사용하여 데이터를 분류하고, 특정 유형의 데이터를 쉽게 식별하거나 관리할 수 있다.
  3. 액세스 제어: IAM 정책에서 태그를 기반으로 S3 오브젝트에 대한 액세스를 제어할 수 있다.

S3 콘솔이나 AWS SDK 및 CLI를 사용하여 오브젝트에 태그를 추가, 수정 또는 삭제할 수 있다. 하지만, 한 오브젝트에는 최대 10개의 태그만 부여할 수 있으므로, 필요한 태그를 우선순위에 따라 선택해야 한다.






댓글 없음:

댓글 쓰기

관련 포스팅