[AWS] Software Architect Associate - Udemy강의 정리 (1)S3
본 포스트는 AWS Solution Architect CERTIFICATE 준비 및 udemy 강의를 정리하며 작성하였습니다. Udemy 강의 https://www.udemy.com/course/aws-certified-solutions-architect-associate/ AWS Solution Architect Associate란? https://aws.amazon.com/ko/certification/certified-solutions-architect-associate/
요약
💡 새로 알게된 사실
- S3에 올릴 수 있는 최대 파일 사이즈는 5TB
- ‘AWS Glacier’ - s3대비 훨씬 저렴하지만 데이터를 가져올때 오래걸리는 스토리지 서비스
- S3 versioning - 파일의 수정, 삭제된 모든 버전을 관리할 수 있음
- lifecycle - 업로드 후 몇일, 삭제 후 몇일 등의 기간 설정하여 적절한 스토리지 클래스로 옮겨서, 비용을 최적화하면서 파일들을 효율적으로 관리할 수 있음.
- S3 Select - S3에 업로드 된 대용량 파일(ex. zip으로 합축된 csv)에 간단한 SQL expression을 통해 데이터의 일부만 가져올 수 있음
🤔 처음 들을 때 햇갈렸던 부분
- IAM - Identity Federation : AWS 유저가 아니면서 일시적으로 접속권한을 받아서 AWS에 접속하는 서비스
- S3 Availability & Durability
- Availability = 유효성 - 정상적으로 이용 가능할 확률
- Durability = 데이터가 lost되지 않을 확률
- S3 Object lock vs. Glacier Vault lock
- S3 storage - Hot storage(S3, IA, Intelligent Tiering)에 적용. 개별 Object 또는 버킷단위로 적용 가능
- Glacier Vault lock - Cold storage(Glacier)에 적용. vault단위로 적용
- Cross Region Repliation에서 파일을 삭제했다가 복구하는경우 (= delete marker를 삭제하는경우)는 어떻게 되지? ❓
- S3 Signed url vs. CloudFront signed url ❓
- Datasync vs. Snowball vs. Storage Gateway
- DataSync : On-premise to Cloud 온라인 파일 전송 서비스
- Snowball : 엣지컴퓨팅, 엣지 스토리지 등에 활용할 수 있는 디바이스(petabyte단위의 데이터 전송 지원)
- Storage Gateway : 하이브리드 클라우드 스토리지 서비스. 백업을 클라우드로 이동하고, 클라우드 스토리지에서 지원되는 온프레미스 파일 공유를 사용하고, 온프레미스 애플리케이션에서 AWS의 데이터에 낮은 지연 시간으로 액세스 ❓
01. IAM
-1. IAM 101
IAM = AWS리소스에 대한 접근 관리
- Centralized control
- Shared Access
- Granular Permission : 세분화된 권한
- Identity Federation : 페이스북 등과 계정 공유 ❓
- Multifactor Authentication ⭐
- Temporary access
- Password Rotation Policy
- 다른 AWS 서비스와 integration
- PCI DSS(지불 카드 산업 데이터 보안 표준) 준수
핵심 용어
- Users
- Groups : 그룹의 유저들은 그룹의 permission을 상속받음
- Policies : JSON형태의 Policy documentation. 어떤 user, role, group에 무엇을 허용할 것인지를 정의함
- Roles : 리소스에 대한 액세스 권한. 유저에게 이 role을 할당함
-2. IAM 대시보드 둘러보기
- IAM사용자 로그인 링크 : 이 계정으로 로그인하는 URL
-
- MFA(Multi Factor Auth) 활성화
- 루트사용자는 god mode와 다름 없음. 함부로 접근할 수 없도록 google auth app 등을 통한 이중 보안을 설정할 것
- user 생성(global based)
Access Type
- Programmatic access(access key Id와 secret access key를 발급받고 EC2등에서 접근)
- AWS management console access : 콘솔에서 직접 접근
- Group 생성
- 정책 연결
- 유저 추가
- Role 생성
- 비밀번호 규칙 설정
-3. Billing Alarm 설정
어떤 지표에 대해, 어떤 조건에서(Static/ 이상감지), 누구에게 알람을 보낼 것인지 설정 가능
02. S3
-1. S3
S3 : Simple Storage service
- Object based(파일단위)
- Bucket 은 Folder와 같은 개념
- 이름은 globally unique해야함 ⭐
- 업로드 성공시 200 response 반환 ⭐
Object : 그냥 파일이라 생각하면 됨
- Key : object이름
- Value : byte sequence (0Bytes ~ 5TB)
- Version Id
- Metadata
- Subresources - Access Control List, Torrent
Data Consistency
- PUSTS - Read after write consistency : 바로 변화된 값을 볼 수 있음
- overwrite PUTS & DELETES - Eventual consistency ⭐ : propagate time이 소요됨
Guarantee ⭐
- Availability(유효성 - 정상적으로 이용 가능) - 99.9%
- Durability(데이터가 lost되지 않을 확률) - 99.9999 (9가 11개) %
Restricting Bucket Access
- Bucket Policies - 전체 버킷에 대해 적용
- Object Policies - 개별 파일에 대해 적용
- IAM Policies to Users & Groups - 유저와 그룹에 대해 적용
데이터 스토리지 종류(storage classes)
- S3 standard : 99.99 Availability & 11 9s Durability
- S3 IA : 자주 사용하지 않는 파일이 많을때 사용
- One Zone IA : 회복력 떨어짐. (Multiple Availability Zone Data Resilience가 필요하지 않은 경우 사용)
- Intelligent Tiering : 자동으로 class관리
- Glacier : durable, low cost, but 접근시간이 오래걸림
- Glacier Deep Archieve : 12시간 이상의 retrieval time (가장 저렴)
S3 Pricing
S3 스토리지 클래스를 결정할 때는 스토리지 요금, 요청 및 데이터 검색 요금, 데이터 전송 및 전송 가속화 요금 그리고 데이터 관리 기능 요금이라는 네 가지 비용 요소를 고려해야 합니다.
스토리지 Pricing
Intelligent Tiering - Infrequent Access Tier가 있어서 가격을 줄일 수 있지만, 모니터링에 대한 추가 cost
Glacier부터는 저장에 대해서는 1센트/GB도 안 되는 가격임
요청 및 데이터 검색
IA는 요청에 대한 비용이 2배 비싸고 스토리지에 대한 비용이 2배 저렴
Pricing중에는 S3 Standard가 가장 비쌈.
One Zone - IA : 최소 3개의 가용 영역에 데이터를 저장하는 S3 스토리지와 달리 하나의 AZ에만 저장하여 20% 적게 듬. (가용성 및 복원력이 필요 없는 고객에게 적합)
Security And Encryption
기본적으로 새로 만든 버킷은 PRIVATE.
- Bucket Policies
- Access Control Lists
를 통해서 버킷의 접근을 제어할 수 있음
Access log를 생성하여 다른 계정의 다른 버킷에 저장하도록 할 수도 있음
Encryption
- Encryption In Transit (전송)
- SSL/TLS
- Encryption AT Rest(서버사이드)
- S3 Managed Keys - SSE-S3
- AWS Key Management Service, Managed Keys - SSE-KMS
- Server Side Encryption With Customer Provided Keys - SSE-C
-
- Client Side Encryption(클라이언트)
- Object단위 Encryption : 파일 > 속성 > 서버 측 암호화 설정
버킷 단위 Encryption : 버킷 > 속성 > 기본 암호화(Default Encryption)
-2. Versioning & Lifecycle
Versioning
- Object의 모든 버전을 저장함(모든 write, delete된 것 포함)
- Backup tool로써 훌륭함
- 한번 enable 하면 disable 불가(suspend만 가능)
- Lifecycle rule과 통합
- ⭐ MFA Delete 제공
버킷 만드는 지점에서 Versioning 활성화
버전 나열을 활성화
각 버전별로 public여부를 달리 설정 가능
객체 url뒤에 버전 코드가 붙어있음
객체를 삭제해도 버전 나열을 활성화 하면 해당 파일이 보임
삭제마커를 삭제하면 다시 restore
같은 방식으로 어떤 버전을 영구 삭제할 수는 있음
버킷 > 속성관리 > 버킷 버전 관리를 보면, versioning을 suspend할 수 는 있지만 disable은 안됨
Lifecycle
-
storage tier간에 자동으로 오브젝트를 이동시킴
-
versioning과 함께 사용 - 현재 버전과 이전 버전에 적용 가능
management > Lifecycle rule > 규칙 생성
이전할 tier, 일수 등을 입력해주면
규칙 생성 완료
-3. Lock Policies
S3 Object Lock
WORM(Write Once Read Many) 모델에는 Object Lock을 사용할 것. 개별 object 또는 전체 Bucket에 대해 적용 가능
- Governance Mode - 유저가 특별한 권한 없이는 overwrite, delete, lock 설정 변경 할 수 없음
- Compliance Mode - root 유저도 overwrite, delete 불가. Retention period동안은 어떤 변경도 불가함.
- Retention Period - 일정 기간동안 object를 보호함. 설정되면 object version의 메타데이터에 해당 정보가 추가되고, retention period가 지난 후에야 객체에 대한 변경이 가능함.
- Legal Holds - 객체의 overwrite/delete 방지. 정해진 기간이 없음. 단, s3:PutObjectLegalHold 권한을 가진 유저는 자유롭게 설정/제거 할 수 있음
Glacier Vault Lock
S3 Glacier에 적용. Glacier Vault별로 정책을 적용함.
-4. S3 Performance
prefix
bucketname/folder/subfolder/file > /folder/subfolder
-
여러 Prefix로 request를 분산해야 성능이 높아짐 (prefix 많을수록 성능 향상)
-
100-200 밀리세컨드의 latency, 3500 PUT/COPY/POST/DELETE, 5500 GET/HEAD request per second
KMS
SSE-KMS 로 암호화하면 KMS limit이 있음
- KMS 사용 시 KMS quota 도 고려해야 함. 리전별로 다르지만 보통 5500, 10000, 30000 requests per seconds
- Quota increase 요청 불가
Multipart Uploads
하나의 파일을 여러개로 쪼개서 병렬 업로드(efficiency 증가) 100MB 이상의 파일에 권장, 최대 5TB의 파일까지 가능. 각 파트는 5MB~5GB
S3 Byte Range Fetches
병렬 다운로드
속도 증가 & 파일 일부만 선택적으로 다운로드 가능
-5. S3 Select & Glacier select
S3 Select - 큰 파일에서(ex. zip으로 합축된 csv) 간단한 SQL expression을 통해 데이터의 일부만 가져올 수 있음(특정 row, column 등) - 전체를 다운로드해서, 압축해제하고, csv전체를 처리할 필요가 없음
=> 최대 400% 빠름, 80% 저렴
하위 쿼리, 조인은 지원하지 않음
Glacier Select - Glacier에서 데이터 가져올 때
-6. AWS Organizations & Consolidated Billing
AWS Organizations
여러 AWS 계정을 organization으로 통합(consolidate)하여 중앙 관리하도록 해줌
Consolidated Billing
많이 쓸수록 덜 냄.. 여러 account 를 통합하여 billing (유리하도록?) - Volume pricing discount
여기서 조직 생성 -> Invite account -> 이메일로 가서 링크를 클릭하면 초대 완료
계정에 organization 추가된 것 확인 가능
Master계정으로 로그인해서 AWS organization메뉴로 들어가면 join한 계정들을 확인 가능
Best Practices with AWS Organizations
- root account에는 MFA를 켜 놓을 것 & 강력한 암호 설정
- Paying account는 billing을 위해서만 사용되어야 함. 리소스를 deploy하거나 하지 말 것
- SCP(Service Control Policies)사용하는 서비스의 enable/disable은 OU(Organization Unit) 또는 개별 accout에서 할 것(❓)
-7. Lab - Sharing S3 Buckets Accross Accounts
S3 Bucket을 계정간에 공유하는 세가지 방법 ⭐
- Bucket Policies & IAM (entire bucket) . Programmatic Access Only
- Bucket ACL(Individual Access) & IAM. Programmatic Access Only
- Cross-account IAM Roles. Programmatic Access & Console Access.
(계정1) IAM -> create role -> (Select type of trusted entities) another AWS Account -> (Role) S3 full access -> (tag) blank -> (Role name) S3_cross_account_Access -> ‘Give this link to users … ‘ 부분을 공유
(계정2) 다른 AWS Account -> IAM -> Users -> Add User (Root Account 로는 불가하므로) & set Console Password (=> 이걸로 콘솔에서 로그인 할 예정) -> 그룹 생성 및 그룹에 해당 유저 추가 (Group name)Admins, (Policy) AdministratorAccess => 유저 생성 완료 (sign-in address가 화면에 뜨는데 이를 이용해 로그인) -> 해당 링크로 로그인 -> “Switch Role” 버튼 클릭 -> 아까 계정1에서 만들어진 role 정보 입력 (❓) -> 해당 role로 로그인 한 것 확인 가능
-> billing등은 안되고, s3에 대한 작동만 다 가능
-8. Cross Region Replication
Replication Rule -> Create a new rule -> (Source bucket) 전체 Or fileter -> (Destination) 아까만든 버킷. - destination bucket에서는 versioning이 enable되어있어야 함! -> a
-
소스 버킷의 버전 바꾸면 - 가장 최신 버전만 replicate됨
-
permission 변경해도 replicate의 permission은 그대로
Exam Tips
-
source와 destination 모두에서 versioning을 켜두어야 함
-
기존 버킷의 파일은 자동으로 복제되지 않음
-
이후의 파일 업데이트는 모두 복제(replicate)됨
-
delete marker는 복제되지 않음
-
개별 버전이나 delete marker를 삭제하는것은 복제되지 않음
❓ 파일을 삭제했다가 복구하는경우 (= delete marker를 삭제하는경우)는 어떻게 되지?
-9. Transfer Acceleration
distinct URL을 통해 edge location에 업로드 후 전송하여 업로드 속도를 높일 수 있음.
https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html?region=리전origBucketName=버킷이름
으로 접속하면 속도 비교해볼 수 있음.
-10. DataSync Overview
(시험에 나오는 것만 간단히)
AWS DataSync는 온프레미스 스토리지 시스템과 AWS 스토리지 서비스 간, 그리고 여러 AWS 스토리지 서비스 간의 데이터 이동을 간소화, 자동화 및 가속화하는 온라인 데이터 전송 서비스 On-prem to AWS
- 대용량의 데이터를 on-premise에서 AWS로 이전할 때 사용
- NFS-나 SMB- 호환 가능한 파일에 사용
- hourly, daily, weekly replication 가능
- replication을 시작하려면 DataSync agent를 설치해야 함
- EFS to EFS 로 이전할 때에도 사용 가능
-11. CloudFront Overview
CDN - 유저에게 웹페이지나 웹 컨텐츠를 전달하는 분산 서버 시스템.
런던에 서버를 둔 웹사이트가 있다고 하면, CDN이 없다면 모든 리소스는 런던과 직접 연결해서 가져와야 함
Key Terminnology ⭐
- Edge Location - AWS Region/AZ와 별개로 컨텐츠가 캐싱되는 Location
- Origin - S3 버킷이나 EC2 인스턴스 등 origin location
- Distribution - CDN (Edge location의 집합 )
- Web Distribution - websites
- RTMP - Media Streaming
CDN에 캐싱된 리소스가 있는지 확인한 후 서버에서 가져옴.
이후에 다른 유저가 같은 리소스를 요청하면 더 빨리 가져올 수 있음
-
Edge location은 READ onl가 아니며 write도 할 수 있음!
-
TTL(Time To Live 만큼 동안 캐싱됨)
-
캐시된 object를 clear할 수 있지만(Invalidating cache) 요금을 내야 함 ⭐
CloudFront Lab
콘솔 메뉴 > CloudFront > Create Distribution > Web Distribution
(Origin Domain Name) 리소스 선택 (s3, ec2, elastic load balancer, route53 …)
(Origin Path) 리소스 내 특정 폴더 선택
(Restrict Bucket Access) If you want to require that users always access your Amazon S3 content using CloudFront URLs, not Amazon S3 URLs, click Yes. This is useful when you are using signed URLs or signed cookies to restrict access to your content. In the Help, see “Serving Private Content through CloudFront”.
(TTL) 저장할 시간
(Restrict Access Users) 미디어 회사인 경우, 과금된 유저만 동영상을 볼 수 있는 등 접근 제한이 생김. 이럴 때 사용 ⭐
만들어진 리소스에 접속해서 create invalidation으로 들어가면
Invalidate 하면 더이상 edge location에 넣지 않겠다는 것.
ex. 업데이트를 했는데 변경사항이 안보인다면 invalidate를 하는게 방법일수도
-12. CloudFront Signed URLs and Cookies
S3 Signed url vs. CloudFront signed url ❓
-
CloudFront - 경로에 대한 접근을 허용하는 것. Origin에 관계 없이 유효한 서명만 있다면 접근할 수 있음.
-
S3 - 생성할 때 사용자의 security credential을 활용하며 시간 제한이 있고, 사용할 HTTP method를 명시해야 함
CloudFront Signed URL vs. CloudFront Signed Cookies
- CloudFront Signed URL : 1file = 1 URL
- Signed Cookies : 1cookie = multiple files
Signed URL이나 signed cookie를 생성할 때에는 policy를 붙임.
policy : URL만료시간, IP range , Trusted signer (누가 Signed url을 생성할 수 있는지)
Signed URL을 생성하기 위해 CloudFront와 작용
-13. Snowball
petabyte단위의 transport solution 엣지컴퓨팅, 데이터 전송, 엣지 스토리지 디바이스
Snowball can Import to S3, Export from S3
‘AWS cloud로 대용량의 데이터를 전송하려 한다’ 하는 시나리오based문제가 나온다 ? => Snowball
-14. Storage Gateway ❓
클라우드 스토리지에 대한 온프레미스 액세스 권한을 제공하는 하이브리드 클라우드 스토리지 서비스
-
File Gateway (NFS &SMB) : app 서버의 데이터를 AWS로 올리는 방법. -> S3에 바로 저장
-
Volume Gateway(iSCSI)
- stored volumes : 전체 store가 S3에 저장됨
- cached volumes : 전체 store가 S3에 저장 & 자주쓰는거 캐싱
-
Tape Gateway :
-15. Athena vs. Machie
Athena -분석
- Interective query service. standard SQL을 이용해서 S3에 저장된 데이터를 분석
- 서버리스
- S3에 저장된 로그 데이터 분석에 많이 사용됨
Machie - 보안
- Security service. AI로 PII를 찾는 서비스
- 의심스러운 API에 대한 로그 분석에도 사용될 수 있음
- 대시보드, 리포트, 알람 등을 포함함
- PCI-DSS compliance와 ID theft를 방지하는데 적절