더보기

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 11: 클래식 솔루션 아키텍처 토론

2023.01.17 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 12: Amazon S3 소개

2023.01.17 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 13: AWS CLI, SDK, IAM 역할 및 정책

2023.01.17 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 14: 고급 Amazon S3


145. S3 암호화 - 개요

Amazon S3 - Object Encryption

S3 버킷에서 암호화 하는 4가지 방법이 있다.

 

SSE - Server Side Encryption

서버 측 암호화로

SSE-S3 : s3 관리형 키를 사용

SSE-KMS: KMS 키를 사용

SSE-C: 고객이 제공하는 키 사용

 

Client-Side Encryption

클라이언트 측에서 모든 것을 암호화한 다음에 S3에 업로드 하는 것이다. 

 

SSE-S3 

aws 에서 처리, 관리 및 소유하는 키로 암호화를 진행

AES-256 보안 유형으로 암호화가 이루어짐.

헤더 "x-amz-server-side-encryption":"AES256" 

객체를 전송하면 객체와 암호화 키가 혼합되어 암호화를 진행한 후 버킷에 저장된다. 

 

SSE-KMS

KMS로 자신의 키를 직접 관리하는 방식이다.

사용자가 키를 제어할 수 있다.

KMS 내에서 직접 키를 생성하고 CloudTrail 을 사용해서 사용량을 감시할 수 있다. 

KMS 에서 키를 사용하면 AWS 에서 발생하는 모든 일을 기록하는 역할을 담당하는 서비스가 CloudTrail이다. 

헤더는 "x-amz-server-side-encryption":"aws:kms" 로 지정

버킷에 객체가 저장된다.

해당 파일을 읽을려면 객체 자체에 대한 액세스 뿐만 아니라 객체를 암호화하는데 사용된 KMS 키에 대한 액세스도 필요하다. 

보안이 한 단계 추가되었다. 

 

SSE-KMS Limitation

SSE-KMS 를 사용하면 KMS 제약에 걸린다. 

업로드할때 GenerateDataKey KMS API 를 호출한다.

다운로드할때 복호화 KMS API를 호출한다 .

KMS 서비스에 API 호출을 수행해야 하는데 API 호출은 초당 KMS 할당량에 포함된다. 

 

리전에 따라 초당 5,500~30,000 개의 요청을 처리할 수 있지만 서비스 할당량 콘솔로 한도를 늘릴 수 있다. 

Service Quotas Console 

 

처리량이 매우 높은 s3 버킷이 있고 모든 파일이 KMS 키로 암호화 되어있다면 스로틀링 오류 등의 사례가 발생할 수 있다. (api 를 너무 많이 호출) 

 

SSE-C

aws 외부에서 키가 관리 된다. 

aws 로 키를 보내기 때문에 sse이다. 

제공된 키는 저장되지 않고 사용 후 폐기 된다. 

오직 HTTPS 통신만 가능 

HTTP 헤더에 키를 포함하여 전달해야한다. 

 

Client-Side Encryption

amazon s3 client-side encryption library 로 쉽게 구현할 수 있다. 

 

데이터를 s3로 보내기전 클라이언트가 직접 암호화 해야한다. 

데이터를 가져온다면 외부에서 복호화 해야한다. 

 

전송 중 암호화 Encryption in transit (SSL/ TLS)

s3 버킷에는 두 개의 엔드 포인트가 있다.

암호화되지 않은 http 엔드포인트와 전송 중 암호화인 https 엔드포인트 

 

sse-c 매커니즘을 사용할때 https 프로토콜을 사용해야한다. 


146. S3 암호화 실습

객체 업로드시 sse 옵션을 설정할 수 있다. 

 


147. S3 기본 암호화

Amazon S3 - Default Encryption vs Bucket Policies 

기본 암호화 옵션과 버킷 정책

 

버킷 정책은 암호화를 강제 할 수 있다. 지정된 암호화 헤더가 없는 S3 객체를 버킷에 넣는 API 호출을 거부하는 등 

one way to "force encryption" is to use a bucket policy and refuse any API call to PUT an S3 object without encyption headers

 

또 다른 방법으로 S3 에서 '기본 암호화 옵션' 을 활성화 시킬 수 있다. 

객체가 암호화되지 않은 채로 업로드 되더라도 업로드된 후에 s3에 의해 암호화  된다. 

 

버킷 정책은 항상 기본 암호화 전에 평가된다. 

bucket policies are evaluated before "default encryption"

 


148. S3 CORS - 개요

Cross-Origin Resource Sharing (CORS) 

 

Origin = Scheme(protocol) + host(domain) + port 

오리진은 프로토콜, 호스트, 포트로 구성 

https://example.com 은 

https 포트는 443,

프로토콜은 http 자체

도메인은 example.com 

 

CORS는 웹 브라우저 기반 보안 매커니즘으로 메인 오리진을 방문하는 동안 다른 오리진에 대한 요청을 허용하거나 거부한다. 

 

오리진이 같다는것 

프로토콜, 호스트, 포트 가 동일함을 뜻함.

 

웹브라우저가 한 웹사이트를 방문하는 동안 요청 체계의 일부로 다른 웹사이트에 요청을 보내야 할 때 다른 오리진이 CORS 헤더를 사용해서 요청을 허용하지 않는 한 해당 요청은 이행되지 않는다. 

The requests won't be fulfilled unless the other origin allows for the requests, using CORS Header ( example: Access-Control-Allow-Origin) 

 

웹브라우저에서 오리진 방문 

www.example.com www.other.com  으로 부터 사진을 가져와야한다면?

오리진에 방문하고 다른 오리진으로 요청을 보낸다

웹브라우저는 다른 오리진으로 preflight 요청을 보낸다. 

preflight 응답을 통해서 권한을 확인하고 

다른 오리진으로부터 파일을 받는다. 

 

S3 - CORS

만약 클라이언트가 교차 오리진 요청을 s3 버킷에 할려면 정확한 cors 헤더를 활성화해야한다. 

특정 오리진을 허용하거나 * 별표를 붙여 모든 오리진을 허용한다. 


149. CORS 실습 


150. S3 MFA Delete - 개요 

S3 에서 무슨 작업을 실행할때 해당 코드를 입력해야한다. 

 

MFA 가 필요한 작업 

영구 삭제에 대한 보호 설정 

버킷에서 버저닝을 중단할 때 

 

비권장

버저닝 활서오하나 삭제된 버전 나열하는 작업은 굳이 MFA 를 쓸필요가 없다. 

 

mfa delete를 사용할려면 버킷 버저닝을 활성화 

루트 계정만이 MFA Delete 활성화, 비활성화 할 수 있다. 

only the bucket owner can enable/disable MFA Delete 

 

 


151. S3 MFA Delete 실습

 


152. S3 액세스 로그 개요 

S3 Access Logs 

감사 목적으로 S3 버킷에 대한 모든 액세스를 기록할 수 있다.

S3 로 보낸 모든 요청은 승인 또는 거부 여부와 상관없이 다른 S3 버킷에 파일로 기록된다. 

해당 데이터는 Amazon Athenea 같은 데이터 분석 도구로 분석할 수 있다. 

대상 로깅 버킷은 같은  aws 리전에 있어야한다. 

클라이언트 -> 버킷 -> 로깅 버킷 

S3 Access Logs 주의 사항

절대로 로깅 버킷을 모니터링하는 버킷과 동일하게 설정하지 마세요

Do not set your loggin bucket to be the monitored bucket

무한 반복되어 버킷의 크기가 기하 급수적으로 증가하게 된다. 

객체를 넣었는데 앱 버킷과 로깅 버킷이 동일하면 로깅 루프가 생겨 로그를 반복적으로 기록하게 된다. 

요금 폭탄이다. 하지마! 


153. S3 액세스 로그 - 실습 

 


154. S3 사전 서명된 URL - 개요

Amazon S3 - Pre-Signed URLs

S3 콘솔, CLI , SDK 를 사용하여 생성할 수 있는 URL 이다. 

URL 만기기간 

S3 콘솔 - 1min~ 720min 12hr

AWS CLI - 168 hr 

 

미리 서명된 URL 을 생성할 때 URL 을 받는 사용자는 URL을 생성한 사용자의 GET, 또는 PUT 에 대한 권한을 상속한다. 

 

버킷이 있고 버킷 소유자가 있다. 

