728x90
반응형

AWS 비용 관리

  1. default는 root계정을 통해서만 비용관리 가능

-> root 계정을 통해 IAM사용자에게 비용관련 권한을 Activate하면 IAM사용자도 비용관리 가능
2. Bills메뉴 : 비용이 어떤 기준으로 발생하는지? 어떤 서비스에서 얼만큼의 비용이 발생하는지 등의 비용 청구관련 정보 확인 가능
3. Budget메뉴 : 설정된 비용에 대한 한도가 도달했을 때 메일알림 설정 가능
4. Free tier 메뉴 : 무료서비스의 종류와 무료사용량 확인 가능

EC2(Elastic Compute Cloud) : Infrastructure as a Service, 서비스를 위한 인프라

  • 가상머신을 EC2에서 대여 -> EC2 인스턴스
  • 가상 드라이브에 데이터 저장 -> EBS
  • 부하분산 -> ELB (Elastic Load Balancer)
  • Auto Scaling 기능을 포함한 그룹 -> ASG (Auto-Scaling Group)

EC2에서 선택할 수 있는 것

  1. OS (리눅스, 윈도우, mac OS)
  2. CPU
  3. RAM
  4. Storage space (스토리지 공간) 여부
    1. ESB & EFS와 네트워크 연결
    2. 하드웨어 공간 내장 (EC2 Instance Store)
  5. 네트워크 종류(카드) (속도, public IP 등)
  6. 방화벽 설정
  7. User Data Script : 인스턴스 구성을 위한 부트스트랩 스크립트 (root 계정에서 실행, sudo 명령 필요)
    • 부트스트랩 스크립트 : 머신이 작동될 때 한번 실행되는 명령 (ex. 업데이트, 소프트웨어 설치 등)


  • EC2 유형




  • EC2 접근을 위한 SSH 활용을 위해서는 key pair를 생성해야 함

  • EC2 인스턴스가 재부팅 되면 public IP가 재할당됨 (private IP는 고정)

EC2 인스턴스 유형

  1. General Purpose (ex. t2.micro)
  • 웹서버, 코드 레포지토리 등에 활용
  • CPU, 메모리, 네트워킹 간의 균형도 잘 맞음

  1. Compute Optimized
  • 고성능의 컴퓨팅 작업이 필요할 때 활용 (고성능 CPU 활용)
  • Batch processing, machine learning, HPC(Hight performance computing) 등
  • 'C'로 시작하는 인스턴스 이름을 갖고 있음

  1. Memory Optimized
  • 많은 양의 데이터 처리가 필요할 경우 활용 (고성능/고용량의 RAM 활용)
  • 관계형 데이터베이스, 비정형 데이터의 실시간 처리 등
  • 'R'로 시작하는 인스턴스 이름을 갖고 있음 (X1, Z1도 있긴 함)

  1. Storage Optimized
  • 로컬 스토리지에서 대규모의 데이터에 접근할 때 적합

  • OLTP(High Frequency Online Transaction Processing), 관계형 데이터베이스, NoSQL, Redis

  • 'I', 'D', 'H1'으로 시작하는 인스턴스 이름을 갖고 있음 (X1, Z1도 있긴 함)

  • EC2 인스턴스 목록 : https://www.ec2instances.info/

EC2 네이밍 규칙

EX) m5.2xlarge

  1. m : instance class
  2. 5 : generation
  3. 2xlarge : size with in the instance class, CPU/메모리에 따라 달라짐

EC2 방화벽 (EC2 Security Group) : 보안그룹이 EC2 인스턴스에 들어오고 나가는 트래픽을 제어함 -> 규칙을 만들어 제어, IP로 대상or보안그룹 참조

  • 포트로의 접근을 통제
  • 인증된 IP주소의 범위를 확인
  • Inbound/Outbound 모두 통제
  • 보안그룹으로 연결하면 별도 ip제어는 필요하지 않음

Security Groups

  • 하나의 인스턴스가 여러개의 보안그룹을 가질 수 있고, 동시에 하나의 보안그룹이 여러개의 인스턴스를 가질 수 있음
  • Region과 VPC결합으로 통제 (지역이 전환되면 새 보안그룹을 생성하거나 VPC를 생성해야 함.)
  • EC2외부에서 실행됨
  • SSH 접근을 위한 보안그룹은 별도로 생성하는 것을 추천 -> SSH 접근이 복잡함
  • EC2 인스턴스로의 타임아웃 문제는 보안그룹 문제일 가능성이 큼 -> 타임아웃이 아닌 응답을 받았다면, 보안그룹 문제가 아님
  • default 규칙 : outbound, EC2 인스턴스에서 다른 ip로의 트래픽을 모두 허용, inbound, 다른 ip에서의 트래픽을 모두 차단

  • 보안그룹간 연결을 통해서 inbound 트래픽을 제어 -> Load Balancer 기능을 다룰 때 자주 언급됨.

  • SSH (Secure Shell) : 22번 포트, Linux 인스턴스에 로그인

  • FTP (File Transfer Protocol) : 21번 포트

  • SFTP (Secure File Transfer Protocol) : 22번 포트, SSH를 활용하여 파일을 업로드

  • HTTP : 80번 포트

  • HTTPS : 443번 포트

  • RDP (Remote Desktop Protocol) : 3389번 포트, 윈도우OS 인스턴스에 로그인할 때 활용

