[CLOUD ASSOCIATE EXAM] S3와 AGS

Yohan_05·2023년 2월 10일
0

Cloud

목록 보기
5/6

S3 서비스 아키텍처

s3 파일은 버킷으로 구성되며, aws 계정당 기본으로 만들 수 있는 버킷은 100개. 다른 aws 서비스와 마찬가지로 aws 에 할당량 증가를 요청할 수 있다. s3 버킷과 그 내용은 한 aws 리전에만 존재하고, 버킷 주소는 전체 s3 글로벌 시스템 내에서 유일해야한다.

접두사와 구분 기호

s3 버킷은 하위 폴더 구조가 없는 평면 구조이며, 객체는 이 버킷에 저장된다. 그러나 접두사와 구분 기호를 사용해서 버킷을 조금 더 체계적인 모습으로 나타낼 수 있다.

예를 들어 contracts/acme.pdf, contracts/dynamic.pdf 와 같이 contracts 다음에 구분기호로 /를 넣어 contracts 안에 있는 파일처럼 보이게한다.

폴더 또는 디렉토리 구조로 객체를 업로드하면 알잘딱 / 로 처리해서 반환한다.

대용량 객체 작업

이론적으로 버킷에 무한대 용량의 데이터를 저장할 수 있지만, 단일 객체 크기는 5TB를 넘을 수 없고, 한 번에 업로드할 수 있는 용량 크기는 최대 5GB이다.

멀티파트 업로드는 큰 객체를 여러 작은 부분으로 나눠서 S3 대상 위치에 하나씩 전송한다. 개발 부분을 전송하다가 실패하면 그 부분만 다시 전송하기 때문에 다른 부분에는 영향을 주지 않는다.

암호화

퍼블릭에서 엑세스하는 용도가 아니라면 S3에 저장할 데이터는 항상 암호화해야한다. S3에 저장 중인 데이터를 보호하기 위해서 암호화 키를 사용할 수도 있고 S3에서 다른 위치로 전송하는 데이터를 보호하기 위해서 Amazon 암호화 API 엔드포인트만을 사용할 수도 있다.

저장 중 데이터는 서버,클라언트 측 암호화를 통하여 보호할 수 있다.

로깅

s3 이벤트 추적을 로그 파일에 저장하는 기능은 처음엔 비활성화돼 있다. s3 버킷에서 일어나는 많은 활동을 로그 데이터로 만들어 모두 기록할 필요는 없기 때문.

로깅을 활성화할 때는 워본 버킷과 대상 버킷을 지정해야함. 하나의 대상 버킷에 여러 원본 버킷 로그를 저장했을 때 쉽게 식별할 수 있도록 구분 기호와 접두사를 사용한다.

s3 생성 로그는 구성하면, 잠시 후 다음과 같은 작업 상세 항목이 기본으로 나타난다.

  • 요청자 계정과 ip 주소
  • 원본 버킷 이름
  • 요청 동작(get, put 등)
  • 요청 개시 시간
  • 응답 상태(오류 코드 포함)

s3 내구성과 가용성

내구성

s3와 amazon glacier은 99.999999999% 의 내구성을 보장함.

s3에 저장한 데이터를 인프라 장애로 손실한 가능성은 거의 없다고 봐도된다.

Amazon S3 One Zone-IA : 데이터를 단일 가용영역에만 저장 = 복원력이 전혀 없음
RRS = 다른 클래스보다 더 적은 영역에 복제하기 때문에 99.99% 내구성만을 보장함.

가용성

객체 가용성도 백분율로 측정, 1년 동안 해당 객체를 요청했을 때 즉시 응답할 수 있는 기간을 백분율로 나타냄.

연간 99.99% 기간 동안 데이터가 필요할 때 사용할 수 있도록 보장함.

데이터의 최종 일관성

s3는 데이터를 여러 장소에 복제하므로 기존 데이터가 업데이트 되면 시스템에 전파하는 동안에 약간의 지연이 발생할 수도 있다. 파일을 새 버전으로 업데이트하거나 삭제할 때, 한 사이트에서는 새로운 상태가 반영됐지만 다른 사이트에서는 변경이 바녕오디지 않을 수도 있음.

단일 객체의 버전 여러 개가 충돌하면 애플리케이션과 데이터 사이에 심각한 손상이 발생할 수 있는데, 이를 피하기 위해서는 최종 일관성 표준에 따라 데이터 처리를 설계해야하 하며, 보통 2초 이하의 지연시간을 고려해야한다.

S3 객체 수명주기

s3에서 시작하는 워크로드는 대개 백업 아카이브와 관련이 있다. 제대로 설계됐다면 정기적으로 백업이 수행돼야 하기 때문에 백업 아카이브가 늘어날 수밖에 없다.

버전 관리

대부분의 파일 시스템은 기존 파일과 같은 위치에 같은 이름으로 파일을 저장하면 기존 객체를 덮어쓴다.

s3 객체도 이와 같은 방식으로 작동하지만, 버킷 수준에서 버전 관리를 활성화하면 덮어쓴 이전 객체를 보존할 수 있어서 기존 버전에 계속 액세스 가능하다.

수명 주기 관리