버킷 소유자가 파일을 공유 하고 싶으면 미리 성명된 URL 을 생성한다. 

S3 버킷이 URL 을 제공한다. 

 

제3의 사용자는 해당 URL을 통해 S3 버킷에 접속해 파일에 액세스한다. 

 

EX

제한 시간에 프리미엄 동영상을 제공하는 링크 

일시적으로 사용자가 S3 버킷의 특정한 위치에 파일을 업로드하도록 허용할 수 있다.


155. S3 사전 서명된 URL - 실습 

share with presigned URL 

만기 시간을 지정할 수 있다. 


156.  S3 잠금 정책 및 Glacier 볼트 잠금 

S3 Glacier Vault Lock 

WORM (write once Read Many) 모델을 채용한다.

객체를 가져와서 S3 볼트에 넣은 다음 수정하거나 삭제할 수 없도록 잠그는 것이다. 

1. 볼트 잠금 정책 생성 Create a Vault Lock Policy 

2. 향후 편집을 위해 정책을 잠금 Lock the policy for future edits

( 일단 볼트 잠금 정책을 설정하고 잠근 후에는 누구도 변경하거나 삭제할 수 없게 된다. ) 

 

 규정 준수와 데이터 보존에 아주 유용하다. 

Helpful for compliance and data retention 

 

객체가 glacier 볼트에 삽입되면 볼트에 볼트 잠금 정책이 적용되어 있으므로 객체를 절대로 삭제할 수 없다. 

 

S3 Object Lock ( versioning must be enabled) 

 

s3 객체 잠금을 활성화하려면 먼저 버저닝을 활성화 해야한다. 

WORM 모델 채택

객체 잠금은 전체 S3 버킷 수준의 잠금 정책이 아니라 

버킷 내의 모든 객체에 각각 적용할 수 있는 잠금이다 .

 

S3 객체 잠금을 사용하면 특정 객체 버전이 특정 시간 동안 삭제되는 걸 차단할 수 있다. 

 

두 가지 보존 모드

규정 준수 모드 Retention mode - Compliance 

사용자를 포함한 그 누구도 객체 버전을 덮어쓰거나 삭제할 수 없다. 

누구도 객체를 변경할 수 없다. 

보존 모드 자체도 변경할 수 없다. 보존 기간도 단축 불가

거버넌스 보존 모드 Retention mode -  Governance

대부분의 사용자는 객체 버전을 덮어쓰거나 삭제하거나 로그 설정을 변경할 수 없다.

하지만 관리자 같은 일부 사용자는 IAM 을 통해 부여받은 특별 권한으로 보존 기간을 변경하거나 객체를 바로 삭제할 수 있다.

 

보존 기간 설정 Retention Period

고정된 기간 동안 객체를 보호할 수 있고 원하는 만큼 기간을 연장할 수 있다. 

 

법적 보존 Legal Hold

S3 버킷 내 모든 객체를 무기한으로 보호한다. 

재판에 사용될 정도로 중요함.

s3:PutObjectLegalHold IAM 권한을 가진 사용자는 어떤 객체에든 법적 보존을 설정하거나 제거할 수 있다.


157. S3 Access Points 와 Object Lambda

S3 - Access Points

IAM 그룹이 3개, S3 버킷이 각각 3개 있다고 가정하자 

버킷 정책을 만들어서 어떤 그룹이 접속할 수 있는지 정할 수 있는데 

그룹, 버킷이 많아 질수록 복잡해지고 관리하기 힘들어진다. 

대신 버킷 마다 액세스 포인트를 만들어 정해진 그룹은 해당 액세스 포인트 접속을 허용하게 만든다.

 

S3 버킷 앞에 하나의 계층이 추가되었다고 볼 수 있다. 

 

각 액세스 포인트마다 고유의 DNS 와 정책이 있다. 

액세스 포인트마다 하나의 정책만 가지므로 복잡하고 고유한 버킷 정책보다 훨씬 다루기 쉽다. 

 

S3 Object Lambda

람다의 사용 목적은 S3 버킷의 객체를 호출한 애플리케이션이 회수하기 전에 수정하기 위함이다. 

Use AWS Lambda Functions to change the object before it is retrieved by the caller application 

 

예를 들어 각 객체를 다른 버전으로 만들기 위해 버킷을 복사하는 대신 S3 객체 람다를 사용하는 것이다 .

 

이를 위해서 S3 액세스 포인트가 필요하다.

S3 버킷으로 부터 데이터를 가져와 람다를 실행하고 액세스 포인트를 생성한다. 

 

usage 

분석이나 비프로덕션 환경을 위해 개인 식별 정보와 같으 PII 데이터를 삭제하는 겨웅 

xml 에서 JSON 으로 데이터를 변환 하거나

원하는 변환을 실행하는 경우

 

이미지 크기를 바꾸거나 워터마크를 남긴다 .

 

 

더보기

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 11: 클래식 솔루션 아키텍처 토론

2023.01.17 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 12: Amazon S3 소개

2023.01.17 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 13: AWS CLI, SDK, IAM 역할 및 정책


137. S3 수명 주기 규칙

Amazon S3 - Moving between Storage Classes 

  • 스토리지 클래스 간에 객체를 이동 시킬 수 있다. 
  • 자주 사용하지 않는 객체는 standard에서 standard-IA 로 옮기거나
  • 빠른 접근이 필요 없는 경우 Glacier 또는 Glacier Deep Archive 로 옮긴다.
  • 객체는 수동으로 옮기거나 수명주기를 이용해 자동으로 옮길 수 있다. (Life Cycle)

Amazon S3 - Lifecycle Rules

전환 작업 Transition Actions 

다른 스토리지 클래스로 객체를 전환하도록 구성한다. 

생성 60일 이후 standard ia로 옮기거나

6개월 후 Glacier 로 옮기는 등 

 

만료 작업 Expiration actions

일정 시간이 지난 후 객체가 삭제 또는 만료되게 한다.(만료시 하는 작업)

365일 후 액세스 로그 파일을 삭제하도록 하거나 

버저닝을 활성화 했다면 이전 버전을 삭제하거나

완료되지 않은 멀티파트 업로드는 삭제하도록 구성할 수 있다. 

 

규칙에는 특정 접두사를 사용하여 전체 버킷이나 버킷의 일부 경로에만 적용할 수 있고

s3://mybucket/mp3/*

 

특정 객체 태그에만 지정할 수도 있다. 

Department:Finance

 

Amazon S3 - Lifecycle Rules (Scenario 1)

EC2에 애플리케이션이 있고 s3에 업로드되는 프로필 사진의 이미지 섬네일을 생성하려고 한다. 

섬네일은 원본 사진에서 재생성하기 쉬우므로 60일 동안만 보관한다.

소스 이미지는 60일 동안은 바로 검색할 수 있어야 하고 이후에는 사용자가 6시간까지 기다릴 수 있다.

 

=> 

S3 소스 이미지를 standard 로 두고 60일 이후에는 glacier로 보낸다. 

S3 썸네일 이미지는 one-zone IA에 두고 60일 이후에 만료 또는 삭제 시킨다. (썸네일 사진은 잃어버려도 재생성이 쉬우니까)

 

Amazon S3 - Lifecycle Rules (Scenario 2)

S3 객체 삭제 후 30일 이내에는 즉시 복구가 가능해야하고 그로부터 365일 이내에는 해당 객체를 48시간 내에 복구할 수 있어야한다. 

=>

S3 버저닝을 활성화하여 객체 버전을 유지 및 보유하고 있어야 삭제 마커 뒤에 숨어 있는 삭제된 객체를 복구할 수 있따. 

객체의 이전 버전을 standard ia 로 이동 시키는 전환 규칙도 생성해야한다. 

그런 다음 이전 버전은 glacier deep archive 로 보내는 규칙도 생성한다. 

 

Amazon S3 Analytics - Storage Class Analysis 

한 클래스에서 다른 클래스로 객체를 전환하는 데에 있어 최적의 기간은 어떻게 정할 수 있을까?

Amazon S3 Analytics 를 이용하면 된다. 

Standard Standard IA 용 권장 사항을 제공하고 One-Zone IA 나 glacier은 해당되지 않는다 .

 

S3 버킷에서 S3 Analytics를 실행하면 버킷에 관한 권장 사항과 통계를 CSV 파일로 제공한다.

이 보고서는 매일 업데이트 되고 해당 데이터 분석 결과까지 24시간에서 48시간이 소요된다. 