EC2 인스턴스에 접근하기 위한 방법

  • SSH : 관리자가 인스턴스에 접근하기 위한 방법 (CLI, SSH 명령어 활용 (ssh -i ec2-user@{ip}), default user name : ec2-user) -> Mac, Linux, 윈도우10이상 OS에서 활용 가능
  • 윈도우10 미만일 경우, Putty 활용 -> SSH와 동일, 모든 윈도우에 호환
  • EC2 Instance Connect : 관리자가 웹 브라우저를 통해 인스턴스에 접근하는 방법 (내부적으로 SSH 사용) -> 모든 OS에 호환




EC2 인스턴스에서 IAM role 실습

  • IAM ROLE : AWS 인스턴스에 의해 사용되도록 만들어진 role

  • EC2 Instance Connect에는 이미 AWS CLI가 설치되어 있음

  • EC2 instance의 Security 설정에서 IAM ROLE 할당 가능

  • 자격증명 (Credential)
    : access key나 id, pwd, region 등 각 계정에 대한 개인정보

  • aws configure : 자격증명(Credential) 정보 입력 (key, regin 이름 등) -> 해당 명령어로 EC2 인스턴스에 입력해두면, 해당 인스턴스에 접근할 수 있는 모든 사용자가 접근할 수 있어서 지양해야 함. -> IAM ROLE 할당을 통한 자격증명 제공 방식 권장

  • aws iam list-users : IAM으로의 접근 권한을 가진 IAM ROLE을 해당 인스턴스에 할당하면 사용 가능, iam user list를 반환 받을 수 있음 (IAM ROLE을 통해 자격증명(Credential) 제공)

