우주먼지
Published 2022. 9. 22. 07:47
AWS Memo Ops/AWS

AWS Account : roaldhkdrnr05@gmail.com 

IAM : Identify Acces Management

AWS Regions
- AWS Availability Zones(AZ) (At Least 2 Data Center)


AWS Data Centers
AWS Edge Locations / Points of Presence

{
    "Version": "2012-10-17",
    "ID": "S3-Account-Permissions",        <- optinal
    "Statement": [                           <- required , can be one or multiple ones
        {
            "Sid": "1",                          <- Statement ID
            "Effect": "Allow",                <- Allow or Deny ★
            "Principal" : {  <- accounts/user/role 정책이 적용될 대상 ★
                "AWS": ["arn:aws:iam::123456789012:root"]  <- 루트계정에게 허용
            },  <-
            "Action": [  <- 수행될 API 호출 목록(verb 항목) ★
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": ["arn:aws:s3:::mybucket/*"]  <- 조치가 적용될 대상(resource 항목) ★
        }
    ]
}  

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

MFA ★ = password you know + security device you own
- Virtual MFA device : Google Authenticator (only 1 device) , Authy (Multiple device)
- Universal 2nd Factor (USF) Security Key : Yubikey (3rd party , Multiple root and IAM users using a single secrity key)
- Harware key Fob MFA Device : Provided by Gemalto (3rd party) 
- Hardware key Fob MFA Device for AWS GovCloud (US , 3rd party)

MFA 설정
my acconut - my security credentials - multi-factor authentication (Activate MFA) - Virture MFA device (phone) - Authy 다운 https://aws.amazon.com/iam/features/mfa/?audit=2019q1
- QR코드 스캔 - 계정생성 - 코드2개입력

MFA , CLI

SDK(Software Developer Kit) : for code=protected by access keys (어플리케이션 코드 내에서 AWS에서 API를 호출할때마다 사용)
- Language-specific APIs (set of libraries)
- Embedded within your application
- Supports
  - SKDs : (JavaScript , Java , Python , PHP , .Net , Ruby , Go , Nodejs , C++)
  - Mobile SDKs : (Android , iOS , ... )
  - IoT Device SDKs (Embedded C , Arduino , ... )
Example : AWS CLI is built on AWS SDK for Python


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AWS CLI for Windows Install
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-windows.html  (AWS CLI Version 2 다운)
- cmd - aws --version

AWS CLI for Linux 
(최신버전 설치)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
(특정 버전 설치)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Access Key 생성
iam - user - security credentials - create access key
키 저장 -> cmd - aws configure (로그인) - regions : ap-northeast-2
aws iam list-users

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AWS CloudShell ( ap-northeast-1(도쿄) 로 전환후 사용가능 )

aws --version
aws iam list-users --region

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Create Role]
ex) EC2 - lambda 함수

IAM - role - create role - AWS Service - EC2 - IAM RO 권한선택 - 태그설정X Next - roleName설정 - 완료

[IAM Security Tools]
- IAM Credentials Report (account-level)
- IAM Access Advisor (user-level)

IAM - Credential Report - Download Report - 각종 내역 확인가능
IAM - User - Access Advisor (특정 사용자 감사)

IAM 에서 사용자에게 사용자계정 할당
유저를 그룹에 할당 - 그룹에 권한 추가 - IAM Role - Strong Password Policy - MFA 사용 - Access Key 사용 (CLI / SDK) - IAM Credential Report / Access Analyz - Never share IAM User & Access Keys

Users 생성
그룹에 넣기
Policies 생성
Roles (EC2 할당)
MFA 생성
Access Key 생성
IAM Credential Report & IAM Access Advisor

Quiz

AWS Bugget Setup - create bugget

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[ECS Basics]
- 가상머신 대여
- 가상드라이브 & EBS볼륨에 데이터 저장
- 엘라스틱 로드밸런서 (ELB)
- 오토스케일링 그룹(ASG) 사용하여 서비스 확장

[EC2 sizing]
- CPU
- RAM
- Storage space
  - Network-attached (EBS & EFS)
  - hardware (EC2 Instance Store)
- Network Card : sped of the card , Public IP address
- Firewall rules : security group
- Bootstrap script (configure at first launch) : EC2 User Data (웹 서버 구성)

{EC2 instance tyes]
- t2.micro : 1 / 1 vCPU,RAM , storage: EBS , Network성능 : low&moderate
- t2.xlarge : 4 / 16 vCPU,RAM , storage: EBS , Network성능 : moderate
- c5d.4xlarge : 16 / 32 vCPU,RAM , storage: SSD , Network성능 : 10G , EBS bandwidth : 4750
- r5.16xlarge : 64 / 512 vCPU,RAM , storage: EBS , Network성능 : 20G , EBS bandwidth : 13600
- m5.8xlarge : 32 / 128 vCPU,RAM , storage: EBS , Network성능 : 10G , EBS bandwidth : 6800

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Launch EC2 Instance]
EC2 - instance - Select AMI - Select instance type(t2.micro) - detalis (User data)

#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "

Hello World from $(hostname -f)

" > /var/www/html/index.html

- storage (delete on termination) - security group (add 80,httpd)

Security Group
inbound 차단
outbound 허용
보안그룹끼리 연결가능

ssh : ec2-user 로 로그인 - sudo su 로 root 전환 - 키파일 권한 0400으로 수정
윈도우ssh : pem파일 우클릭 - 보안 - 고급보안설정 - 사용자 제거

[EC2 Instance Connect] needed port=22   ★ aws configure 명령은 절대 쓰지말자 ★

[EC2 Instance roles (IAM role 사용)]
ec2 - instance 선택 - action - security - modify IAM role ★ IAM role을 추가함으로 인해 자격증명 생성 ★

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

EC2 On demand
- pay for what you use - billing per second , after the first minute
- All other operationg systems - billing per hour
- Has the Highest cost but no upfront payment
- No long-term commitment
- Recommended for short-term and un-interrupted workloads

EC2 reserved instance (예약 인스턴스) : Minimum 1 year , 3가지 유형의 인스턴스
- Up to 75% discount compared to On-demand
- Reservation period : 1 year = + discount    |   3 years = +++ discount
- Reserved instances : ling workloads
- convertible Reserved Instances : long workloads with flexible instances
- Scheduled Reserved Instances : example - every Thursday between 3 and 6 pm

Spot Instances : short workloads , cheap , can lose instances (less reliable)
- can get a discount of up to 90% compared to On-demand
- Not suitable for critical jobs ror databases

★스팟 집합= 스팟인스턴스 + 온디맨스 인스턴스 의 집합 , 이를통해 가장 저렴한 가격으로 스핏 인스턴스 자동요청

Dedicated hosts : book an entire physical server , control instance placement
★ 전용 호스트 , 전용 인스턴스 차이 꼭 알아두기 ★

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Spot Instance] ★ 시험 ★
배치작업,데이터분석,장애에 탄력적인 워크로드
비용 유예 - 설정된 가격보다 높아지면 인스턴스 회수
스팟 인스턴스 종료법 : persistent request 취소 - 실행중인 인스턴스 종료 

Spot Fleets ★ 알아보기 ★
- 여러 시작 pool을 정의 할수 있음 , 여러 인스턴스 유형으로
- set of Spot Instances + (optional) On-Demand instance
- spot fleet이 예산 limit에 도달하면 인스턴스 시작이 중지됨
- 그래서 전략을 정의 
  - lowestPrice 
  - diversified(distributed across all pools : greate for availability , long workloads)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

EC2 elastic IP : 고정 Public IP 설정

EC2 Placement Groups
- Cluster - cluster instances into a low-latency group in a single Availability Zone (고성능 네트워크) ★
    - 하나라도 실패하면 전체 인스턴스가 실패 (대신빠름)
- spread - spreads instances across underlying hardware (max 7 instance per group per AZ) - critical applications
    - 고가용성과 같은의미 , AZ 1개당 인스턴스 7개로 제한          (고가용성 ★)
- partition - spread instances across many different partitions
    - AZ 1개당 인스턴그 7개로 제한 , 파티션=AWS의 랙
    - 인스턴스가 어떤 파티션에 있는지 알려면 메타데이터 서비스 사용

[Elastic Network Interfaces = ENI] 특정 AZ에 바인딩  , 다른 AZ의 인스턴스에 연결 불가능 ★
- The ENI can have Primary private IPv4 , one or more secondary IPv4 / one Public IPv4
- One or more Security Groups
- A mac adress

instance - network interfaces - create - AZ선택 (ap-northeast-2) - action - attach
https://aws.amazon.com/blogs/aws/new-elastic-network-interfaces-in-the-virtual  <- ENI Details

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[EC2 Hibernate]
- Ram의 전체상태가 root EBS Volume에 파일형태로 Dump됨
- The root EBS volume must be encrypted ★
- Supported instance families : C3, C4, C5, M3, M4, M5, R3, R4 ,R5
- instance Ram size bust be less than 150GB
- bare betal instance 에는 아직 지원안함
- Available for On-Demand and Reserved Instances  ★
- AN instance cannot be hibernated more than 60 days

instance 생성시 enable hibernate - root volume encrption (alias/aws/ebs)
uptime 으로 가동시간 중지확인(중지되면안됨)

[EBS]
- EBS = Elastic Block Store (Network Drive)
- EBS를 사용하는이유 : 인스턴스를 terminate 시켜도 데이터를 유지할수 있음
- 특정 AZ에 바인딩, 한번에 하나의 인스턴스에만 마운트 가능
- 인스턴스에서 분리가능 -> 다른 인스턴스에 적재가능
- 종료시 삭제 옵션 ★


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[EC2 Nitro] ★시험에 나옴
- 차세대 EC2 인스턴스
- 더나은 성능 (네트워킹,고성능 컴퓨팅 및 ipv6 지원 , 더빠른 EBS 볼륨
- 기본보안 향상 , 여러가지 백엔드 개선사항
- 증가된 IOPS 작업성능   


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[EC2 Instance Storage Section]
- EBS 볼륨을 추가하여 인스턴스에 붙일수 있음.
- Instance 선택 - Storage - 블록디바이스 선택 - 볼륨 생성

[EBS Snapshot]
- 인스턴스에 볼륨을 연결하고 볼륨을 가져와서 스냅샷 생성 가능
- 다른 AZ로 EBS볼륨 스냅샷 restore 가능
- EC2 - EBS - Volumes - Action (Create Snapshot , Create Volume)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[AMI (Amazon Machine Image)] 도커허브 이미지 같은 기능
- EC2 인스턴스의 사용자지정
- 자체 소프트웨어 구성, 운영체재 정의 , 모든 모니터링 도구 설정
- 자체 AMI 생성시 더 빠른 부팅속도와 구성시간, 설치하려는 모든 소프트웨어가 EC2 인스턴스에 AMI를통해 사전 패키징 됨
- 그후 지역 전체에 복사 가능
- AWS Parketplace AMI 에서 타인의 AMI 사용 가능

* EC2 인스턴스의 AMI 프로세스 = 인스턴스 시작 - 사용자 지정 - 데이터 무결성 확인을 위해 인스턴스 중지 후 AMI 빌드 - 백그라운드 EBS스냅샷 생성됨 - 다른 AMI에서 인스턴스 시작 가능

Create Instance -> Amazon2 -> t2.micro -> User data(html index미작성,httpd만 설치) 입력 -> 기존 보안그룹선택 -> 기존키페어 -> 인스턴스 시작
Instance 우클릭 -> image and templates (create image) -> create AMI 
Create Instance -> My AMI -> t2.micro -> Userdata(html index만 작성) 입력  echo "

Hello World from $(hostname -f)

" > /var/www/html/index.html
(인스턴스를 스냅샷찍는거랑 똑같다고 보면 됨)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[EC2 Instance Store]
- 더 나은 I/O성능
- 매우 높은 디스크 성능
- 주의할점 : 인스턴스 종료하거나 스토어가있는 스토리지 손실
- 단기보관 임시 콘텐츠에 적합
- i3.large*
- 고성능 하드웨어 볼륨 연결

[EBS Volume Type] 루트 볼륨 유형은 삭제되고 EBS 볼륨 유형은 삭제안됨
- gp2/gp3 : 범용SSD볼륨 / 가격,성능 균형 / 다양한 워크로드용 / 대기시간이 짧은 효율적인 비용의 스토리지 
               / 가상데스크탑 , 개발 및 테스트환경 크기는 1GB~16TB 까지 다양
    / gp3 은 최소 3000 IOPS & 125MB/s 처리량 제공  //  독립적인 IOPS 16000 & 최대처리량 1000MB/s
    / gp2는 서로 연결 / gp3는 연결되지않고 독립동작

- io1/io2 : 최고성능 SSD, 미션크리티컬 , 짧은대기시간 및 높은 워크로드 처리량 , io1/io2 선택시 최신세대 선택하는게 좋음
  4~16TB 사이 / Nitro EC2의 경오 최대 IOPS 64000 , Nitro가아닌경우 최대 32000 IOPS
  [io2 Block Express] (4GB - 64TB) : 최대 256000 IOPS , 1GB당 IOPS비율 = 1:1000
  - support EBS Multi-attach
★           - io2 Muiti attach 의 파일시스템은 매우 특정한 유형의 워크로드의 경우 그 특정 유형의 EBS볼륨에만 해당됨
    파일시스템이 XFS나 ex4,etc 가 아닌 특별한 파일시스템이어야함

-------------------------부팅볼륨 사용불가 ↓ ------------------------------------------------

- st1 (최대16TB) : 저비용 HDD / 자주 액세스하는 잡약적 워크로드 처리용 / 처리량 최적화 (빅데이터에 적합) 
        / 데이터 웨어하우징 및 로그처리 초당500MB / 500 IOPS

- sc1 (최대16TB) : 최저비용 HDD / 덜 액세스하는 워크로드용 / 아카이브 데이터용에 적합
    최대 250MB/s , 250 IOPS

- EBS 볼륨 정의 요인 : IOPS , 크기
- EC2 인스턴스의 경우 gp2/gp3 , io1/io2 만 부팅볼륨으로 사용가능, 이는 루트 OS가 실행될 위치를 위미

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[EBS Multi Attach]
- 동일한 AZ 내에서만 Multi-attach 가능
- 높은 어플리케이션 가용성이 필요한경우 (클러스티링된 Linux 어플리케이션)
- 동일한 볼륨에 대한 동시 쓰기 작업 관리


[EBS Encription]
- 볼륨내에서 암호화된 저장 데이터를 가져옴, 모든스냅샷 보호, 스냅샷에서 생성된 모든볼륨 암호화 , 인스턴스간 이동중인 모든데이터 암호화
- 지연시간에 따른 영향이 매우 적기때문에 MKS의 키 활용하므로 AED-256 사용
- 암호화되지않은 스냅샷을 복사할때 암호화를 활성화
- 암호화되지않은 EBS 볼륨을 암호화하는방법 : 볼륨의 EBS 스냅샷생성 -> 복사기능을 사용하여 EBS 스냅샷 암호화 -> 스냅샷에서 새 EBS 볼륨 생성 - 해당 볼륨 암호화
- EC2 -> Create Volume -> Ecription Option not checked -> 만들어진 볼륨 우클릭-스냅샷생성 -> 스냅샷탭 -> 우클릭 복사 -> 스냅샷 암호화
  암호호된 스냅샷 우클릭 볼륨생성 -> 볼륨 들어가보면 암호화되있음 (KMS로)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

[EFS]  (Linux Only)
- Managed NFS & Network File System
- EBS와 차이점 = 다중 AZ 영역 배치 가능
- 매우 비싼편이며 마운트가능 확장가능 gp2드라이브의 약 3배 , but 사용한만큼 지불이기떄문에 EBS보다 쌀 수도있음
- 보안그룹과 연결, 각 다른 AZ에 동일하게 NFS로 마운트 , 모든 인스턴스는 동일한파일에 액세스가능
- 웹서비스 , 데이터공유 , wordpress 사이트 , NFSv4.1 버전 사용
- EFS는 Linux 기반 AMI 에서만 작동 , 보안그룹을 사용해야함
- EFS 암호화 = 미사용 KMS 키 사용가능
- POSIX 파일시스템에만 사용가능 , 파일시스템 자동확장 , 종량제이며 용량계획이 없음 / 파일시스템 petabyte 규모로 성장가능
- 최대 10GB/s 처리가능 / 수천개의 NFS 클라이언트 동시지원 가능 , 고성능
- ★ Performance mode (Set at EFS creaton time)
- web서버나 범용 EFS, 많은 작은파일 , 빅데이터 , 미디어 처리에 적합

- ★ Throughtput mode
- 1TB 스토리지에 대해 초당 50MB/s & 최대 100MB/s  //  더높은 처리량을  원하면 더작은 크기의 EFS파일 시스템 사용
- 파일시스템의 크기에 따라 처리량이 증가하기 때문에 일반적으로 프로비저닝 처리량 모드로 이동 가능 , 이를통해 처리량 설정 가능 , 스토리지 크기에 상관없이
   - Provisioned : 매우높은 처리량을 필요로 하면 아주 작은 파일시스템을 가져야함

- ★ Storage tier (파일의 수명 주기 관리 기능)
- 30일후에 새 계층으로 이동
- 표준은 자주 액세스하는 파일

- ★ Infrequent access (EFS-IA) 저비용 계층
- 액세스가 드문 파일 검색(비용발생)
- EFS_IA 라고도 함

[EFS Hands ON] ★
Infrequent Access ( 자주 액세스하지 않는 스토리지 클래스 ) = EFS IA 스토리지 클래스 사용하는게 비용효율
EFS - Create File System - Customize - 수명주기선택 - Network Access 탭 -> 가용AZ 선택(보안그룹 만들기)
인스턴스 생성 -> 다른 AZ에 생성 - 보안그룹 새로 생성 -> 만들어진 인스턴스 우클릭 수정 - 인스턴스 디테일 -  edit - 다른 AZ선택후 만들기
서로 다른 AZ인스턴스 각각 SSH 연결 - EFS -> attach -> 
[sudo] install amazon-efs-utils -> mkdir efs -> mount -t efs -o tls [EFS이름]:/ efs
만들어진 보안그룹의 인바운드 허용 - 보안그룹 우클릭 - 수정 - NFS - source보안그룹(인스턴스만들떄 만든거)

[EBS vs EFS]
EBS
- 한개의 AZ에만 할당
- 다른 AZ로 넘길려면 스냅샷 - restore 스냅샷 
- 인스턴스를 종료하면 볼륨 삭제됨

EFS
- 탄력적 파일시스템
- OS = 리눅스만 사용가능
- EFS에서 사용한만큼만 비용청구

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Scalability & High Availability]

Scalability
- 수직적 확장성
  - 인스턴스의 크기 (t2.micro -> 52.large)
  - 비분산 시스템에 일반적 (ex : DB,RDS,ElastiCache)

- 수평적 확장성 (elasticity)
  - Distributed system (common for web application)
 
High Availability
- 일반적으로 수평적 확장 사용
- for Load Balancer multi AZ

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Elastic Load Balancer]

- 다중 백엔드로 수신될 트래픽을 전달할 서버들의 합집합
- 여러 다운스트림 인스턴스의 단앨 액세스지점(DNS)를 Expose gka
- SSL 종료 제공
- Intergration with EC2 offerings / services (ex : Auto Scaling Groups, Amazon ECS, AWS Certificate Manager(ACM), CloudWatch, Route 53, AWS WAF, AWS Global Accelerator

[Helath Check]
- ELB ---- Helath Check -----> EC2 Instance

[4 Kind of Manage of Elastic Load Balancer]
* Some Load Balancers can be setup as *internal* or *external* ELBs

Classic Load Balancer (CLB) 2009
- HTTP,HTTPS,TCP,SSL(Secure TCP)
- Not Use
- Helath Checks are TCP or HTTP based
- HTTP Listener -> CLB
- 내부적으로 CLB -> Traffic Redirecting
- 인스턴스 생성 -> 로드밸런서 생성(CLB) -> 로드밸런서용 보안그룹 생성 -> 

Application Load Balancer (ALB) 2016
- HTTP,HTTPS,WebSocket

Network Load Balancer (NLB) 2017
- TCP,TLS (Secure TCP),UDP

Gateway Load Balancer (GWLB) 2020
- 네트워크계층에서 동작
- common use

[Security Group for Load Balancer]
- EC2가 로드밸런서에서 오는 직접오는 트래픽을 허용해야함 (source가 IP가 아닌 Security Group으로 설정) 
  -> Helath Check (4523) -> 인스턴스 선택 -> 생성 (규칙 수정하는 방법 -> 규칙삭제 후 "source"가 CLB 보안그룹인 새 규칙을 생성해야함)

-- 76 ALB

ALB (application load balancer) 
- Layer7 (HTTP)
- 여러시스템, 여러HTTP 응용 프로그램에 로드밸런싱 (대상 그룹)
- 동일 인스턴스 내의 여러 애플리케이션에 로드밸런싱 허용
- 컨테이너 , ECS , HTTP/2 , Websocker , Redirection 지원
- 경로 라우팅
- 호출되는 HTTP 요청에서 X-Forwarded-for (IP) , Port(port) , Proto(Protocol) 을 봐야 인스턴스에서 클라이언트 IP를 알수 있다

-- ALB hands on

'Ops > AWS' 카테고리의 다른 글

[CI/CD with AWS] - Deploy Client to S3 Bucket  (0) 2022.12.02
[CI/CD with AWS] - Deploy Server  (0) 2022.12.02
Amazon Web Service (AWS) Deployment  (2) 2022.12.02
AWS CloudWatch Custom Metric  (0) 2022.09.22
AWS 기본개념  (0) 2022.08.01
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그