csv 보고서로 수명 주기 규칙을 알아보고 개선할 수 있다. 

 


138. S3 수명 주기 규칙 - 실습

버킷 -> management로 이동 -> Lifecycle rule actions 

'버킷의 모든 객체에 적용'을 선택하고 동의합니다

다섯 가지의 '규칙 작업'이 있는데요

'스토리지 클래스 간 최신 버전의 객체 이동'

'스토리지 클래스 간 이전 버전 객체 이동'

'객체의 최신 버전 만료' '최신 버전이 아닌 객체 영구 삭제'

'만료된 객체 삭제 마커 또는 완료되지 않은 멀티파트 업로드 삭제'가 있습니다

 

스토리지 수명 주기 관리 - Amazon Simple Storage Service


139.  S3 요청자 지불 

S3 - Requester Pays

 

일반적으로  버킷 소유자가 버킷과 관련된 모든 s3 스토리지 및 데이터 전송 비용을 지불한다.

 

버킷 셋이 있고 그안에 객체를 보관한다. 

요청자, 사용자가 버킷으로부터 파일을 다운로드한다.

네트워킹 비용 역시 버킷 사용자가 부담한다. 

만약 파일 다운로드가 많아지면 버킷 소유자는 어마무시한 비용을 지불할 것이다.

대신 요청자가 객체 데이터 다운로드 비용을 지불하게 하자

 

소유자가 여전히 버킷을 객체 스토리지 비용을 부담하겠지만 요청자가 객체를 다운로드하면 요청자가 다운로드 관련된 비용을 지불하게 된다.

 

요청자는 익명이여서는 안된다.aws 인증을 받아야함.

the requester must be authenticated in AWS 


140. S3 이벤트 알림

S3 Evenet Notifications

이벤트

객체가 생성, 삭제, 복원 ,복제 인 경우

해당 이벤트를 필터링 할 수도 있다. (ex .jpg로 끝나는 객체를 필터링)

S3에선 특정 이벤트에 대해 자동으로 반응하게 할 수 있다.

s3에 업로드되는 사진의 섬네일을 만들려고 하면 이에 대한 이벤트 알림을 만들어서 몇  가지 수신지로 보낼 수 있다.

sns,sqs,람다로 보낼 수 있다. 

 

원하는 만큼 S3 이벤트를 생성하고 원하는 대상으로 보낼 수 있다.

 

이벤트가 대상에 전달되는 시간은 몇 초밖에 안 걸리지만 가끔 1분 이상 걸릴 수도 있다. \

 

S3 Event Notifications with Amazon EventBridge

이벤트 알림의 새로운 기능으로 Amazon EventBridge와 통합 되었다. 

이벤트 종류와 상관없이 모든 이벤트는 amazon eventBridge 로 모인다. 

18개가 넘는 aws 서비스에 이벤트를 보낼 수 있다. 

 

Eventbridge는 고급 필터링을 지원한다. ( 메타 데이터, 객체 크기, 이름 등으로 필터링 가능)

multiple Destinations - 동시에 여러 수신지에 보낼 수도 있다.

kinesis Streams 혹은 firehose에도 보낼 수 있다.

eventBridge 기능 - 아카이빙, 재생, 안정적인 전송 기능을 지원한다. 


141. S3 이벤트 알림 - 실습

버킷 생성

프로퍼티 

이벤트 알림 생성 + eventBridge 통합 활성화 하기 

 

이벤트 생성 ,

이벤트 종류 선택 

대상 선택하기 

sqs 선택 ( 먼저 sqs 만들어야함. )

Sqs 대기열이 S3 버킷의 메시지를 수락하지 않은 상태 

액세스 정책을 변경해야한다. 


142. S3 퍼포먼스 

S3 - Baseline Performance 

S3 의 기준 성능 

기본적으로 S3 는 요청이 아주 많을때 자동으로 확장된다. 

지연 시간도 100~200 밀리초 사이로 아주 짧다. 

S3 버킷 내에서 접두사당 초다 3,500개의 PUT/COPY/POST/DELETE 초당 5,500 개의 GET/HEAD 요청을 지원한다. 

 

버킷 내에 접두사 수에는 제한이 없다. 

 

file이라는 이름의 객체가 4개가 있다고 가정하자 

object path prefix
bucket/folder1/sub1/file /folder1/sub1/
bucket/folder1/sub2/file /folder1/sub2/
bucket/1/file /1/
bucket/2/file /2/

네 개의 접두사에 읽기 요청을 균등하게 분산하면 초당 22,000개의 GET/HEAD 요청을 처리할 수 있다. 

 

S3 성능과 최적화 방법을 알아보자

Multi-Part upload

100mb 넘어가면 권장 

5gb 넘어가면 무조건

업로드를 병렬화 한다. (parallelize)

전송 속도를 높여 대역폭을 최대화할 수 있다. 

S3에 큰 파일을 업로드 할 때 여러 파트로 나눠서 업로드하고 S3에서 모든 파트가 합쳐진다. 

 

S3 Transfer Acceleration 

AWS 엣지 로케이션에 파일을 전송 하고 데이터를 대상 리전에 있는 S3 버킷으로 전달한다. 

 

미국에 있는 파일을 호주에 있는 S3 버킷에 업로드 하고 싶을 때

usa의 엣지 로케이션에 파일을 업로드하고

엣지 로케이션에서 S3 버킷으로 전송한다. 

 

퍼블릭 인터넷의 사용량을 최소화 하고 프라이빗 AWS 네트워크의 사용량을 최대화 한다. 

 

전송 가속화는 멀티파트 업로드와 같이 사용될 수 있다. 

 

S3 Performance - S3 Byte-Range Fetches 

파일을 수신하고 파일을 읽는 가장 효율적인 방법은 

S3 바이트 범위 가져오기 

 

파일에서 특정 바이트 범위를 가져와서 GET 요청을 병렬화 한다. 

특정 바이트 범위를 가져오는 데 실패한 경우에도 더 작은 바이트 범위에서 재시도하므로

실패의 경우에도 복원력이 높다. 

다운로드 속도를 높일 때 사용된다. 

S3에 이렇게 큰 파일이 있다고 가정한다. 

첫 번째 파트를 요청한다. 파일 앞 부분의 몇 바이트 

두 번째 파트부터 N 번째 파트까지 요청하여 모든 파트 부분을 특정 바이트 범위로 가져오기로 요청한다. 

모든 요청은 병렬화 된다. 

 

파일의 일부만 검색하기

S3에 있는 파일의 첫 50바이트가 헤더라는 것을 알고 파일에 대한 정보를 안다면 

첫 50바이트를 사용해서 원하는 정보만 빠르게 수신할 수 있다.


143. S3 셀렉트 & Glacier Select

S3 Select & Glacier Select

S3에서 파일을 검색할 때 검색한 다음에 필터링하면 너무 많은 데이터를 검색하게 된다. 

서버 측 필터링을 수행하면 어떨까?

retrieve less data using SQL by performing server-side filtering 

SQL 문에서 간단히 행과 열을 사용해 필터링할 수 있다. 

네트워크 전송 비용과 cpu 비용도 줄일 수 있다. 

S3 Select 를 사용하면 s3 가 대신 파일을 필터링 해 주고 필요한 데이터만 검색할 수 있다. 

속도는 400% 빨라지고 비용은 80% 줄어든다. 

S3 select, Glacier Select 

 


144. S3 Batch Operations 

단일 요청으로 기존 S3 객체에서 대량 작업을 수행하는 서비스

사용 사례가 많다. 

  • S3 객체의 메타이터와 프로퍼티 수정
  • 배치 작업으로 s3 버킷 간에 객체를 복사할 수 있다.
  • S3 버킷 내 암호화되지 않은 모든 객체를 암화화할 수 있다. ( 시험)
  • ACL , 태그 수정
  • S3 Glacier 에서 한 번에 많은 객체 복원 가능
  • 람다 함수 호출해 S3 batch operations 의 모든 객체에서 사용자 지정 작업을 수행 가능
  • 객체 목록에서 원하는 작업은 무엇이든지 수행 가능 

작업은 객체의 목록, 수행할 작업 옵션 매개변수로 구성

 

직접 스크립팅 하지 않고 S3 Batch operations를 사용하는 이유 

재시도를 관리할 수 있고 진행 상황을 추적하고 작업 완료 알림을 보내고 보고서 생성 등을 할 수 있음.

 