EC2 인스턴스 구매 옵션

  1. On-Demand Instance : short workload, 예측할 수 없는 비용, 초당 비용 청구
  2. Reserved (1 & 3 years), On-Demand에 비해 할인 제공, 선결제, 인스턴스 타입/Region/Tenancy/OS 등을 미리 정할 수 있음, 사용량을 예측할 수 있을 때 권장, 팔 수도 있음
    1. Reserved Instances : long workloads
    2. Convertible Reserved Instances : 유연한 변경(인스턴스 타입/Region/Tenancy/OS 등)을 위함, 상대적으로 할인율 적음
  3. Saving Plans (1 & 3 years) : 달러 단위로 특정 사용량을 정하는 것, long workloads, 장기간 할인 가능, 한도를 넘어서면 On-Demand 가격 책정, 특정 인스턴스 패밀리와 region은 손실됨
  4. Spot Instances : short workloads, 값이 싸지만 언제든 인스턴스가 다운될 수도 있음 -> 다른 사용자에 의해서 등... 우선순위가 낮은 사용방식 (신뢰성 낮음), 가장 할인율 높음, 지불하려는 최대 가격을 정의하고 해당 가격을 초과할 경우 인스턴스가 제거됨, 중요한 작업이나 데이터베이스에는 적절하지 않음.
  5. Dedicated Hosts : 물리적 서버 전체를 예약을 통해 인스턴스 배치 제어, 다른 사용자가 해당 물리적 서버를 사용하지 못함, 기존의 서버에 연결된 소프트웨어 라이센스가 있거나 법규 준수 요건 등이 필요할 때 활용됨. (On-Demand or Reserved), 가장 비싼 옵션
  6. Dedicated Instances : 나의 인스턴스를 나만의 하드웨어에 갖게 됨 (Dedicated Hosts는 물리적 서버 자체에 대한 접근권을 갖게됨) 뭔차이?
  7. Capacity Reservations : 원하는 기간동안 특정 AZ(가용영역)에 On-Demand 인스턴스 용량을 예약할 수 있음

  • On-Demand




  • Reserved




  • Savings Plans




  • Spot Instances
  • 사용자가 정한 Spot 가격 기준 인스턴스 Up/Down 결정
  • Spot 가격은 계속 변동됨.
  • Spot 가격이 초과할 경우, 2분의 유예시간이 주어짐 (중지할 것인지 Down 시킬 것인지 결정 후 작업)
  • Spot Blocks : Spot 가격이 초과해도 AWS가 인스턴스를 회수하는 것을 원하지 않을 때 활용, 지정된 기간동안 해당 인스턴스 중지 (1~6시간), 드물게 회수되는 경우도 있음 -> 22년 12월 31에 없어짐
  • Use Case : 배치job, 데이터 분석, 장애 복원력이 뛰어난 workloads 등


  • Spot Request : Spot가격, 인스턴스 수, 사양, AMI, 요청 유형(일회성, 영구성) 등을 정하여 요청
    일회성 : 1회 요청하고 끝
    영구성 : 지속적 요청, spot가격이 올라가는 등의 사유로 인스턴스가 중지될 때 다시 요청하고 유효성이 확인되면 인스턴스 재실행 (Spot요청 활성화 상태) -> Spot 인스턴스를 완전히 내리려면, Spot 요청도 비활성화 상태로 만들어야 함.


  • Spot Fleets : Spot 인스턴스 세트(pool)를 정의하는 방법

  • Spot 가격에 맞게 적합한 인스턴스의 스펙(인스턴스 유형, OS, 가용영역)을 정함

  • Spot 가격에 도달하면 인스턴스 중지

  • Spot 인스턴스를 할당하는 전략을 정의해야 함.

    1. 최저 가격 : 인스턴스를 시작할 때 고려되는 기준, 해당 가격에 맞게 인스턴스를 정하고 시작함. -> workload가 매우 짧을 때 유용
    2. 스팟 인스턴스를 실행하는 방법 : 모든 pool에 spot 인스턴스 분산 -> 좋은 가용성, 긴 workload에 유리
    3. 용량 최적화 : 원하는 인스턴스 수에 맞는 최적의 용량을 가진 pool
    4. 가격 용량 최적화 : 사용 가능한 용량이 가장 큰 pool을 선택한 후에 그 중 가격이 가장 낮은 pool을 선택하는 전략 -> 대부분의 workload에 적합
  • summary : spot fleets을 사용하면 여러개의 시작pool과 여러 인스턴스 유형을 정의할 수 있음. 최저가 할인의 Spot Instance에서 최저가 전략 spot fleet을 사용하면 spot fleet에서 자동으로 가장 낮은 가격의 spot 인스턴스를 요청함 (사전에 인스턴스유형/용량 등 옵션을 사용자가 지정함)

  • 원하는 인스턴스 유형과 가용영역을 알고 있다면 spot fleet을 안써도 됨.


  • Dedicated Hosts -> 어려움... 재확인 필요




  • Dedicated Hosts vs Dedicated Instances




  • Capacity Reservations




  • Summary

반응형

'개발 > AWS' 카테고리의 다른 글