버킷에서 수명 주기 규칙을 구성하면 지정한 기간이 경과했을 때 자동으로 객체가 다른 스토리지 클래스로 옮겨진다. 예를 들면 새로운 객체는 첫 30일 동안 s3 standard 클래스에서 보관되고, 30일이 지나면 더 저렴한 one zone ia로 옮겨진다.

S3 객체 액세스

액세스 제어

액세스 제어 목록(ACL) 규칙, 세분화된 s3 버킷 정책, IAM 정책을 사용해서 버킷이나 객체 수준에서 타 계정이나 외부 사용자에게 액세스를 허용할 수 있다.

세 가지 액세스 제어 방식은 일부 중복돼 있다. 사실 ACL은 AWS에서 IAM을 만들기 전에 사용하던 정책이다. 현재 Amazon은 ACL 대신 S3 버킷 정책이나 IAM 정책을 적용할 것을 권장한다.

미리 서명된 URL

외부 액세스가 제한된 프라이빗 객체로 임시로 액세스할 수 있게 할 때, 미리 서명된 URL을 사용할 수 있다. 미리 서명된 URL은 지정한 기간만 사용할 수 있으며 기간이 지나면 사용할 수 없고, 프로그래밍 방식으로 객체를 액세스할 수 있도록 미리 서명된 URL을 생성하는 명령을 코드에 포함해서 빌드할 수 있다.

다음은 필요한 인증 문자열을 포함하는 URL을 생성하는 aws cli 명령이며, 10분 동안만 액세스를 허용한다. 기본 만료값은 1시간이다.

aws s3 presign s3://MyBucketName/PrivateObject --expires-in 600

정적 웹 사이트 호스팅

s3 버킷은 정적 웹사이트 html 파일 호스팅에도 사용된다.

s3는 정적 사이트를 호스팅하는데 저렴하고 안정된 플랫폼으로 사용할 수 있다. s3버킷을 정적 호스팅으로 구성하면, 버킷 URL 트래픽이 자동으로 지정된 루트 문서로 연결된다. 보통 루트 문서는 index.html 이며, html 페이지 내 링크를 클릭하면 링크된 문서나 미디어 리소스가 전송된다.

dns 도메인 이름을 정적 사이트로 라우팅하려면 route53에서 버킷 엔드포인트를 도메인 이름과 연결한다.

S3 select 와 glacier select

aws는 s3나 glacier에 저장한 데이터에 액세스할 수 있는 또 다른 방법을 제공하는데 그것이 바로 select 이다. 이 기능을 사용하면 sql 과 유사한 쿼리로 저장된 객체에서 관련 데이터만 검색할 수 있으므로 훨씬 효율적이고 저렴하게 작업할 수 있다.

Amazon Glacier

Glacier는 s3 스토리지 클래스의 일부로 보여진다. glacier는 대부분 s3 클래스와 마찬가지로 99.999999999999% 내구성을 보장하고, s3 수명 주기에 통합할 수 있다.

Glacier에는 s3와 크게 다름 점이 있는데, s3 단일 객체 최대 크기는 5TB인 반면 Glacier는 40TB까지 대형 아카이브를 지원하고, s3에서는 암호화를 선택하지만 Glacier 아카이브는 암호화가 기본이라는 점 그리고 s3에서는 인간이 읽을 수 있는 이름으로 키를 만들지만 Glacier 아카이브에는 기계가 만든 ID가 주어진다는 점이다.

기타 스토리지 관련 서비스

Amazon Elatic File System(EFS)

EFS는 자동 확장 가능한 공유 파일 스토리지로서, VPC 내에서 Network File System으로 여러 EC2 인스턴스에 장착하거나 AWS Direct Connect 연결로 온프레미스 서버에서 액세스할 수 있도록 설계됨. EFS는 여러 인스턴스가 짧은 지연 시간으로 안전하고 내구성 있게 파일을 공유하는데 사용할 수 있다.

AWS Stroage Gateway

온프레미스의 로컬 백업과 아카이브 운영 요구 사항을 클라우드 스토리지 서비스를 사용해 해결하려면 구성이 복잡해진다. AWS Storage Gateway를 사용해 소프트웨어 방식의 게이트웨이 어플라이언스로 다양한 가상 연결 인터페이스를 구현해서 이러한 요구를 해결할 수 있다.

테이프 드랑비ㅡ같은 물리적 백업 장치를 연결하는 것처럼 언플라이언스를 로컬 장치에 연결하면 데이터를 s3 나 ebs 와 같은 aws 플랫폼에 사용할 수 있다.

AWS Snowball

대용량 데이터 세트를 일반 인터넷 연결로 클라우드에 마이그레이션하려면 많은 시간과 대역폭이 필요하게 된다. 테라바이트 또는 페타바이트 크기 데이터를 백업 또는 실제 사용을 위해 aws 로 이동할 때, 사용할 수 있는 장치가 바로 snowball 이다.

사용자가 요청하면 aws는 256비트로 암호화한 물리적 snowball 저장 장치를 사용자에게 배송한다. 사용자가 데이터를 snowball 에 복사한 다음 장치를 돌려보내면 amazon은 그 데이터를 s3 버킷에 올린다.

profile
안녕하세요 DevOps 엔지니어로 현업에서 활동중인 요한이라고 합니다.

0개의 댓글