S3 Inventory -> S3 Select -> S3 Batch Operations 

객체 목록 가져오기 | 객체를 필터링 | 수행할 작업, 매개 변수와 함께 객체 목록을 전달 , 작업을 수행

 

주요 사용 사례로 

S3 Inventory를 사용해 암호화되지 않은 모든 객체를 찾은 다음 

S3 Batch Operations를 사용해 한 번에 모두 암호화화는 것이다 .

 


Quiz 11 : Amazon S3 고급 & Athena 퀴즈 

1. 버전 관리를 활성화한 상태에서, S3 버킷 상의 파일을 삭제에 각별한 주의를 기울이려 합니다. 실수로 영구 삭제를 하는 일이 없도록 하려면 어떻게 해야 할까요?

MFA 삭제는 사용자들이 S3 객체를 삭제하기 전에 MFA 코드를 사용하도록 강제합니다. 이는 실수로 영구 삭제를 하는 일이 없도록 보안을 한 층 더 더해 줍니다.

 

2. S3 버킷에 있는 모든 파일이 기본으로 암호화 되었으면 합니다. 이를 위한 최적의 방법은 무엇인가요?

 

3. 일부 직원들이 액세스 권한이 없는 S3 버킷 내에 있는 파일에 액세스를 시도한 것으로 의심되는 상황입니다. 직원들 모르게 이를 확인하기 위해서는 어떤 방법을 사용해야 할까요?

S3 액세스 로그는 S3 버킷에 대해 이루어진 모든 요청을 로깅하며, Amazon Athena는 로그 파일 및 서버리스 분석 실행에 사용됩니다

 

 

4. S3 버킷의 콘텐츠를 다른 AWS 리전에서도 아무 제한 없이 사용할 수 있었으면 합니다. 이는 팀이 최소 비용 및 최소 지연 시간으로 데이터 분석을 수행할 수 있게 해줄 것입니다. 이 경우, 다음 중 어떤 S3 기능을 사용해야 할까요?

Amazon CloudFront는 전 세계의 여러 엣지 로케이션으로 데이터를 캐시하지만, 다른 AWS 리전으로 S3 버킷의 컨텐츠를 복사해주지는 않습니다.

S3 복제를 사용하면 S3 버킷에서 동일한/다른 AWS 리전의 다른 버킷으로 데이터를 복제할 수 있습니다.

5. 3개의 S3 버킷이 있습니다. 소스 버킷 A, 그리고 다른 AWS 리전에 있는 두 개의 목적지 버킷인 B와 C가 그것입니다. 버킷 A에서 버킷 B와 C 양측 모두로 객체를 복제하려면 어떤 방법을 사용해야 할까요?

6. 다음 중 Glacier 딥 아카이브 회수 모드에 해당하지 "않는" 것을 고르세요.

7. 어떤 방법을 사용해야 S3 버킷으로 객체가 업로드되었음을 알 수 있을까요?

8. 점점 늘어나고 있는 연결된 사용자들의 목록에 임시 URL을 제공하여, 이들이 특정 로케이션에서 S3 버킷으로 파일 업로드를 수행할 수 있도록 허가하려 합니다. 무엇을 사용해야 할까요?

9. S3 버전 관리가 활성화된 S3 버킷이 있습니다. 이 S3 버킷은 여러 객체를 지니고 있으며, 비용 절감을 위해 오래된 버전을 삭제하려 합니다. 오래된 객체 버전의 삭제를 자동화하기 위해서 사용할 수 있는 최선의 방법은 무엇인가요?

왜 만료조치가 아니지...?

10. 서로 다른 티어 간의 S3 객체 전환을 자동화하기 위해서는 어떻게 해야 할까요?

11. 다음 중 Glacier Flexible 검색 옵션이 아닌 것은 무엇인가요?

12. 멀티파트 업로드를 사용해 S3 버킷으로 크기가 큰 파일을 업로드하던 도중, 네트워크 문제로 인해 완료되지 않은 부분의 상당량이 S3 버킷에 저장되었습니다. 완료되지 않은 부분은 불필요하며, 여러분의 비용을 소모합니다. 완료되지 않은 부분을 삭제하기 위해 사용할 수 있는 최적의 접근법은 무엇인가요?

13. 다음의 서버리스 데이터 분석 서비스들 중, S3에 있는 데이터를 쿼리하는 데에 사용할 수 있는 것은 무엇인가요?

14. S3 수명 주기 규칙에 대한 추천 사항을 찾고 있습니다. 서로 다른 스토리지 계층 간의 객체 이동에 필요한 최적의 일수는 어떻게 분석할 수 있을까요?

15. Amazon RDS PostgreSQL을 사용하여 S3에 파일의 인덱스를 구축하려 합니다. 인덱스 구축을 위해서는 파일 콘텐츠 자체의 메타데이터를 포함하고 있는 S3에 있는 각 객체의 첫 250바이트를 읽는 작업이 필수적입니다. S3 버킷에는 총 50TB에 달하는 100,000개 이상의 파일이 포함되어 있습니다. 이 경우 인덱스를 구축하기 위한 효율적인 방법은 무엇일까요?

16. 여러분의 기업은 규정 준수를 위해 데이터베이스의 백업을 4년 동안 보관해야 한다는 정책을 가지고 있습니다. 이를 제거하는 것은 불가능해야 합니다. 어떤 방법을 추천할 수 있을까요?

17. S3 버킷으로 업로드하려는 대규모의 데이터셋이 온프레미스로 저장되어 있습니다. 이 데이터셋은 10GB 파일로 분할되어 있습니다. 대역폭은 좋으나, 인터넷 연결은 불안정합니다. 이 경우, 데이터셋을 S3에 업로드하는 프로세스를 빠르게, 그리고 인터넷 연결 문제 없이 처리하려면 어떤 방법을 사용해야 할까요?

18. S3에 저장된 데이터셋의 서브셋을 CSV 형식으로 회수하려 합니다. 컴퓨팅 및 네트워크 비용 최소화를 위해 한 달 분의 데이터와 10개 열 중 3개의 열만 회수하려고 합니다. 무엇을 사용해야 할까요?

 

더보기

133. IAM 역할 및 정책 실습

IAM 정책의 JSON 을 확인한다. 

정책 생성기에서 JSON 정책을 만들 수 있다. 

visual editor 

 

역할에 정책이 연결된다. 

 

 

Section 4 에서 이미 다뤘던 내용이다. 

 

 


134. AWS 정책 시뮬레이터 

AWS Policy Simulator 

https://policysim.aws.amazon.com/

 

https://policysim.aws.amazon.com/home/index.jsp

 

policysim.aws.amazon.com

시뮬레이션을 할 수 있다. 

 


135. AWS EC2 인스턴스 메타데이터

AWS EC2 Instance Metadata

매우 강력한 기능이다

EC2 가 역할 없이 스스로 배운다? 

It allows AWS EC2 instance to "learn about themselves" without using an IAM Role for that purpose.

 

http://169.254.169.254/latest/meta-data

 

aws 내의 내부 IP로 컴퓨터에서는 실행되지 않고 EC2 인스턴스에서만 실행된다. 

 

메타 데이터에서 IAM 역할명은 검색할 수 있지만 IAM 정책은 검색할 수 없다.

IAM 정책을 테스트하는 유일한 방법은 정책 시뮬레이터나 드라이 런 옵션을 사용하는 것이다. 

 

메타데이터 = Info about the EC2 instance

사용자 데이터 = launch script of the EC2 instance

 

 

EC2 인스턴스에서 

curl http://169.254.169.254/latest/

dynamic ,meta-dataa, user-data 가 뜬다 

 

 

curl http://169.254.169.254/latest/meta-data/​

검색할 수 있는 목록이 뜬다 

/ 표시가 있는 건 하위 검색 목록이 더 있다는 것을 의미한다. 

 

중요한 건 이 검색하는 과정이 IAM 역할 권한이 없이도 가능하다는 점이다 .

 ... 인줄 알았으나 

security-credentials/역할이름 

에서 확인해보면 AccessKeyID 와

SecretAccessKey

Token을 얻는다. 

보안 인증의 기간이 짧다는 것을 알 수 있다. 

 

여러 메타 데이터를 알 수 있다. 


136. AWS SDK 개요

Java, .NET와 Node.js가 있고

