본문 바로가기
  • RATEL.SHO
카테고리 없음

AWS D-2

by ratelsho 2023. 10. 18.

S3 버킷 다양한 스토리지 유형

일반 S3 버킷

- 디폴트 버킷이나 높은 내구성(durability)과 가용성(availability)을 자랑합니다.

- 클라우드, 모바일 게임, 애플리케이션, 빅데이터 분석에서 종종 사용합니다.

 

S3 드문 접근 버킷(infrequent access bucket)(IA bucket)

- 오브젝트에 자주 접근하지 않으나 오브젝트가 많아 신속한 접근이 요구될 때 뛰어난 성능을 발휘합니다.

- 주로 클라우드 재해 복구(disaster recovery), 백업 파일을 보관하는데 사용됩니다.

- 신속한 접근이 가능한 이유는 다중 가용 영역을 사용하기 때문입니다.

 

S3 단일 존 버킷

- 하나의 존에만 의존합니다.

- 일반 S3 버킷과 S3 드문 버킷에 비해 내구성과 가용성이 조금 떨어집니다.

- IA 버킷에 비해 20% 정도 저렴합니다.

- 주로 버킷의 접근이 잦지 않는 오브젝트를 관리할 때 사용합니다.

 

글레시어 버킷(glacier)

- 몇 년에 한 번 오브젝트에 접근을 할까 말까 하는 상황이 발생할 때 사용하면 좋은 스토리지 유형입니다.

- 유지 비용이 굉장히 저렴합니다.

- 하지만 오브젝트에 접근할 때 오랜시간 잠들어있는 오브젝트를 깨워야 하기 때문에 걸리는 시간은 약 4~5시간입니다.

 

지능적 티어링 버킷(intelligent tiering)

- 사용자의 오브젝트 접근 주기를 분석하고 세 가지 티어 중 하나를 선택합니다.

- 첫 번째 티어는 Frequent Tier로 오브젝트 접근이 종종 일어날 때 사용됩니다. 

- 두 번째 티어는 Lower-Cost Tier로 오브젝트 접근이 드문 경우 사용됩니다.

- 여기서 접근이 드물다는 기준은 한 달 이상 오브젝트 접근이 없는 경우입니다.

- 세 번째 티어는 Very Low-Cost Tier로 글레시어처럼 몇 년에 한 번 접근할 때 사용됩니다.

 

S3 요금

- 오브젝트 크기가 늘어날 경우 GB당 발생하는 비용이 다소 낮아집니다.

- 다른 AWS리소스로 오브젝트를 전송할 때도 비용이 발생한다.

 

S3 사용 사례

교차 출처 리소스 공유(CORS)(cross origin resource sharing)

- 다른 도메인에 속한 다른 클라이언트 웹 애플리케이션끼리 데이터를 공유하고 주고받을 수 있게 다리를 놓아주는 역활을 합니다.

- 일반적으로 다른 지역에서 생성된 버킷의 오브젝트에 접근이 허용되지 않습니다. 그러나 CORS를 통하면 가능합니다.

 

버킷 정책&접근 제어 리스트

- 특정 유저 혹은 그룹에게 버킷 접근을 허용해야 할 때가 있습니다. 두 가지 방법이 있습니다.

 

1. 버킷 정책(bucket policy) 변경

- JSON 포맷으로 이루어져 있으며 버킷 안에 있는 모든 오브젝트의 접근 권한 설정을 가능하게 합니다.

2. 접근 제어 리스트(access control list) 변경

- 버킷 정책은 하나의 버킷에 모두 적용되는 반면 접근 제어 리스트는 버킷 안의 오브젝트, 디렉토리별로 권한 설정이 가능합니다. 

 

버킷 암호화 유형

파일 업로드/다운로드

 

SSL(Secure Socket Layer): 두 개의 시스템끼리 데이터를 교환할 때 중간에서 보디가드 역활을 하여 인터넷 연결 중 외부의 침입을 막아주며 안전한 파일 교환이 이루어질 수 있게 해주는 프로토콜, 주로 HTTP/HTTPS 요청이 발생할 때 SSL이 사용됩니다.

 

TLS(Transport Layer Security): SSL에서 파생되었으며 SSL보다 보안이 뛰어납니다. 컴퓨터 네트워크에 사용되며 소켓끼리 안전한 소통을 가능하게 해주는 암호화 프로토콜입니다.

 

가만히 있을 시

3가지 유형으로 구분

 

//SSE(server-side encryption)는 디폴트로 AWS에 의해 관리되며, 버킷에 저장되어 있는 모든 오브젝트는 고유한 키를 지니고 있다.

 

1. SSE-S3: 모든 키를 관장하는 마스터키를 가지고 있습니다. 마스터키는 AES-256이라는 암호화 유형이 사용되며 고급 암호화 표준(Advanced Encryption Standard)(AES) 뒤에 256은 256비트 암호화를 사용한다는 뜻입니다.

 