[AWS] Load Balancer  (0) 2024.05.06
[AWS] EC2 (3)  (0) 2024.05.03
[AWS] EC2 (2)  (1) 2024.04.30
[AWS] IAM 및 AWS CLI  (0) 2024.04.18
[AWS] AWS Region  (0) 2024.04.13
728x90
반응형




  • IAM : Identity and Access Management, Global
  • IAM 계정은 root 사용자이고, 계정을 만들 때에만 사용해야 함.
  • root 계정으로 동일 관리자 권한을 가진 사용자를 생성할 수 있음 => IAM 사용자
  • 사용자를 그룹으로 묶을 수도 있음
  • 그룹 내에 그룹이 배치될 수 없음
  • 사용자가 여러 그룹에 속할 수 있음


  • Json 문서 형태의 정책을 그룹이나 사용자에 적용할 수 있음 (어떤 작업, 어떤 서비스에 대한 권한을 설정)

  • 최소 권한의 원칙


  • 인라인 정책 : 그룹이 아닌 사용자에게 직접 부여하는 권한

  • 특정 사용자가 두 그룹 이상에 속해있을 경우, 두 그룹의 권한을 모두 상속 받음


  • aws console 내 사용자 -> 권한 탭에서 그룹 또는 인라인정책을 통해 부여받은 권한목록 확인 가능

  • 특정 권한을 선택하면 세부 권한 확인 가능, JSON 버튼을 누르면 위 사진처럼 JSON 포맷의 세부 권한정보를 확인할 수 있음

  • aws console 내 사용자 -> 그룹 탭에서 속해있는 그룹을 확인할 수 있고, 추가하거나 제거할 수도 있음.


  • 정책 구조

  1. Version : 정책의 버전 (날짜 형식)
  2. id : 식별자 (Optional)
  3. Statement : 실질적 정책 내용
    1. Sid : 정책 내용의 식별자 (Optional)
    2. Effect : 특정 API에 대한 접근을 허용할지 결정 (Allow/Deny)
    3. Principal : 특정 정책이 적용될 사용자, 계정, role로 구성
    4. Action : Effect에 의해 허용되거나 거부되는 API 호출 목록
    5. Resource : action이 적용될 resource 목록
    6. Condition : Statement가 언제 적용될지에 대한 조건 (Optional)


  • 그룹과 사용자들의 정보를 보호하는 방법
  1. 비밀번호 정책 정의 -> 복잡할 수록 보안이 강해짐 (ex. 비밀번호 패턴 설정, 만료기간, 변경요구, 이전 비밀번호 변경으로 제한 등)

  2. (시험) 다요소인증 MFA (Multi-Factor Authentication) : 비밀번호와 함께 사용하는 보안장치 (OTP 같은거라고 보면 됨)

    • 루트 계정, IAM계정은 반드시 보호 필요,
      ex. 로그인 시, 비밀번호 입력과 함께 MFA 토큰필요
    • MFA 옵션
    1. 가상 MFA 장치 (google auchentication), 여러개 토큰 지원 => 하나의 장치로 여러 사용자 이용 가능

    2. U2F 보안 키 : 물리적 키 (likes USB), 하나의 물리적 장치에서 관리하는 보안 키를 활용, 하나의 키로 여러 루트 계정과 IAM 사용자를 지원

    3. 하드웨어 키 팝 : U2F 보안키와 동일

    4. 미국 정부 클라우드인 AWS GovCloud 활용 시 필요



  • AWS에 접근하는 방법
  1. Console : password + MFA로 보호됨
  2. AWS CLI : 터미널에서 접근 access key로 보호됨
  3. AWS SDK : 애플리케이션 코드에서 접근, access key로 보호됨
    • Example : AWS CLI는 Python용 AWS SDK를 활용해 구축함.


  • AWS CLI : AWS public API에 직접 접근 가능, 명령어 조합의 스크립트를 작성하여 자동화도 가능

  • AWS CLI는 오픈소스로 GitHub에서 확인 가능


  • access key 생성 : AWS Console에서 생성 (암호 형태)

  1. Access Key ID ~= username (공유x)
  2. Secret Access Key ~= password (공유x)


  • AWS CLI 실습 in window
  1. aws CLI install windows 검색
  2. MSI 설치 프록그램을 통한 window에서의 AWS CLI 설치
  3. 프롬프트창에서 aws CLI 설치되었는지 확인 : aws --version 명령어


  • AWS CLI 실습 in mac OS
  1. install aws cli mac 검색
  2. pkg 설치 프로그램을 통한 mac에서의 AWS CLI 설치
  3. 터미널에서 aws CLI 설치되었는지 확인 : aws --version 명령어


  • AWS CLI 사용
  1. Access key는 사용자 -> Security Credentials에서 생성
  2. 터미널에서 aws configure 명령어를 입력하여 access key 입력창 출력
  3. aws 명령어를 입력하면 명령어에 맞는 응답을 JSON형태로 출력해줌 (ex. aws iam list-user : 내 계정내 모든 사용자 출력)
  4. aws console을 통해 부여받은 키에 해당하는 계정에 특정 권한을 제거할 경우, aws CLI에서도 동일하게 적용됨.


  • Cloud Shell : AWS에서 무료로 제공하는 터미널 서비스, 터미널 대신 AWS에 명령을 내릴 수 있음 (console 화면 우측 상단에 위치, 사용가능 Region 한정)

  • Cloud Shell은 공용 저장소 사용 -> 껐다 켜도 이전 터미널에서 생성한 파일이 남아있음 -> 로컬로 다운로드 하거나 로컬에서 업로드할 수도 있음

  • 터미널 서식변경도 가능

  • 멀티 터미널도 가능


  • IAM ROLE : AWS 인스턴스에 의해 사용되도록 만들어진 Role (ex. 특정 EC2 서비스가 타 서비스를 이용하기 위한 권한 집합, EC2 Instance Roles)


  • IAM Security Tools (기능이라 보면 될 듯)

  1. IAM Credentials Report (IAM account-level) : 특정 IAM 계정(ex. djeon)에 대한 사용자 목록과 그들의 자격증명(id, pw) 상태를 확인
  2. IAM Access Advisor (user-level) : 사용자(ex. aws-djeon-v1)에 부여된 권한과 마지막 접근 시간 확인 (권한 사용여부 확인을 통한 최소권한 원칙 준수)
반응형

'개발 > AWS' 카테고리의 다른 글

[AWS] Load Balancer  (0) 2024.05.06
[AWS] EC2 (3)  (0) 2024.05.03
[AWS] EC2 (2)  (1) 2024.04.30
[AWS] EC2 (1)  (0) 2024.04.29
[AWS] AWS Region  (0) 2024.04.13

+ Recent posts