PHP, Python, Go, Ruby 그리고 C++ 등이 있습니다

 

AWS CLI 는 파이썬 SDK를 이용한다. 

 

기본 리전을 구성하지 않으면 API 호출을 위해서 SDK 에서 us-east-1 이 기본으로 선택된다. 

If you don't specify or configure a default region, then us-east-1 will be chosen by default

 


Quiz 10: AWS IAM, CLI & SDK 퀴즈 

1. EC2 인스턴스에 호스팅된 애플리케이션이 PutObject API 호출을 사용해 S3 버킷에 객체를 업로드하려 합니다. 하지만 요구되는 권한을 가지고 있지 않은 상황입니다. 어떻게 해야 할까요?

IAM 역할은 EC2 인스턴스에 자격 증명 및 권한를 부여하기 위해 사용할 수 있는 적절한 방법입니다.

 

2. 여러분은 동료와 함께 API 호출을 만들어 AWS 서비스와 상호작용하는 애플리케이션을 개발하고 있습니다. 동료는 아무 문제 없이 자신의 기기에서 애플리케이션을 실행할 수 있으나, 여러분에게는 API 인증 예외 처리가 발생합니다. 어떻게 해야 할까요?

3. 관리자가 Linux EC2 인스턴스를 실행하여 여러분이 SSH를 할 수 있도록 EC2 키 쌍을 제공했습니다. EC2 인스턴스로 들어간 여러분은 EC2 인스턴스 ID를 받으려 합니다. 이를 위한 최선의 방법은 무엇인가요?

169.254.169.254 기억하자! 

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 11: 클래식 솔루션 아키텍처 토론

 


124. S3 보안 및 버킷 정책

S3 Security 

사용자 기반 보안 

IAM 정책- IAM 사용자는 IAM 정책을 가지고 있는데 이들은 정책은 어떤 API 호출이 허용될지를 결정한다.

만약 유저가 IAM 정책을 통해 Amazon S3 버킷으로의 액세스 방법을 승인받게 되면 실행이 가능해진다 .

 

리소스 기반 보안 

S3 콘솔에서 설정 가능한 버킷 전반의 규칙이며 S3버킷에서 보안 주체가 무엇을 할 수 있는지 혹은 할 수 없는지를 결정하는 정책이다 .

이를 통해 교차 계정 액세스가 활성화 된다.  cross account 

 

객체 레벨에서의 액세스 규칙을 설정 

Object Access Control List (ACL ) - finer gain 

 

버킷 ACL 방식 

Bucket Access control List (ACL) - less common 

 