2. SS3-KMS: 오브젝트를 버킷에 업로드하거나 기존에 존재하는 오브젝트를 복사할 때 SSE-KMS 암호화 방식을 사용할 수 있습니다. KMS는 누가 언제 어떻게 암호화되어  있는 오브젝트에 접근했는지 상세한 정보를 제공한다. KMS(Key Management Service)는 AWS 리소스이며 API 토큰 정보, 애플리케이션 암호 등 민감한 데이터를 사용하고 보관합니다.

 

3. SSE-C: 개발자가 직접 암호를 관리하고 생성한 암호를 직접 사용할 수도 있습니다. SSE-C는 유일하게 AWS 콘솔에서 암호화할 수 없습니다. AWS CLI, AWS SDK, AWS API를 통해서만 암호를 설정할 수 있습니다.

 

버킷 암호화 과정

- API 헤더에 x-amz-server-side-encryption라는 키가 헤더에 들어있다면 S3는 사용자가 업로드할 오브젝트에 암호화 한다는 의미로 간주하고 암호화를 진행합니다.


CloudWatch

- 리소스 사용 및 이벤트 등을 실시간으로 모니터링합니다.

- 로그파일을 그래프로 생성하는 매트리스 기능도 제공합니다.

CloudWatch 모니터링 종류

기본 모니터링(basic monitoring)

- 무료이며 5분 간격으로 최소한의 데이터를 수집하고 사용자에게 이벤트 발생 여부를 알려줍니다. 주로 CPU 사용량, 디스크 사용량, 네트워크 I/O 처리량 관련 상황을 체크할 때 사용되는 모니터링 종류입니다.

 

상세 모니터링(detailed monitoring)

- 1분 간격으로 매우 자세한 데이터를 수집합니다. 대부분의 리소스는 기본 모니터링에서 상세 모니터링으로 변경 가능하나, ELB와 RDS는 상세 모니터링 옵션이 디폴트로 선택되어 있으며 이 둘의 모니터링 기능을 사용할 수 없습니다.

CloudWatch 경보

CloudWatch 경보에는 세 가지 다른 상태가 존재하며 예외는 없다. 

 

1. OK

-  개발자가 지정해놓은 임계값에서 타당한 값으로 들어온다면 OK 상태가 뜹니다. 경보가 울릴 필요 없는 정상적인 상태를 의미한다.

2. ALARM

- 임계값을 벗어나게 되면 상태가 ALARM으로 변경된다. 

3. INSUFFICIENT_DATA

- OK 혹은 ALARM으로 구분 지을 수 있을 만큼 충분한 데이터가 쌓이지 않거나 전달받지 못했을 경우에 발생한다.


서버리스

- 클라우드에서 AWS 리소스를 돌릴 때 개발자가 직접 간섭할 필요가 없고 개발자가 구현한 애플리케이션을 클라우드에서 돌릴 수 있게 도와주는 클라우드 기반 개발 모델입니다. 

- 서버리스는 리소스를 자동으로 관리합니다. 

 

서버리스의 장점

1. 오토스케일링

- 네트워크 트래픽에 따라 단순히 크기를 늘렸다 줄였다 해줍니다. 

- 개발자가 임계점을 정해놓고 그 선을 넘으면 리소스 자원을 더 쓰고 그렇지 않으면 덜 쓰면서 지출을 관리해주는 중추적인 역활을 담당합니다.

 

2. 패칭(patching)

- 운영체제를 돌리거나 RDS에서 새로운 데이터베이스를 구축할 때 필요한 업데이트가 있다면 자동으로 합니다.

 

3. 빠른 배포

- 개발자는 서버의 관리 및 유지보수가 아닌 코드 구현만 신경 쓰면 되기 때문에 자연스럽게 프로덕션 배포 속도가 빨라집니다.

 

4. 비용 절감

- 서버리스를 구축하게 되면 서버는 항상 돌아가는 것이 아니라 특정 이벤트에 근거하여 실행되기 때문에 지출을 줄일 수 있습니다.

 

Lambda

- 이벤트를 통해 실행됩니다. 

Lambda 비용 책정

- Lambda 함수를 생성하고 배포했으나 실행되지 않는다면 어떠한 비용도 들지 않습니다.

- AWS에서는 매달 1000000개의 Lambda함수 호출까지 무료이며, 그 이상부터 비용을 지불합니다.

 

Lambda의 특징

- 로컬에서 코딩하고 구동했을 때 런타임이 얼마나 오래 걸리든 주어진 일을 마칠 때까지 컴퓨터는 계속 돌아갑니다. 하지만 Lambda는 오래 기다려주지 않습니다. 최대 300초(5분)의 런타임만 허용합니다. Lambda 함수가 구동할 때 가상 컨테이너를 통해 가상 공간이 만들어지며 여기서 Lambda 함수를 실행하면서 일시적으로 파일을 보관할 수 있습니다.

 

- tmp 폴더에 쓰인 정보는 Lambda 함수 실행이 종료되면 모두 삭제되고 똑같은 Lambda 함수를 돌려도 새로운 컨테이너가 생성되어 돌아가기 때문에 기존에 만들어진 정보는 존재하지 않습니다.

 

- Lambda 함수는 최대 50MB 배포 패키지를 허용합니다.