IAM / AWS CLI / AWS Organizations
IAM
정책: 액세스 권한 (사용자, 그룹, 역할에 부여 가능)
역할: 정책과 연결되어야 사용 가능. 역할 부여 받을 대상 설정 가능
AWS IAM Identity Center
IAM 자격 증명 센터
여러 AWS 계정, AWS 애플리케이션 및 다른 SAML 사용 클라우드 애플리케이션에 대한 액세스 관리를 간소화
AWS CLI
AWS CLI를 사용하여 웹 사이트 콘텐츠를 업로드하면 콘텐츠를 쉽고 효율적으로 관리
AWS Organizations
여러 AWS 계정을 중앙에서 관리
aws:PrincipalOrgID: 조직 내의 계정에 해당하는 IAM 보안 주체만 리소스에 액세스
SCP: 서비스 제어 정책
- 조직의 모든 계정에 대해 사용 가능한 최대 권한을 중앙에서 제어
EC2
EC2
대상 추적 조정 정책(Target Tracking Policy): CPU 사용률에 따라 Auto Scaling 가능
예약 인스턴스
- 1년 또는 3년 단위 약정
온디맨드
- 예약 시 가용 영역 지정해야 함
- 중단할 수 없는 단기적이고 불규칙한 워크로드가 있는 애플리케이션에 적합
리전 간 Auto Scaling은 불가, 가용 영역 간은 가능
R5 인스턴스는 M5 인스턴스보다 메모리 집약적인 워크로드에 최적화
EC2 인스턴스에 CloudWatch 에이전트를 배포하면 애플리케이션 성능에 대한 중요한 통찰력을 제공할 수 있는 사용자 지정 애플리케이션 대기 시간 메트릭을 생성
절전 모드: 인스턴스 메모리의 콘텐츠가 Amazon Elastic Block Store(Amazon EBS) 루트 볼륨에 저장되고, 인스턴스가 다시 시작되면 인스턴스 메모리 콘텐츠가 다시 로드
세컨더리 탄력적 네트워크 인터페이스
- 분리하여 다른 EC2 인스턴스에 연결 가능
- 장애 발생하는 경우 트래픽을 대기 EC2 인스턴스로 보낼 수 있게 함
단일 AZ 내에서 인스턴스를 시작하고 클러스터 배치 그룹을 사용하면 네트워크 대기 시간이 가장 짧고 인스턴스 간 대역폭이 가장 높다.
영역 간 Auto Scaling은 AZ에서 인스턴스를 시작하여 데이터 전송 요금을 증가시킬 수 있고, 네트워크 처리량이 줄어들어 성능에 영향을 미칠 수 있다
보안 그룹
보안 그룹은 기본적으로 인바운드 트래픽에 관해서는 허용만 지정할 수 있고, 허용하지 않은 건 기본적으로 모두 차단
외부 인터넷->웹 애플리케이션으로의 액세스를 허용하려면 0.0.0.0/0으로부터 온 포트 443(HTTPS)를 허용
EC2 인스턴스 스토리지
EBS
개별 EC2 인스턴스용으로 설계된 블록 스토리지
단일 AZ 안에서만 접근 가능
동시 액세스를 제공하지 않는다
EBS 다중 연결을 사용하면 복제된 데이터 수정할 때 프로덕션 환경에 영향을 줌
EC2 인스턴스 스토어
EC2 인스턴스에 물리적으로 연결된 임시 스토리지 옵션
I/O 성능 향상에 사용 가능
중지하면 스토리지 손실 (장기 보관에 적합하지 않음)
버퍼, 캐시 등 임시 저장에 적합
EFS
확장 가능한 파일 스토리지 서비스
필요에 따라 확장할 수 있도록 구축된 완전 관리형, 가용성 및 내구성이 뛰어난 파일 시스템
다중 AZ에서도 접근 가능
기본적으로 Lustre 클라이언트 액세스 지원하지 않음
동시 액세스를 지원하지만 S3에 비해 높은 가격 (장기 보존에 효율적이지 않음)
고가용성 및 스케일링성
ELB
AWS에서 제공하는 로드밸런서 통칭
ALB
Application Load Balancer
- L7단의 로드 밸런서 지원 (HTTP/HTTPS)
- IP주소 + 포트번호 + 패킷 내용 보고 스위칭
- IP 주소 변동
- SSL 적용 가능 (L7단이라서)
ALB는 기본적으로 IP가 변경되므로 NLB를 앞에 둬서 고정 IP 적용이 가능하다
- 앞에 NLB를 두고 CloudWatch와 Lambda 함수를 이용해서 ALB의 IP가 변경되면 맞게 설정해줘야 함
리스너 규칙으로 쿼리 문자열 조건을 사용하여 쿼리 문자열의 키/값 페어 또는 값을 기반으로 요청을 라우팅하는 규칙을 구성할 수 있다 (HTTP > HTTPS 리디렉션 등)
ACM 인증서를 ALB에 연결하여 전송 중인 데이터 암호화 가능
ALB는 구성된 상태 확인 설정을 기반으로 EC2 인스턴스의 상태를 주기적으로 확인
Route 53에서 ALB로 트래픽을 라우팅하면 DNS 쿼리가 개별 인스턴스 대신 ALB의 IP 주소를 반환한다. 이를 통해 ALB는 정상 인스턴스에만 트래픽을 분산하여 비정상 인스턴스로 인한 시간 초과를 방지할 수 있다
NLB
Network Load Balancer
- L4단의 로드 밸런서 지원 (TCP/IP)
- IP + 포트번호 보고 스위칭
- 고정 IP 사용 가능
- SSL 적용이 인프라단에서 불가능 (프로토콜 구분할 수 없음)
단순한 라우팅이 필요하거나 트래픽이 극도로 많은 경우 NLB 사용이 적합
GWLB
GateWay Load Balancer
- 방화벽, 침입 탐지 및 방지 시스템, 심층 패킷 검사 시스템과 같은 가상 어플라이언스를 배포, 확장 및 관리
- Gateway Load Balancer는 Gateway Load Balancer 엔드포인트를 사용하여 VPC 경계 전체에서 트래픽을 안전하게 교환
Aurora / RDS / ElastiCache
Aurora
Global Aurora
- 다른 region으로 데이터 복제하는 데 1초 이하 소요
- AWS Region에 발생하는 재해에 대비 가능
Aurora는 기계 학습과 연동 가능
- SageMaker: any ML model
- Comprehend: 감정 분석
자동으로 3개의 AZ에 6개의 복제본 생성 (읽기 부하 분산 효과)
MySQL <-> Aurora migration
- 1GB 정도의 소규모 데이터베이스라면 mysqldump 사용
RDS
RDS
- MySQL, PostgreSQL, MariaDB, Oracle, MS SQL Server, Amazon Aurora 지원
- Oracle은 IAM을 이용한 웹서버 인증 지원하지 않음
읽기 전용 복제본
- 최대 15개
- DNS 이름 갖는 새로운 엔드포인트 추가됨 (다중 AZ는 SQL 연결 문자열 유지)
- 설정하면 분석 쿼리가 수행은 되지만 RDS DB에는 영향 미치지 않음
- 읽기 전용 복제본은 비동기 복제, 다중 AZ는 동기 복제
RDS Backup: 자동화된 백업, 수동 백업 모두 가능
- 사용 시간 정해져 있다면 스냅샷만 찍어 두고 나중에 복원해서 쓰는 것이 저렴함
Aurora Backup: RDS 백업과 다르게 비활성화 할 수 없음
RDS Proxy https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/rds-proxy.html
- 예기치 않은 데이터베이스 트래픽 급증 처리 가능
- 장애 조치 시간 최대 66%까지 감소 가능
- IAM 자격 증명 강제할 수 있음
- public access 절대 불가능 (VPC 통해 접근)
- 데이터베이스 연결을 최적화하고 읽기 성능을 개선하고 애플리케이션 아키텍처의 변경을 최소화하며 데이터베이스 읽기 성능 문제를 해결하기 위한 확장 가능하고 효율적인 솔루션
RDS는 기본적으로 Auto Scaling을 사용하지 않아 직접 켜줘야 함
장기 실행 트랜잭션 완료되도록 허용하면 읽기 전용 복제본으로 전환하는 동안 데이터 무결성과 일관성 유지에 도움이 된다
ElastiCache
ElastiCache
- 데이터를 캐시에 저장해서 RDS 데이터베이스 로드 줄일 수 있음
- 상태 데이터를 ElastiCache에 저장해서 애플리케이션을 stateless하게 함
- 사용자 인증 토큰, 세션 상태 등 세션 정보를 관리하는 세션 스토어로 사용하기에 적합
Redis vs Memcached
- 분산된 상태로, 데이터 삭제에 더 자유로운 경우에 memcached 사용
- Redis에서만 IAM 자격 증명 지원
ElastiCache와 읽기 전용 복제본은 읽기 스케일링에 도움이 됨
Redis용 Amazon ElastiCache를 세션 키에 대한 적절한 TTL과 함께 빠른 키-값 스토어로 사용하면 세션 정보를 관리할 수 있다
Route 53
Route 53
DNS: Domain Name System
Route 53
- Domain Registrar
- DNS 정의하고 라우팅 방법 정의
A: IPv4 - hostname
AAAA: IPv6 - hostname
CNAME: hostname - hostname
라우팅 정책
- Weighted: 특정 레코드에 가중치 부여 가능 (무작위 분산 보장하지 못함)
- Latency-based: 가장 가까운 리소스로 리다이렉트
- 장애 조치 라우팅: 기본 리소스 또는 위치를 사용할 수 없는 경우에만 트래픽을 백업 리소스 또는 보조 위치로 보내도록 설계
- 다중값: Route 53이 동일한 리소스에 대한 여러 정상 IP 주소로 DNS 쿼리에 응답하도록 허용
NS 레코드: 타사 레지스터
클래식 솔루션 아키텍처 사례
클래식 솔루션 아키텍처
Case 1.
- 사용자가 늘어나면 수직 확장: EC2 인스턴스 유형 변경
- 이후 사용자가 더 늘어나서 수평 확장을 하고 IP가 늘어나면 Route 53을 이용해서 URL 통일
- ELB 이용하고 사설 인스턴스는 숨어있도록 하고, Health Check 사용하면 트래픽 균형 가능, 다운타임 방지
Case 2.
- ElastiCache 이용하여 세션 ID를 통해 세션 관리
Case 3.
- Aurora: 더 확장성 있고 기록하기 좋음
- EBS volume에 이미지 저장
- EFS를 사용하여 여러 EC2에서 ENI를 거쳐 한 곳으로 접근 가능하게 함
애플리케이션 시작 빠르게 하는 방법
- Golden AMI: 애플리케이션, 종속성 등 사전에 설치하여 AMI 생성하여 더 빠르게 인스턴스 시작 가능
- Database Snapshot
- EBS Volume Snapshot
Elastic BeanStalk
- 애플리케이션 배포에 개발자 중심의 관점
- 환경, 버전, 구성 등 Beanstalk 구성 요소의 모음
- 애플리케이션 실행 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리
- 빈번한 기능 테스트 필요할 때 사용
- 용량 프로비저닝, 로드 밸런싱, 자동 확장에서 애플리케이션 상태 모니터링에 이르기까지 배포를 자동으로 처리
Amazon S3
Amazon S3
확장성이 뛰어나고 비용 효율적인 스토리지 서비스
대용량 데이터 저장에 적합, 높은 내구성, 가용성 및 성능
사용 사례
- 백업/스토리지로 사용
- 재해 방지를 위한 백업 용도
Bucket
- 파일은 버킷에 저장
- 버킷은 리전 수준에서 정의
Object
- key 필요 (접두사 + object 이름)
- 5GB 이상이면 멀티파트 업로드
보안
- 사용자 기반
- 자원 기반 (ACL : Accest Control List)
Bucket Policies
- json으로 관리
- IAM 정책 내의 명시적 부인이 S3 버킷 정책보다 우선
정적 웹사이트 호스팅
- 공개 읽기 활성화 하면 데이터 읽을 수 있음
-index.html 이용해서 메인 페이지 생성 가능
versioning
- 삭제 보호, 롤백 가능
복제
- CRR: cross regions
- SRR: same regions
S3 Standard
- 자주 접근하는 데이터
- 기본적으로 사용하는 스토리지 유형
S3 Infrequent Access
- 필요한 경우 빠르게 액세스해야 하는 경우
1. One-Zone IA
- 쉽게 재생성할 수 있는 경우
S3 Glacier Storage
- 스토리지 비용, 검색 비용
1. S3 Glacier Instant Retrieval
- 밀리초 이내에 액세스해야 하는 경우
2. S3 Glacier Flexible Retrieval
- 데이터 수신 옵션 설정 가능
- 최소 보관 기간 90일
3. S3 Glacier Deep Archive
- Standard: 12시간, Bulk: 48시간
- 최소 보관 기간 180일, 가장 저렴함
S3 Intelligent-Tiering
- 알아서 객체 이동해줘서 편하게 스토리지 관리 가능
- 액세스 빈도, 사용 패턴 모를 때 사용
- 액세스 패턴이 가변적이고 빠르게 변경되는 경우 장기 저장 위한 가장 효율적인 솔루션
Requester Pays
- 요청자가 요청 관련 비용 지불 (요청자가 익명이 아닌 AWS에서 인증 받은 사용자여야 함)
- 데이터를 공유하고 싶지만 데이터에 액세스하는 다른 사람과 관련된 요금을 부과하지 않으려면 버킷을 요청자 지불 버킷으로 구성
Event Notifications
- 원하는 만큼 이벤트 생성 가능
- 이벤트 작동하려면 IAM Permission 필요 (SNS Resource Policy 등)
성능 최적화
- Multi-Part upload: 5MB 이상에는 필수
Select & Glacier Select
- 필요한 데이터만 검색해서 속도 향상
Batch Operation
- 단일 요청으로 대량 작업 (메타데이터 수정, 암호화, 복제, 객체 복원 등)
- 진행 상황 모니터링, 보고서 생성 등 가능
Storage Lens
- 이상 징후 발견, 데이터 집계 등 가능
- 더이상 액세스하지 않거나 거의 액세스하지 않는 버킷 식별 가능
1. Summary Metrics
: 버킷, 접두사 식별
2. 비용 최적화 지표
3. Data-Protection Metrics
4. Access-managament Metrics
5 Event Metrics
6. Performance Metrics
7. Activity Metrics
Amazon S3 File Gateway
- 온프레미스 애플리케이션이 Amazon S3 클라우드 스토리지를 원활하게 사용할 수 있도록 하는 하이브리드 클라우드 스토리지 서비스
- S3 수명 주기 정책 지원
EC2 인스턴스가 S3 버킷에 액세스하려면 IAM 역할 부여
수정하거나 삭제할 수 없음 = S3 Object Lock.
객체 작업 및 버킷 수준 유효성 검사를 수행하려면 S3 배치 작업이 사용자를 대신하여 S3 객체 잠금을 호출할 수 있도록 IAM 역할의 s3:PutObjectLegalHold 및 s3:GetBucketObjectLockConfiguration가 필요
미리 서명된 URL을 사용하여 각 사용자의 브라우저에서 Amazon S3으로 이미지를 직접 업로드하도록 애플리케이션을 구성 - 애플리케이션 내 결합을 줄이고 웹 사이트 성능을 향상
CORS
- 인증된 GET 요청을 보내는 JavaScript 스크립트 포함할 수 있게 함
액세스를 조직 내 사용자로 제한하려면 조직ID를 참조하는 aws PrincipalOrgID를 버킷 정책에 추가한다.
S3 보안
암호화 Encryption
1. SSE Server-side Encryption
2. Client-Side Encryption
SSE-S3
- AWS에 의해 서버 측에서 암호화 (AES256)
- 기본적으로 활성화
SSE-KMS
- 키 관리 서비스로 키 직접 관리 (사용자가 접근 가능)
SSE-C
- Amazon S3 가 PUT 요청에 제공된 암호화 키를 사용하여 서버 측 객체를 암호화
S3 버킷에 저장할 때 암호화하면 SSE, 버킷으로 보내기 전에 암호화하면 CSE
S3에서 기본 암호화 설정을 활성화하면 새로 추가된 모든 객체가 자동으로 암호화
기존 객체를 암호화하기 위해 S3 Inventory 기능을 사용하여 암호화되지 않은 객체 목록을 생성할 수 있다
https://spin.atomicobject.com/2020/09/15/aws-s3-encrypt-existing-objects/
CloudFront / Global Accelerator
CloudFront
CDN: 컨텐츠 전송 네트워크
엣지 로케이션에 콘텐츠 캐싱해서 읽기 성능 향상
콘텐츠 분산되어있어서 디도스 방지 가능
특정 지역의 S3에 있는 리소스를 전세계의 엣지 로케이션으로 분산 가능
CRR과의 차이
- 복제를 원하는 각 리전에 설정되어 있어야 함
- 파일이 캐싱되지 않고 실시간으로 업데이트 됨
EC2 인스턴스에 CloudFront 통해 접근
- 둘다 퍼블릭으로 설정되어있어야 함
- 엣지 로케이션의 공용 IP들이 접근할 수 있도록 보안 그룹 설정해야 함
ALB와 CloudFront
- EC2 인스턴스는 프라이빗 설정이어도 됨
- 공용 IP가 로드 밸런서의 보안 그룹 정책에 허용되어있어야 함
지리적 제한
- 승인 국가, 금지 국가 목록 정의 가능
Pricing
- 엣지 로케이션마다 데이터 전송 비용 다름
Price Classes
1. Price Class All
- 모든 리전
2. Price Class 100
2. Price Class 200
사용자 지정 오리진 사용해서 배포 생성 가능
DDoS 대처하는 데 사용할 수 있음 (엣지 로케이션에서 작동하는 AWS 서비스를 활용하여 알려진 모든 인프라 계층 공격에 대한 포괄적인 가용성 보호를 구축)
필드 레벨 암호화
- 추가 보안 레이어 추가하여 특정 데이터 보호, 특정 애플리케이션만 접근 허용
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/field-levelencryption.html
Lambda@Edge를 생성하면 들어오는 요청의 User-Agent 헤더를 검사하고 사용 중인 장치 유형을 확인
여러 원본을 사용할 수 있다 (e.g., S3 버킷과 ALB를 모두 오리진으로 포함 가능)
Global Accelerator
AWS의 글로벌 네트워크 인프라를 통해 사용자 트래픽을 전송해서 사용자 성능 개선
사용자와 가장 가까운 위치의 엔드포인트로 트래픽 자동으로 재 라우팅
TCP/UDP 사용하므로 애플리케이션 계층에는 부적합
대기 시간이 가장 짧은 리전으로 라우팅 + UDP 사용 = AWS Global Accelerator
애플리케이션 상태를 모니터링하고, 트래픽을 정상 엔드포인트로 라우팅하고, 지연 시간 문제를 해결하면서 사용자 경험을 최적화
AWS 스토리지 추가 기능
Amazon FSx
Windows File Server + AWS로 이동 = Amazon FSx File Gateway
FSx for Windows File Server 파일 시스템을 온프레미스 Active Directory에 결합하면 회사에서 기존 Active Directory 그룹을 사용하여 AWS로 이동한 후 파일 공유, 폴더 및 파일에 대한 액세스를 제한할 수 있다
Amazon FSx for Lustre는 밀리초 미만의 지연 시간과 최대 6GBps의 처리량을 위해 SSD 스토리지를 사용하고 Amazon S3에서 데이터를 가져오고 내보낼 수 있다
AWS Storage Gateway
온프레미스와 클라우드 데이터 연결
AWS Storage Gateway는 온프레미스 소프트웨어 어플라이언스와 클라우드 기반 스토리지를 연결하여 조직의 온프레미스 IT 환경과 AWS 스토리지 인프라 간의 원활하고 안전한 통합을 제공하는 서비스
SMB: Server Message Block
- windows 파일 공유 기본값
- 온프레미스-AWS 간 SMB 지원하는 것은 주로 Amazon FSx for Windows
NFS: Network File System
- Linux 배포에서 기본 파일 공유 프로토콜
AWS Storage Gateway Volume Gateway
- 캐싱된 볼륨 구성: 최근에 액세스한 데이터를 온프레미스에 저장하고 나머지 데이터는 Amazon S3에 저장
Snowball
AWS Snowball 및 AWS Snowball Edge는 기존 저장소에서 네트워크 대역폭이 충분하지 않을 때, 대용량 데이터 세트를 클라우드로 이전하는데 도움
Snowball 장치는 80TB(72TB), Snowball Edge는 100TB(83TB)까지 한번에 이동 가능
Snowball Edge Storage Optimized는 수십 테라바이트(TB)~페타바이트(PB)의 고용량 데이터를 안전하고 신속하게 AWS로 전송해야 할 때 선택할 수 있는 가장 적합한 옵션
DataSync
데이터 동기화 > 대용량의 데이터 이동
일정 지정하여 실행 가능
네트워크 용량 부족하면 snowcone 사용
데이터 전송 중에 사용되는 대역폭 양을 제어할 수 있다
디커플링 애플리케이션: SQS, SNS, Kinesis, Active MQ
SQS
SQS: 대기 서비스
- 대기열에는 메시지 포함됨
Amazon SQS - Standard Queue
- 애플리케이션 분리에 사용됨
- 무제한 처리량 (원하는 만큼 대기열에 메시지 포함 가능)
- 최대 14일 메시지 보관
- 10밀리초 이내의 수신 시간
- 중복 메시지 있을 수 있음
SQS와 ASG
- 대기열의 길이를 지표로 설정해서 CloudWatch Alarm이 울리면 scale
- SQS를 버퍼로 사용해서 모든 트랜잭션이 DB에 쓰이도록 할 수 있음
메시지 가시성 시간 초과
- 기본 30초
- 그 시간이 경과된 후에도 메시지가 처리되지 않으면 다른 소비자가 그 메시지 수신하게 됨
- 그러면 여러 수신자가 수신해서 여러 번 처리될 수도 있음
- 그걸 방지하기 위해 ChangeMessageVisibility API를 불러서 처리하는데 시간이 더 필요함을 알림
- 중복 읽기를 방지하려면 가시성 시간 초과를 늘려야 함
Long Polling
- 대기열이 비어 있으면 기다림 - API 호출 숫자 줄이고 지연 시간도 줄임
FIFO Queue
- 표준 대기열보다 순서 보장
- 처리량에 제한 있음
- 정확히 한 번만 보내서 중복 제거
- 중복 메시지가 유입되지 않도록 설계됨 (생산자가 중복을 유입하는 것이 아니면)
솔루션 분리-SQS
병목 현상 방지 가능
대량의 데이터 처리 + 확장성 개선 = SQS queue + Lambda
Dead Letter Queue 등 다양한 옵션으로 메시지 처리가 실패했을 경우 해당 메시지를 보관했다가 다시 처리할 수 있게끔 하는 기능을 제공
SNS
Simple Notificaion Service
- 메시지를 여러 수신자에게 보내야 할 때
- Pub/Sub
- 구독자가 해당 주제에 전송된 메시지를 수신하는 방식
- 이메일, 모바일 메시지, 데이터 송신 등
- 구독자: SQS, HTTP Endpoint, Lambda, Kinesis Data Firehose
- Kinesis Data Streams는 구독자로 지원하지 않음
SNS + SQS : Fan Out
- SNS 토픽에 메시지를 한 번 보내고 SQS 대기열을 토픽에 구독시킴
- SQS 큐가 SNS가 쓰기를 허용하게 정책 설정해야 함
- 다른 리전으로 송신 가능
- 서로 다른 곳으로 동일한 메시지 보낼 때 사용함
FIFO Topic
- 제한된 처리량
- 정렬, 중복 제거
Message Filtering
- 토픽 구독자들에게 전송할 메시지 필터링
Kinesis
실시간 데이터를 쉽게 수집하고 처리하여 분석
- 애플리케이션 로그, 웹사이트 클릭 스트림, IoT 원격 측정 데이터 등
- 데이터가 빠르게 실시간으로 생성된다면 모두 실시간 데이터 스트림
Kinesis Data Stream
- 데이터 스트림 수집하여 처리
- 생성 시 스트림을 몇 개의 샤드로 구성할지 프로비저닝 해야 함 (온디맨드 모드에서는 안 해도 됨)
- 파티션 키에 의해 어느 샤드로 보내질지 정해짐
- 데이터가 들어오면 삭제할 수 없음
- 용량에 따라 비용 지불
- 데이터 재생 가능
- 트래픽이 증가하여 ProvisionedThroughputExceededException 예외 발생하면 샤드 추가
- 특수 요구에 맞춰 스트리밍 데이터를 처리 또는 분석하는 사용자 지정 애플리케이션을 구축 가능
Kinesis Data Firehose
- 데이터 스트림을 AWS 내부나 외부의 데이터 저장소로 읽어들임
- 생산자로부터 데이터 가져올 수 있음
- 수신자: S3, Redshift(S3에서 복사됨), OpenSearch, HTTP가 있는 자체 API(사용자 지정 수신처)
- 자동 스케일, 서버리스(관리 필요 없음)
- 거의 실시간
- 데이터 재생 불가능
- S3와 Redshift로 로딩하려면 DataStreams + FireHose
Kinesis Data Analytics
- SQL 언어나 Apache Flink 활용하여 데이터 스트림 분석
Amazon MQ
RabbitMQ와 ActiveMQ 두 가지 기술을 위한 관리형 메시지 브로커 서비스
AWS에서 메시지 브로커를 손쉽게 생성, 운영할 수 있게 한다
AMQP, STOMP, MQTT 및 WebSocket 등을 비롯한 메시징 프로토콜을 지원
컨테이너: ECS, EKS, Fargate
ECS
Amazon Elastic Container Service
Docker와 Kubernetes를 모두 지원하는 완전관리형 컨테이너 오케스트레이션 서비스
사용자는 Amazon ECS에서 AWS Fargate를 사용하여 애플리케이션을 컨테이너에 패키징하고 CPU 및 메모리 요구 사항을 지정하기만 하면 되므로 최소한의 코드 변경과 최소한의 개발 노력으로 애플리케이션을 AWS로 마이그레이션
EKS
Amazon Elastic Kubernetes Service
IAM 역할을 EKS 포드에 연결하면 포드가 DynamoDB에 액세스하는 데 필요한 권한을 부여할 수 있다.
Fargate
Amazon EC2 인스턴스의 서버나 클러스터를 관리할 필요 없이 컨테이너를 실행하기 위해 Amazon ECS에 사용할 수 있는 기술
서버리스: Lambda, DynamoDB, API Gateway
Lambda
API의 데이터베이스로 DynamoDB 사용 가능
Lambda는 웹 애플리케이션 개발자의 요구 사항을 충족하는 포괄적인 스토리지 옵션을 제공
Lambda 서버리스는 EC2 api 게이트웨이 솔루션보다 확장 가능하고 탄력적
DynamoDB
비관계형 데이터베이스
계층적 구조로 데이터 저장 가능
주문형 백업 기능 : 전체 백업 생성하고 특정 시점 복구
AWS Backup을 사용하여 DynamoDB 온디맨드 백업을 자동으로 예약, 복사, 태그 지정 및 수명 주기를 수행
VPC Gateway Endpoint
- VPC내에 있는 프라이빗 서브넷의 EC2 인스턴스와 DynamoDB 간 가장 안전한 AWS 네트워크 통신
- 퍼블릭 인터넷에 노출되지 않고 DynamoDB에 액세스 가능
DAX (DynamoDB Accelerator)
- DynamoDB와 DAX가 결합되면 성능을 한 단계 업그레이드하여 읽기 중심의 워크로드에서 초당 수백만 개의 요청에도 마이크로초의 응답 시간을 지원
Amazon DynamoDB TTL(Time to Live)
- 항목별 타임스탬프를 정의하여 항목이 더 이상 필요하지 않은 시기를 결정
- 지정된 타임스탬프의 날짜 및 시간 직후 DynamoDB는 쓰기 처리량을 소모하지 않고 테이블에서 항목을 삭제
DocumentDB
MongoDB와 호환
API Gateway
AWS의 서버리스 서비스로 REST API 생성
클라이언트가 직접 소통
Lambda와 통합하면 완전 서버리스 애플리케이션 구축하여 인프라 관리 필요 없음
백엔드의 HTTP 엔드포인트 노출시킬 수 있음
직접 SQS에 메시지 게시할 수 있음
RESTful API = API Gateway 사용
Amazon Cognito
사용자에게 웹 및 모바일 앱과 상호작용할 수 있는 자격 증명 부여
AWS 외부의 모르는 사용자에게 자격 증명을 부여해서 사용자 인식(Cognito)
CUP Cognito User Pools
- 웹 및 모바일 앱을 대상으로 하는 서버리스 사용자 데이터베이스
- API Gateway
데이터 & 분석
Athena
Amazon Athena는 표준 SQL을 사용하여 Amazon S3(Amazon Simple Storage Service)에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스
Athena가 사용 가능한 모든 리전에서 Amazon Athena를 사용하여 표준 SQL로 Amazon S3 인벤토리를 쿼리
Amazon Athena를 사용하면 JSON 인코딩 값을 구문 분석하고, JSON에서 데이터를 추출하고, 값을 검색하고, JSON 배열의 길이와 크기를 찾을 수 있다
RedShift
클라우드에서 완벽하게 관리되는 페타바이트 규모의 데이터 웨어하우스 서비스
OpenSearch
ElasticSearch의 후속작
검색에 사용되지만 분석적 쿼리에도 사용 가능
최소한의 운영 헤드: 기본적으로 CloudWatch Logs + OpenSearch
QuickSight
데이터 시각화
기본적으로 Quicksight의 대시보드는 공유되지 않고 소유자만 접근할 수 있지만 게시 후에는 다른 사용자 또는 그룹과 공유 가능
Glue
추출, 변환, 로드 서비스 관리
분석 위해 데이터 준비하고 변환
데이터를 Parquet(열 기반 데이터 형식)으로 변환
Parquet 형식으로 변환하면 Athena 분석에 용이함
이미 처리된 데이터 재처리 방지하려면 북마크 사용
머신 러닝
Rekognition
이미지나 비디오 분석 서비스
적절하거나 원치 않거나 불쾌감을 주는 콘텐츠를 감지
애플리케이션에 강력한 시각 분석 기능을 쉽게 추가
Transcribe
https://aws.amazon.com/ko/transcribe/faqs/
고객이 손쉽게 음성을 텍스트로 변환할 수 있게 해주는 AWS 서비스
음성을 텍스트로 쉽게 변환할 수 있는 자동 음성 인식(ASR) 서비스
Comprehend Medical
의료용 텍스트 식별 서비스
HIPAA 적격 자연어 처리(NLP) 서비스로, 미리 학습된 기계 학습을 사용하여 처방전, 처치, 진단과 같은 의료 텍스트에서 의료 데이터를 파악하고 추출
SageMaker
기계 학습 모델 서비스
Textract
스캔한 문서에서 텍스트, 필기 및 데이터를 자동으로 추출하는 기계 학습(ML) 서비스입니다. 단순한 광학 문자 인식(OCR) 이상으로 양식 및 표의 데이터를 식별하고 이해하며 추출
모니터링 및 감사
CloudWatch
CloudWatch 지표(Metrics)
- AWS 모든 서비스에 대한 지표 제공
- 지표가 많아지면 대시보드 만들어서 한 번에 확인
- 사용자 지정 지표 만들 수 있음
- 외부로 실시간 스트리밍 가능 (Amazon Kinesis Data Firehose)
Dimension: 측정 기준
CloudWatch Logs
- 애플리케이션 로그 저장
- 기본적으로 모든 로그는 암호화
- CreateExportTask: S3로 로그 내보내기
- RDP 또는 SSH 액세스 감지 가능
CloudWatch Logs Insights
- 실시간 엔진이 아니라 쿼리 엔진이므로 과거의 데이터만 쿼리
CloudWatch Agent
- EC2 인스턴스에서 작동해서 CloudWatch logs로 로그 보냄
- EC2에 로그 보낼 수 있게 하는 IAM Role 필요
CloudWatch 경보(Alarm)
- metric에서 트리거된 알림
- 타겟: EC2 인스턴스의 중지, 재기동, 회복 등 / Auto Scaling / SNS 서비스에 알림 전송
Composite Alarms
- 다수의 메트릭 사용 가능
- alarm noise 줄일 수 있음
CloudWatch Container Insights
- 컨테이너로부터 지표, 로그 추출해서 CloudWatch에 대시보드 생성
- ECS, EKS, Kubernetes on EC2
CloudWatch Lambda Insights
- 람다에서 실행되는 서버리스 애플리케이션을 위한 모니터링 솔루션
- 람다 함수 옆에서 실행하며 모니터링
CloudWatch Contributor Insights
- 시스템 성능에 영향을 미치는 대상 찾을 수 있음 (e. g., 불량 호스트)
CloudWatch Application Insights
- 대시보드 생성해서 잠재적인 문제 보여줌
AWS 계정이 없는 사람과 대시보드 공유 가능 (이메일 주소 지정, 전체 공개, SSO 공급자 지정)
EventBridge
자체 애플리케이션, 통합 SaaS(Software as a Service) 애플리케이션 및 AWS 서비스의 데이터를 사용하여 애플리케이션을 쉽게 함께 연결할 수 있게 해주는 서버리스 이벤트 버스
Cron 작업 예약 가능(스크립트 예약)
필터 설정 가능
이벤트 아카이빙 및 아카이빙 된 이벤트 재생 가능
리소스 기반 정책
- 다른 리전이나 계정에서의 이벤트 허용 설정
이벤트 발생은 감지할 수 있지만 이벤트 발생 전에는 감지할 수 없음
CloudTrail
AWS 계정의 거버넌스, 컴플라이언스, 감사 실현
기본값으로 활성화
Management Events
- 리소스에 대해 수행된 작업 나타냄
- 리소스나 AWS 계정 수정하는 경우
Data Events
- 기본값으로 로깅되지 않음
- S3 객체 수준 활동
CloudTrail Insights Events
- 활성화 후 비용 지불 필요
- 관리 이벤트 계속적으로 분석
AWS Config
AWS 리소스 구성을 측정, 감사 및 평가
무단 구성 변경 식별하고 수정 가능
제대로 태그가 지정되지 않은 리소스 찾을 수 있음
만료 날짜 가까워지는 인증서 확인 가능
보안 및 암호화
KMS
KMS 키로 암호화한 개체 업로드하려면 키와 S3 버킷이 동일한 리전에 있어야 함
감사 목적으로 암호화 키 사용 기록해야 할 때 KMS 사용 (이전 암호화 자료 영구적으로 저장)
키 순환 활성화/비활성화 선택 가능
SSM Parameter Store
구성 및 암호를 위한 보안 스토리지
KMS 서비스를 이용해 암호를 만들 수 있다
서버리스
데이터베이스 사용자 이름과 암호를 AWS 시스템 관리자 파라미터 스토어에 안전하게 저장하고 EC2 인스턴스에서 실행 중인 애플리케이션이 액세스할 수 있도록 하려면 솔루션스 아키텍트는 파라미터 스토어 파라미터에 대한 읽기 액세스 권한이 있는 IAM 역할을 생성하고 파라미터를 암호화하는 데 사용되는 AWS KMS 키에 대한 암호 해독 액세스를 허용해야 한다. 그런 다음 IAM 역할을 EC2 인스턴스에 할당해야 합니다.
ASM
AWS Secrets Manager
- 자격증명을 저장해두고 관리할 수 있는 서비스
- 애플리케이션, 서비스 및 IT 리소스에 대한 액세스를 보호하는 데 도움이 되는 보안 정보 관리 서비스
- 보안 암호에 대한 자동 교체를 설정 (Lambda)
KMS키는 S3 버킷에 저장하는 것이 아니라 Secrets Manager 등을 이용해 관리
다중 리전 애플리케이션에 필수 리전의 복제된 암호에 대한 액세스 권한을 부여하고 Secrets Manager를 사용하여 복제본이 기본 암호와 동기화된 상태를 유지 가능
애플리케이션에 자격증명 하드코딩 안 될 때 사용
AWS Network Firewall
VPC 경계에서 네트워크 트래픽 필터링 가능, 검사와 필터링을 모두 지원한다
WAF
애플리케이션 가용성에 영향을 미치거나 보안을 손상시키거나 과도한 리소스를 소비할 수 있는 일반적인 웹 익스플로잇으로부터 웹 애플리케이션을 쉽게 보호할 수 있게 해주는 관리형 서비스
사전 구성된 규칙 세트를 제공하고 사용자 지정 규칙 생성을 허용하여 XSS 및 SQL 주입과 같은 일반적인 취약성으로부터 보호
Web Application Firewall
- 7계층: HTTP 취약점 공격 막아줌
- ALB, API Gateway, CloudFront, AppSync GraphQL API, Cognito User Pool에 배포 가능
(NLB에는 WAF 배포할 수 없음)
- 배포 후에 ACL(Web Access Control List)와 규칙 정의해야 함
- 웹 ACL 규칙 정의하므로 리소스별 보호 구성에 적절
AWS Shield
디도스 공격으로부터 스스로를 보호
AWS Shield Advanced
- EC2, ELB, CloudFront, Global Accelerator, Route 53 보호 가능
- 자동으로 WAF 규칙 생성, 평가, 배포
Firewall Manager
모든 계정의 방화벽 규칙 관리
WAF 규칙이나 Shield Advanced 설정 가능 (여러 계정이나 리소스에 한 번에)
정책은 리전 수준에서 생성
Amazon Inspector
호스트 수준 취약성 평가 (콘텐츠 스캔 아님!!)
Amazon Macie
PII와 같은 민감한 데이터를 자동으로 검색, 분류 및 보호하는 관리형 서비스
기계 학습 및 패턴 일치를 사용하여 Amazon S3에 저장된 중요한 데이터를 검색하고 보호하는 완전 관리형 데이터 보안 및 데이터 개인 정보 보호 서비스
네트워킹
VPC
VPC-S3 간 인터넷을 통하지 않는 연결 = S3 VPC Gateway Endpoint
VPC 엔드포인트 사용하면 공용 인터넷 대신 사설 네트워크 사용하여 AWS 서비스에 연결 가능
VPC 피어링 연결 (무료)
- 사용자가 프라이빗 IP 주소를 사용하여 트래픽을 라우팅할 수 있도록 하는 두 VPC 간의 네트워킹 연결
- ElastiCache 클러스터의 보안 그룹에서 인바운드 규칙을 구성 (비용 발생)
Bastion Host
퍼블릭 서브넷에 있는 EC2 인스턴스(배스천 호스트)로 프라이빗 서브넷의 EC2 인스턴스에 액세스
SSH를 배스천 호스트에 연결하고 그 배스천 호스트가 SSH를 프라이빗 서브넷의 EC2 인스턴스에 연결
배스천 호스트는 반드시 퍼블릭 서브넷에
보안 그룹이 반드시 인터넷 액세스를 허용해야 함 (보안 그룹 제한해서 특정 IP만 오게)
NAT Instance (outdated)
NAT: 네트워크 주소 변환
공용 서브넷에서 실행되어야 함
NAT Gateway
AWS의 관리형 NAT 인스턴스
다른 서브넷에서 액세스할 때 도움
경로: 사설 서브넷 > NATGW > 인터넷 게이트웨이
연결 위해 보안 그룹 관리 필요 없음
각 가용 영역의 퍼블릭 서브넷마다 NAT 게이트웨이를 두어야 함.
- 가용 영역 독립적 아키텍처를 생성하려면 각 가용 영역에 NAT 게이트웨이를 생성하고 리소스가 동일한 가용 영역에서 NAT 게이트웨이를 사용하도록 라우팅을 구성
프라이빗 서브넷의 인스턴스는 퍼블릭 NAT 게이트웨이를 통해 인터넷에 연결
Transit Gateway
VPC 여러 개를 전이적으로 연결해서 피어링 필요 없게 함
라우팅 테이블 생성해서 누구와 통신할지 제한 가능
AWS에서 유일하게 IP 멀티캐스트 지원
Site-to-Site VPN 연결 대역폭을 ECMP를 사용해 늘릴 수 있다
(ECMP: Equal-cost multi path routing - 여러 최적 경로를 통해 패킷 전달)
재해 복구 및 마이그레이션
AWS Backup
백업 프로세스를 간소화하고 백업을 다른 리전으로 자동 복사하여 EC2 인스턴스 및 RDS 데이터베이스에 대한 별도의 백업 프로세스 관리와 관련된 수동 작업 및 운영 복잡성을 줄인다
백업 작업 및 수명 주기 정책 관리 가능
기타 서비스
CloudFormation
템플릿에 설명된 리소스를 프로비저닝하고 구성 (수동으로 AWS 리소스 구성할 필요가 없다)
인프라 배포 자동화
Amazon Pinpoint
확장 가능한 양방향 인바운드 및 아웃바운드 마케팅 커뮤니케이션 서비스
이메일, SMS, 푸시 알림, 음성, 인앱 메시지 송신 가능 (답장 받을 수 있음)
SNS나 SES에서는 직접 메시지의 대상, 내용, 일정 관리해야 함
AWS Cost Explorer
비용과 사용량을 보고 분석
기본 그래프, Cost Explorer 비용 및 사용량 보고서 또는 Cost Explorer RI 보고서를 사용하여 사용량 및 비용을 탐색
Amazon Appflow
Salesforce, SAP, Zendesk, Slack 및 ServiceNow와 같은 SaaS(Software-as-a-Service) 애플리케이션과 Amazon S3 및 Amazon Redshift와 같은 AWS 서비스 간에 데이터를 안전하게 전송할 수 있는 완전 관리형 통합 서비스 (운영 오버헤드 적음)
AWS Trusted Advisor
높은 수준의 계정에 대한 평가 제공
비용 최적화, 성능, 운영 우수성 등 점검
중요한 포트:
- FTP: 21
- SSH: 22
- SFTP: 22 (SSH와 같음)
- HTTP: 80
- HTTPS: 443
vs RDS 데이터베이스 포트:
- PostgreSQL: 5432
- MySQL: 3306
- Oracle RDS: 1521
- MSSQL Server: 1433
- MariaDB: 3306 (MySQL과 같음)
- Aurora: 5432 (PostgreSQL와 호환될 경우) 또는 3306 (MySQL과 호환될 경우)
'Hello, World!' 카테고리의 다른 글
[VSCode] UI Guide로 코드 관계 보기 설정 (0) | 2024.08.23 |
---|---|
AWS Certified Solutions Architect - Associate (SAA-C03) 합격 후기 (1) | 2024.08.19 |
웹사이트 tls 적용 버전 확인 방법 (0) | 2024.05.29 |
그가 미친 단 하나의 문제, 골드바흐의 추측 (1) | 2024.04.27 |
데이터 천재들은 어떻게 기획하고 분석할까? (0) | 2024.03.10 |