IAM 유저가 S3 객체에 접근하는 경우 

  •  IAM 퍼미션이 있거나 리소스 정책이 허락하거나
  • 그리고 명시적 거부가 없는 경우 (there's no explicit deny) 

S3 버킷 정책

Json 형식이다. 

resources: 버킷 또는 객체 

action: api가 허가 및 거부를 하도록 설정한다 .

effect: 허용/ 거부

principal : 해당 S3 버킷의 정책을 적용할 계정 혹은 유저이다. 

 

Use S3 bucket for policy to: 

버킷에 퍼블릭 액세스 권한을 승인하거나 

업로드 시점에 객체를 암호화시키거나 ( force objects to be encrypted at upload)

다른 계정에 액세스 권한을 주는 경우 

 

Bucket setting for block public access

객체가 퍼블릭 액세스 되는 것을 차단하는 방법

  • new access control lists (ACLs)
  • any access control lists(ACLs)
  • new public bucket or access point policies 

퍼블릭 버킷이나 액세스 포인트 정책을 통해 버킷과 객체를 향한 퍼블릭 및 교차 계정 액세스를 막을 수 있다. 

 

S3 security - other

Networking

네트워킹에서는 VPC 엔드 포인트로 S3에 비공개 액세스가 가능하다.

( vpc에 ec2 인스턴스가 있고 인터넷 액세스가 없는 경우 VPC 엔드 포인트를 통해 비공개로 s3에 액세스 할 수 있다.) 

 

Logging and Audit

S3 액세스 로그를 사용하면 다른 S3 버킷에 해당 로그가 저장된다. 

Api 호출은 CloudTrail 에 로깅 

 

사용자 보안

MFA 삭제

특정 버전 객체를 버킷에서 삭제하고 싶은 경우에 MFA 삭제를 활성화하면 된다. mfa를 하고 난 후 삭제할 수 있다.

사전 서명된 URL

한정된 시간 동안만 유효하다. ( 프리미엄 영상을 구매하고 다운로드 하는 경우 ) 

 

특정 사용자가 특정 파일에 액세스 하는 경우에 관련된 문제가 나오면 사전 서명된 URL을 생각하면 된다. 

 


125. S3 보안 및 버킷 정책 실습

Amazon S3 콘솔을 사용하여 버킷 정책 추가 - Amazon Simple Storage Service

 

Amazon S3 콘솔을 사용하여 버킷 정책 추가 - Amazon Simple Storage Service

편의상 버킷 정책 편집(Edit bucket policy) 페이지는 정책(Policy) 텍스트 필드 위에 현재 버킷의 버킷 ARN(Bucket ARN)(Amazon 리소스 이름)을 표시합니다. AWS 정책 생성기 페이지의 명령문에 사용하기 위해

docs.aws.amazon.com

 

버킷 정책 생성기를 이용할 수 있다. 

 


126. S3 웹사이트

S3 Websites

s3에서 정적 웹사이트를 호스팅 할 수 있고 www에서 접근이 가능하도록 허용하며 웹사이트 URL 도 아주 간단하다.

 

웹사이트 URL 형태는 

  •  <bucket-name>.s3-website-<AWS-region>.amazonaws.com
  • <bucket-name>.s3-website.<AWS-region>.amazonaws.com

이다. 

 

웹사이트를 활성화했으나 설정된 버킷 정책이 없을 때는 해당 버킷에 대한 공개 액세스가 가능하며 이때는 403 Forbidden 오류가 발생한다.

 

Access 에 

bucket and objects not public 이기 때문 

public으로 바꾸려면? 

1. Block all public access 상자 체크를 해제 

2. bucket policy 로 가서 공개 액세스를 허용하는 버킷 정책을 작성한다 .

 

 


127. S3 버전 관리

Amazon S3 - Versioning 

s3 파일을 버저닝 하려면 먼저 버킷 레벨에서 활성화가 되어야한다. 

같은 키로 파일 버전을 다시 업로드 하는 경우에 기존 파일을 덮어쓰게 되는데 사실은 덮어쓰는게 아니라 해당 파일의 새로운 버전을 생성하는 것이다 .

same key overwrite will increment the "version" : 1,2,3 

 

버킷을 버저닝하는 것이 최고

모든 파일 버전을 어느 정도 유지한다. 

  •  원치 않은 삭제로부터 보호
  • 이전 버전을 복원할 수 있음 ( Easy roll back to previous version) 

Notes

버저닝을 활성화하기 전에 버전 관리 되지 않은 파일은 null 버전이 된다. 

버킷에서 버저닝을 중단하면 이전 버전을 삭제하는 것이 아니라 이후의 파일이 버전을 할당받지 못하도록 한다 .

Suspending versioning does not delete the previous versions


128. S3 버전 관리 실습

properties 탭에가서 버킷 버전닝을 활성화 한다. 

 

versionID 탭이 생긴다. 

활성화 전에 있던 파일의 version ID는 null 이다. 

 

삭제시 delete marker 가 생성된다 .


129. S3 복제 노트 

Amazon S3 - Replication (Notes) 

복제를 활성화한 후에는 새로운 객체만 복제 대상이 된다. 

기존의 객체를 복제하려면 S3 배치 복제 기능을 사용해야한다. ( S3 Batch Replication)

기존 객체 부터 복제에 실패한 객체까지 복제할 수 있는 기능이다. 

 

삭제 마커도 복제할 수 있다. 

버전 ID 로 삭제하는 경우 버전 ID는 복제되지 않는다.

 

체이닝 복제는 불가능함

1번 버킷이 2번 버킷에 복제 되어 있고, 

2번 버킷이 3번 버킷에 복제돼 있다고 해서 1번 버킷을 객체가 3번 버킷으로 복제 되지 않는다 .


130. S3 복제 실습

1. 버킷 생성 - 버저닝 활성화 해야한다. 

2. 다시 버킷 생성 - 버저닝  활서오하 

 

오리진 버킷에서

파일업로드 하기 

복제 규치 추가 하기

대상 버킷 추가하기 

 

(대상 버킷의 소스 버킷에서 복제 활성화 이전의 객체를 복제하려면 S3 배치 작업 처리를 실행해야한다 )

 

새로운 파일 업로드 부터 복제 버킷에 업로드 된다 .

 

중요한 설정 

Management 에서 복제 규칙을 선택하고 규칙 편집으로 들어가 후 

삭제 마커 복제 옵션이 존재한다.

기본적으로 삭제마커는 복제 되지 않지만 이를 설정하는 기능이 있다.

삭제 마커도 복제 된다. 

 

오리진 버킷에서 파일을 삭제해도 복제 버켓에서 파일이 삭제되지 않는다. 

삭제 마커를 복제하는거지 삭제하는 행위를 복제하지 않는다 .

 


131. S3 스토리지 클래스 

S3 스토리지 클래스 

 

Glacier 에는 

Glacier Instant Retrieval

Glacier Flexible Retruevak

Glacier Deep Archive 

 

s3에서 객체를 생성할때 클래스를 선택할 수도 있고 수동으로 스토리지 클래스를 수정할 수도 있다.

 

S3 수명 주기 구성을 사용해 스토리지 클래스 간에 객체를 자동으로 이동할 수 있다. 

 

S3 Durability and Availability

Durability: 

내구성으로 만년에 한 번 객체 손실이 예상된다 .

모든 스토리지 클래스의 내구성은 같다 .

 

Availability:

 가용성은 서비스가 얼마나 용이하게 제공되는지를 의미하며 스토리지 클래스에 따라 다르다 .

1년에 53분 동안은 서비스를 사용할 수 없다는 뜻 

99.99%

 

S3 standard - General Purpose

99.99 가용성 

빈번한 액세스 

낮은 레이턴시 , 높은 처리량

두개의 기능 장애를 동시에 버틸 수 있음. ( sustain 2 concurrent facility failures) 

 

빅데이터 분석, 모바일, 게임 어플리케이션, 콘텐츠 배포 

 

S3 Infrequent Access

자주 액새스 하지는 않지만 필요한 경우 빠르게 액세스해야 하는 데이터 

스탠다드 보다는 비용이 적다

 

검색 비용이 쌔다 . 

 

One zone-IA 는  단일 az에서는 높은 내구성을 갖지만 Az 가 파괴된 경우 데이터를 잃게 된다 .

가용성은 99.5% 

 

온프레미스 데이터를 2차 백업하거나 재생성 가능한 데이터를 저장하는데 사용된다 .

 

Glacier Storage Classes

콜드 스토리지 

아카이빙과 백업을 위한 저비용 객체 스토리지 

 

Glacier Instant Retrieval

밀리초 단위로 검색이 가능 

분기에 한번 액세스 하는데이터 

최소 보관 기간이 90일

 

Glacier Flexible Retrieval 

Expedited 1~5min

Standard 3~5 hour

bulk 5~12 hour ,free

최소 보관 기간 90일 

 

Glacier Deep Archive

standard 12 hour

bulk 48 hour

가장 저렴 

180 일 

 

S3 Intelligent- Tiering 

사용 패턴에 따라 액세스된 티어 간에 객체를 이동할 수 있게 해준다 .

소액의 월별 모니터링 비용과 티어링 비용 

 

frequent acces tier : default

infrequent access tier : 30days

archive instant access tier: 90 days

archive access tier : 90~700 + days 이상 액세스 하지 않은 객체에 구성 

 

알아서 객체를 스토리지 티어간에 옮긴다. 


132. S3 스토리지 클래스 실습 

버킷 생성

객체 업로드 시 스토리지 클래스 추가 옵션이 나온다. 

 

glacier 에 업로드 하기 시작하면 해당 파일은 회수하지 않는 한 볼 수 없게끔 즉시 변경된다. 

파일 열람 접근을 위해서는 먼저 복원을 해야한다. 

 

객체 스토리지 클래스를 수정할 수 있다.


Quiz 9: Amazon S3 퀴즈 

1. 25GB 크기의 파일을 S3에 업로드하려 시도 중이지만, 오류가 발생하고 있습니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

S3 객체 파일의 크기제한은 5TB 이다. 

100mb 보다 파일이 큰 경우 멀티파트 업로드가 권장된다. 

파일 크기가 100MB가 넘는 경우에는 멀티파트 업로드가 권장됩니다.

 

2. dev라는 이름의 새로운 S3 버킷을 생성하려 하던 중 오류가 발생했습니다. S3 버킷이 생성된 적이 없는 새로운 AWS 계정을 사용 중입니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

S3 버킷 이름은 전역에서 고유해야함.

 

3. 이미 많은 파일을 포함하고 있는 S3 버킷에 버전 관리를 활성화한 상태입니다. 기존의 파일은 다음 중 어떤 버전을 가지고 있을까요?

4. 여러분의 고객은 S3에 있는 파일을 암호화하되, 암호화 키를 AWS에 저장하지 않고 직접 관리하기를 원하고 있습니다. 이에 여러분은 고객에게 ............................. 를 추천했습니다.

SSE-C을 사용하면, AWS에서 암호화가 일어나지만 당사자가 암호화 키를 전적으로 관리하게 됩니다.

Server-Side Encryption 

 

암호화 주체, 암호화 키 저장 장소, 암호화키 관리 주체 

5.여러분이 근무 중인 기업이 S3에 저장된 자신들의 데이터를 암호화하고자 합니다. 암호화 키가 AWS에 저장되고 관리되더라도 문제가 없으나, 암호화 키에 대한 교체 정책은 기업이 직접 관리하기를 원하고 있습니다. 이에 여러분은 고객에게 ............................. 를 추천했습니다.

SSE-KMS를 사용하면, AWS에서 암호화가 일어나고 AWS가 암호화 키를 관리하게 되지만, 암호화 키의 교체 정책은 당사자가 전적으로 관리하게 됩니다. AWS에 저장된 암호화 키

 

6. 기업은 AWS의 암호화 프로세스를 신뢰하지 않으며, 애플리케이션 내에서 프로세스가 이뤄지기를 원하고 있습니다. 이에 여러분은 고객에게 ............................. 를 추천했습니다.

 

클라이언트 측 암호화를 사용하면, 암호화를 직접 수행해야 하며 당사자가 암호화 키를 전적으로 관리하게 됩니다. 암호화를 여러분이 직접 수행하고 암호화된 데이터를 AWS로 보냅니다. AWS는 여러분의 암호화 키에 대해 알지 못하며, 데이터를 복호화할 수 없습니다.

 

7. S3 버킷 정책을 업데이트해 IAM 사용자들이 S3 버킷 내의 파일을 읽기/쓰기할 수 있도록 허가했으나, 한 명의 사용자가 PutObject  API 호출을 수행할 수 없다며 불만을 토로하고 있습니다. 이 경우, 가능성이 있는 원인은 무엇일까요?

IAM 정책 내의 명시적인 부인(DENY)은 S3 버킷 정책보다 우선적으로 고려됩니다.

 

8. S3 버킷으로부터 파일을 로딩해 오는 웹사이트가 있습니다. 파일의 URL을 Chrome 브라우저에 직접 입력했을 때에는 정상적으로 작동했으나, 이 웹사이트에서 파일을 로딩하려 할 때는 작동이 되지 않습니다. 무엇이 문제일까요?

 

교차 오리진 리소스 공유(CORS)는 한 도메인에서 로딩되는 클라이언트 웹 애플리케이션이 다른 도메인에 있는 리소스와 상호작용하는 방식을 정의합니다. CORS에 대한 더 많은 정보는 다음 URL을 참조하세요: https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

 

CORS

Cross Origin Resource Sharing

 

【한글자막】 AWS Certified Solutions Architect Professional | Udemy

2023.01.06 - [DevOps/aws] - Udemy | AWS Certified Solutions Architect Associate 강의 | Section1~2

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 3: AWS 시작하기

2023.01.06 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 4: IAM 및 AWS CLI

2023.01.09 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 5: EC2 기초

2023.01.10 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 6: EC2 - 솔루션스 아키텍트 어소시에이트 레벨

2023.01.11 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 7: EC2 인스턴스 스토리지

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 8: 고가용성 및 스케일링성: ELB 및 ASG

2023.01.13 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 9: AWS 기초 : RDS + Aurora + ElastiCache

2023.01.16 - [DevOps/aws] - AWS Certified Solutions Architect Associate 강의 Udemy | Section 10: Route 53


117. 솔루션 아키텍처 토론 개요

이 파트에서 여러 예시를 배우고 솔루션 아키텍처로서 배워야하는 자질을 알아볼 것이다. 

 

WhatIsTheTime.com

MyClothes.com

MyWordPress.com

Instatiating applications quickly

Beanstalk

 


118. WhatIsTheTime.com

사람들에게 시간 알려주는 사이트 

db 필요 없음. 

다운타임을 축소하고 싶음. 

다운타임 축소를 위해 수평, 수직 확장할 필요 있음. 

 

1. 사용자가 늘어나서 인스턴스를 t2.micro에서 m5.large 로 교체한다.

교체하는 기간에 다운 타임 발생

EIP 존재

2. 수평 확장으로 인스턴스를 늘림.

하지만 EIP 갯수도 늘어난다. 관리 어려움. 

 

다른 방식으로 해보자!

 eip를 제거하고 route 53을 활용한다. 

a record, ttl 1 hour 로 고정 

인스턴스 제거하는 과정에서 ttl 1시간 캐시되므로 

특정 유저는 접속 안됨 

 

로드 밸런서를 이용하자 !

ELB 는 상태 체크 가능하다. (보안 그룹 이용) 

ELB의 ip 주소가 지속적으로 바뀌기 때문에 별칭 레코드를 사용한다. 

 

수동으로 인스턴스 관리 하는 것보다 

ASG를 이용하자 

 

리전에 지진이 발생한다면 ? 

 

다중 AZ 를 사용

 

비용 절감을 위해 예약 인스턴스를 사용한다

ASG 의 최소 용량은 항상 돌아가야하니까 ( 최소한의 예약인스턴스 사용)

 

 

Route 53의 ttl 정책 때문에 항상 a레코드 타입을 쓸 수는 없다.  alias 존재 이유


119. MyClothes.com

Stateful Web App: MyClothes.com

 이번엔 Stateful 웹 앱인 myClothes.com 을 예로 들어보자. 

옷을 살 수 있고,  장바구니가 있고 

동시에 수백 명의 사용자가 있다. 

수평 확장을 하고 싶으며 앱을 stateless로 유지하게 해야한다. 

사용자는 장바구니를 잃어버리면 안된다. 

또한 주소 등의 사용자 정보를 효과적으로 보관하고 어디에서나 접근할 수 있는 데이터베이스에 저장할 거다.

 

ASG 사용 

ELB로 트래픽을 각 ASG 로 보낸다고 가정하자

A 인스턴스에서 장바구니를 만들고 

다음 연결에서 B인스턴스에 연결되면 장바구니가 사라진다.

 

사용자가 같은 ASG 의 인스턴스에 연결되게 할려면 세션을 켜야한다. 

 

ELB session 사용

고착도 , 세션 밀접성을 도입해야한다. 

Stickiness 을 설정하면 ELB에서 특정한 인스턴스로만 접근한다. 

세션을 사용해도 인스턴스가 종료되면 장바구니를 잃어버리게 된다. ㄴ

 

Introduce User Cookie 

사용자 쿠키를 사용해보자

만약 장바구니에 대한 정보를 사용자가 지니고 있다면? 

인스턴스들은 장바구니에 대한 정보를 알 필요가 없다. -> stateless 하게 된다. 

사용자 , 클라이언트에서 계속 인증하니까 

하지만 데이터를 전송할 때마다 사용자에 대한 정보를 보내므로 HTTP 요청이 무거워진다. 

또한 전송과정에서 사용자의 쿠키가 변경되면 보안 위험도 존재한다 .

따라서 EC2 인스턴스가 사용자 쿠키 내용을 점검해야한다. 

Cookie must be validated 

전체 쿠키의 크기는 4kb 이하까지만 가능해 쿠키 내에는 매우 작은 정보만 저장 가능 

대량의 셋은 불가하다. 

 

Introduce Server Session 

전체 장바구를 웹 쿠키로 보내는 대신에 단순 세션 ID 만 보내는 것이다.

백그라운드에는 ElastiCache 클러스터가 존재한다. 

세션 ID를 보낼 때 EC2 인스턴스에게 '이 물건을 장바구니에 추가할 거야'라고 말한다. 

EC2 인스턴스는 장바구니 내용을 ElastiCache 에 추가하고 이 장바구니 내용을 불러올 수 있는 ID가 바로 세션 ID 가 된다.  ( 사용자 세션 ID를 EC2 를 걸쳐 ElastiCache 에 저장하고, EC2 에 작업이 생길 때마다 ElastiCache 에서 세션 ID를 찾는다.) 

ElastiCache 는 1천분의 1초 이하의 성능을 가졌다. 따라서 이 모든 것이 매우 빠르게 진해오딤 .

세션 데이터는 DynamoDB에 저장한다. 

ElastiCache 내부를 수정할 수 없기 때문에 훨씬 안전하다. 

 

Storing User Data in a database

사용자 데이터를 RDS에 저장한다. 

RDS 는 인스턴스와 통신할 수 있으며 일종의 다중 AZ stateless 솔루션을 효과적으로 얻을 수 있다. 

 

Scaling Reads

사용자가 매우 많아졌다고 가정하자.

RDS 읽기 전용 복제본을 사용한다. (최대 5개의 replicas 가능) 

 

Scaling Reads (Alternative) - Write Through

EC2 인스턴스에서 데이터를 찾을때 먼저 elastiCache 를 확인한다. cache miss

데이터가 없으면 RDS 에 찾아보고 해당 데이터를 elastiCache에 캐싱한다 . cache hit 를 위해 

캐싱 했기 때문에 rds 상의 트래픽을 줄이고 동시에 성능을 높일 수 있다. 

 

Multi AZ - Survive disasters

다중 AZ ELB가 있다.

route 53 도 가용성이 높다. 

로드밸런서를 다중 AZ로 만든다 .

오토 스케일링 그룹도 다중 AZ 

RDS 역시 다중 AZ 

 

대기 복제본을 만드는 것도 방법이다. 

레디스를 사용한다며 ElastiCache도 다중 AZ 기능을 가짐.

 

철저한 보안그룹 

 

3 tier 아키텍처를 위한 팁

클라이언트, 웹, 데이터베이스 

 

ELB 고정 세션

웹 쿠키를 이용한 stateless 애플리케이션 

ElastiCache 

- 세션 저장 ( 또는 dynamodb 사용)

- RDS 캐싱 

- 다중 AZ

RDS

- 사용자 데이터 저장 

- 읽기 복제본 생성 

- 다중 az for DR

철저한 보안그룹 설정  


120. MyWordPress.com

완전히 확장 가능한 WordPress 웹 사이트 만들기 

사진을 업로드하고 보여주는 기능 

사용자 데이터, 콘텐츠는 mySql 에 저장된다. 

 

확장하고 싶다면 ? 

RDS를 Aurora 로 교체

다중 az, read replicas, 글로벌 데이터베이스 사용 가능 

 

Storing  images with EBS

EBS에 사진을 저장하는 경우 

ELB에서 다른 두개의 인스턴스와 각각 EBS가 연결되어있다면 

한쪽 EBS 만 사진을 갖는다 .

EBS 볼륨의 단점은 하나의 인스턴스만 있을 때는 잘 작동하지만 다중 AZ 또는 다중 인스턴스로 확장을 시작하면 문제가 생기기 시작한다 .

 

Storing images with EFS

EFS 는 네트워크 파일시스템 nfs 이다. 

EFS 드라이브에 접근하기 위해 각 AZ 에 ENI 를 생성한다. 

 

정리

Aurora Db를 이용하여 쉽게 다중 az 와 읽기 복제본을 생성한다. 

EBS 에 데이터를 저장 ( 단일 애플리케이션에 유리) 

Vs Storing data in EFS ( 분산 애플리케이션에 유리

 

EFS가 EBS 보다 비싸다.


121. 애플리케이션을 빠르게 인스턴스화 하기

Instantiating Application quickly

풀 스택을 실행하면 애플리케이션을 설치하고 데이터 삽입 및 복구하고 모든 내용을 구성한 다음 

애플리케이션을 실행하는데 매우 긴 시간이 걸린다.  어떻게 하면 더 빨리 할 수 있을까?

 

full stack ( EC2, EBS, RDS) 

클라우드의 이점을 활용하면 된다 .

 

EC2 Instances: 

1. Golden AMI 사용

애플리케이션과 OS 종속성(dependencies) 등 모든 것을 사전에 설치하고 그것으로부터 AMI를 생성한다. 

애플리케이션 ,OS 종속성 등을 재설치할 필요가 없다. 모든 것이 이미 설치된 상태에서 바로 실행된다. 

 

2. 사용자 데이터 부트스트래핑

인스턴스가 처음 시작될 때 구성하는 것

애플리케이션, OS 종속성 등을 설치하기 위해 부트스트래핑을 할 수 있다.

매우 느리다.

 

3. 하이브리드

Elastic BeanStalk  은 ami를 구성하고 사용자 데이터를 추가하는 방식

 

RDS Databases:

스냅샷으로부터 복구 

EBS Volumes:

스냅샷으로부터 복구


122. Beanstalk 개요

Developer problems on AWS 

인프라 관리, 코드 배포, db lb 에 대한 환경 구성, 스케일링 문제등

고려해야할 문제가 많다.

 

개발자는 코드만 신경 쓰게 하자.

 

Elastic Beanstalk - Overview

여러 aws 서비스로 구성된다. 

관리형 서비스 

  • 자동으로 용량 프로비저닝, 로드 밸런싱, 스케일링, 애플리케이션 상태 체크, 인스턴스 구성
  • 코드만 신경 쓰면된다.

여전히 각각의 구성 요소를 완전히 제어할 수 있다.

beanstalk은 하나의 인터페이스에 통합되어 있음. 

 

beanstalk 은 무료이지만 구성요소인 aws 서비스는 지불해야함. 

 

Elastic Beanstalk - Components 

Beanstalk의 구성요소는 애플리케이션으로 이루어져 있다. 

(환경, 버전, 구성 등) 

 

애플리케이션 버전 

애플리케이션 코드의 반복이다. 버전1, 버전2,.... 등이 있을 수 있다

 

애플리케이션 환경

특정 애플리케이션 버전을 실행하는 리소스의 모음이다.

환경 내에서는 한 번에 하나의 애플리케이션 버전만 존재할 수 있다.(onlt on application version at a time) 

환경 내에서 애플리케이션 버전을 버전 1에서 버전 2로 업데이트 할 수 있다. 

 

Beanstalk에서는 서로 다른 두개의 티어를 가질 수 있다. 

웹 서버 환경 티어작업자 환경 티어 

다양한 환경을 만들 수 있다. ( dev, test, prod 등)

 

 

애플리케이션을 생성하고 버전을 업로드하고 환경을 실행하고 그 후에는 환경 수명 주기를 관리한다. 

이를 반복한다. 

 

Beanstalk이 지원하는 언어 

Go, Java SE, Java with Tomcat .NET Core on Linux

.NET Core on Windows Server Node.js, PHP

Python, Ruby, Packer Builder Single Container Docker

Multi-container Docker Preconfigured Docker 등입니다

지원하는 언어가 없다면 사용자 지정 플랫폼을 만들 수 있는 고급 기능이 있다. 

 

beanstalk 에서는 거의 모든 것을 배포할 수 있다. 

 

Webserver Tier vs Worker Tier 

웹서버 티어와 작업wk티어는 무슨 뜻일까? 

웹티어는 1번 , 전통적인 방식의 아키텍처로 로드 밸런서가 있고 웹서버가 될 다수의 EC2 인스턴스가 있는 오토 스케일링 그룹으로 트래픽을 보낸다 .

 

작업자 티어는 2번 

여기서 클라이언트가 ec2 인스턴스에 직접 접근하지 않는다.

메시지 대기열인 sqs 대기열을 사용한다. 

메시지가 sqs 대기열로 전송된다. 

ec2 인스턴스들이 작업자가 된다.  sqs 대기열로부터 메시지를 가져와서 처리한다. 

sqs 메시지 숫자에 따라 ec2 인스턴스가 확장된다. 

 

웹 환경이 작업자 환경의 sqs 대기열로 메시지를 푸시함으로써 웹 환경과 작업자 환경이 함께 할 수 있다. ?


123. Beanstalk 실습

PaaS | 응용 프로그램 관리 | Amazon Web Services

 

PaaS | 응용 프로그램 관리 | Amazon Web Services

데이터베이스, 스토리지, 보안 및 기타 범주에 대한 정보를 확인하세요.

aws.amazon.com

클라우드 포메이션에서 stack 을 가져와서 실행했다. 

 


Quiz 8: 클래식 솔루션 아키텍처 퀴즈

1. 웹사이트 TriangleSunglasses.com는 Application Load Balancer가 관리하는 오토 스케일링 그룹에서 관리 중인 EC2 인스턴스 플릿에 호스팅되어 있습니다. ASG는 웹사이트로 들어가는 트래픽을 온디맨드 기반으로 스케일링하도록 구성되었습니다. 비용 절감을 위해, ASG가 ALB로 통하는 트래픽을 기반으로 스케일링을 하도록 구성해 둔 상태입니다. 솔루션의 고가용성을 보장하기 위해, ASG를 업데이트하고 최소 용량을 2로 설정했습니다. 요구 사항을 충족시키되, 비용을 더욱 절감하려면 어떤 작업을 해야 할까요?

어떤 상황이건 2개의 EC2 인스턴스를 실행하면 추가적인 비용을 절감할 수 있습니다.

 

2. 다음 중 "무상태" 애플리케이션 티어를 설계하는 데에 도움이 되지 않는 것을 고르세요.

EBS 볼륨은 특정 AZ에 저장되며, 한 번에 하나의 EC2 인스턴스에만 연결될 수 있습니다.

 

EBS 볼륨은 az에 생성! | 하나의 EC2 인스턴스에만 연결된다.

 

3. 관리 중인 Linux EC2 인스턴스 100s에 소프트웨어 업데이트를 설치하려 합니다. 이 업데이트를 EC2 인스턴스로 동적으로 로딩되어야 하며, 많은 양의 연산을 요구해서는 안 되는 공유 스토리지에 저장하고자 합니다. 어떤 방법을 사용해야 할까요?

EFS는 EC2 인스턴스의 100s에 동일한 파일 시스템을 마운트할 수 있게 해주는 네트워크 파일 시스템(NFS)입니다. EFS에 소프트웨어 업데이트를 저장하면 각 EC2 인스턴스가 이들을 평가할 수 있게 됩니다.

 

4. 솔루션 아키텍트로서, 여러분은 복잡한 ERP 소프트웨어 스위트를 AWS Cloud로 이전하려 합니다. 오토 스케일링 그룹이 관리하는 한 세트의 Linux EC2 인스턴스에 소프트웨어를 호스팅할 계획입니다. 소프트웨어가 Linux 기기를 준비하는 데에는 보통 한 시간 이상이 걸립니다. 스케일 아웃이 발생할 경우, 설치 과정을 빠르게 만들기 위해서는 어떤 방법을 추천할 수 있을까요?

Golden AMI는 설치되고 구성된 전체 소프트웨어를 포함한 이미지이기 때문에, 향후 이 AMI로부터 EC2 인스턴스를 빠르게 부팅할 수 있습니다.

 

5. 애플리케이션을 개발 중에 있으며, 최소 비용을 사용해 이 애플리케이션을 Elastic Beanstalk으로 배포하려 합니다. 이를 위해서는, 애플리케이션을 .................. 에서 실행해야 합니다.

 

문제에서 애플리케이션이 아직 개발 단계에 있으며 비용을 절감하고자 한다고 언급하고 있습니다. 단일 인스턴스 모드는 하나의 EC2 인스턴스와 하나의 탄력적 IP를 생성합니다.

 

6.애플리케이션을 Elastic Beanstalk으로 배포하던 도중, 배포 프로세스가 극도로 느리다는 것을 알게 되었습니다. 로그를 검토한 결과, 종속성이 매 배포 당 각 EC2 인스턴스로 리졸브된다는 사실을 발견했습니다. 영향을 최소화하면서 배포 프로세스를 빠르게 하려면 어떻게 해야 할까요?

Golden AMI는 전체 소프트웨어, 종속성 및 구성을 포함하는 이미지이기 때문에, 향후 이 AMI로부터 EC2 인스턴스를 빠르게 부팅할 수 있습니다.

+ Recent posts