실습으로 배우는 AWS 핵심 서비스 강의를 보고

Hyun·2023년 9월 4일
0

공부한거 정리

목록 보기
15/20

실습으로 배우는 AWS 핵심 서비스 강의를 보고

  • 강의를 보며 중요하다고 생각되는 내용들을 정리하였다.

  • 호눅스 짱


정리한 Chapter

  • AWS Global Infrastructure
  • IAM
  • IAM Role
  • S3
  • EC2
  • VPC
  • RDS

AWS Global Infrastructure

서울 Regions

  • ap-northeast-2

  • 4개의 AZ로 구성되어 있다. (Availability Zones)

    • ap-northeast-2a

    • ap-northeast-2b

    • ap-northeast-2c

    • ap-northeast-2d


IAM

MFA

  • Root account 는 MFA 등을 이용해 이중화를 하는 것이 안전

  • MFA 적용하기

Authenticator 앱을 설치한 후, QR코드를 스캔하여 MFA를 추가한다.

MFA 적용 후, Authenticator 앱의 MFA 코드를 입력하여 Root account 로그인을 진행한다.


  • MFA 삭제하기

    • 핸드폰 교환 시, 반드시 MFA를 해제해야 한다.


IAM 사용자 추가하기

  • 사용자 그룹 생성

그룹 이름과 그룹에 부여할 권한을 설정한다.


  • 사용자 생성

  • 자동 생성된 암호 체크
  • 로그인 시 새 암호 생성 체크 해제
    • 번거롭다.

그룹에 사용자 추가

csv 파일은 사용자 이름, 암호, 콘솔 로그인 URL로 이루어져 있다.

콘솔 로그인 URL로 들어가서, 사용자 이름과 암호를 입력하면 IAM 계정으로 로그인한다.


IAM Role

  • 특정 개체에게 리소스의 접근 권한을 부여

    • IAM 사용자, AWS 서비스, 다른 계정 등
  • Short term credential

  • AWS 서비스나 응용프로그램에서 AWS 리소스에 일시적으로 접근 권한을 얻기 위해 사용


ARN

  • Amazon Resource Name

  • 아마존에서 리소스를 유일하게 식별할 수 있는 구분자

  • S3 는 region, account-id 없이 식별 가능하기에 생략되었다.
    • S3 는 버킷이름이 전세계에서 유일하므로, 이름으로 식별 가능

Switch Role 만들기

  • 이를 통해 다른 AWS 계정에게 역할 (AWS 서비스 접근 권한)을 부여할 수 있다.

Switch Role 은 다른 AWS 계정이 사용할 수 있는 역할이다.

부여하고 싶은 권한을 설정한다.

역할이 생성됐다.

다음 빨간 밑줄 부분을 수정하여, 특정 계정에게만 Switch Role을 부여할 수 있다.

lukee1 IAM 계정에 Switch Role 을 부여

원래 lukee1 계정은 IAM 접근권한이 없다.

앞서 만들어준 역할명을 입력하고 역할 전환을 수행한다.

역할을 사용하여 IAM 접근권한을 얻었다.

다시 전환을 눌러 다시 사용자 계정으로 돌아갈 수 있다.

  • 만약 앞서 역할을 사용할 수 있도록 설정한 lukee1 이 아니라 다른 계정으로 역할을 사용할 수 없다.
  • 다음은 lukee2 사용자 계정이다.

AWS CLI 사용하기

  • 터미널을 이용해 AWS 서비스들을 사용할 수 있다.

  • IAM 계정을 AWS CLI를 통해 사용하기

    다음 빨간 밑줄 링크로 들어가 다음의 명령어들을 실행

AWS CLI 가 제대로 설치되었음을 확인

액세스 키를 만들면, AWS CLI를 사용해 AWS 계정에 액세스 할 수 있다.

액세스 키 ID와 액세스 키 비밀번호가 들어있는 csv 파일을 다운로드한다.

aws configure 입력 후, 액세스 키 ID와 비밀번호, region, data format 을 설정한다.

.aws 폴더 안에 configcredentials 파일이 생긴걸 확인할 수 있다.


  • 새로운 profile (역할) 추가하기

--profile profile이름 입력 후, region 과 dataformat 만 설정한다.

이후 config 파일에 role_arn = 역할 ARNsource_profile = default 를 추가로 입력해준다.

  • aws iam list-users 입력 시, IAM 권한이 없어 AccessDenied 가 발생
  • aws iam list-users --profile iamhyun 입력 시, IAM 권한을 가진 역할로 명령을 내리기 때문에 IAM 계정 정보들을 가져올 수 있다.

S3

  • 객체 스토리지

    • 객체 (파일) 저장소

    • 파일 업로드, 다운로드, 검색 가능

    • 객체들은 고유한 URL을 가진다.

  • 다양한 인증과 권한 부여 제공

  • Region 기반 서비스

    • 매우 안전하다.
  • static web page 기능 지원

  • 버저닝 기능 사용 가능

  • 다양한 요금 옵션 존재

  • 버킷의 이름은 전 세계에서 유일해야 한다.


간단한 기능

  • 버킷 만들기

버킷 이름은 전 세계에서 유일해야 한다.


  • 업로드


  • 다운로드


  • 복사


권한 제어

  • ACL

    • Access Control List

    • 객체마다 권한 제어 가능

권한이 없어 URL로 접속하여 볼 수 없다.

버킷의 퍼블릭 액세스 차단을 전부 해제

버킷의 ACL을 활성화

퍼블릭 액세스를 허용해주려는 객체의 ACL 편집

URL 접속하여 객체를 눈으로 볼 수 있다.


  • Bucket Policy

    • 버킷별로 세부적으로 제어 가능

퍼블릭 액세스를 허용해주려는 prefix (폴더) public/

ARN = S3 ARN + 퍼블릭 액세스를 허용해주려는 prefix/*

복사

붙여넣기


  • IAM 을 이용한 제어

    • IAM 사용자에게 버킷 접근 권한 부여
  • Presigned URL

    • URL을 이용해 임시적으로 권한을 부여

CLI 로 S3 사용

  • 기본 기능

  • aws s3 mb s3://버킷이름 ➔ 버킷 생성
  • aws s3 ls ➔ 버킷 리스트 확인

aws s3 cp 로컬파일 s3://버킷이름/경로 ➔ 로컬파일을 버킷/경로에 업로드

aws s3 cp s3://버킷이름/파일 로컬경로 ➔ 버킷파일을 로컬경로에 다운로드

aws s3 rm s3://버킷이름/파일 ➔ 버킷파일을 삭제


  • 폴더 동기화

aws s3 sync 로컬경로 s3://버킷이름/경로 ➔ 로컬경로 파일들과 같게 버킷파일들을 맞춘다. (버킷 동기화)


  • acl 편집 (특정 객체의 퍼블릭 액세스 허용)

  • aws s3api put-object-acl --bucket 버킷이름 --key 객체명 --acl public-read
  • 버킷에 앞서한 ACL 설정들을 허용해주어야 제대로 동작한다.

  • static web hosting

버킷내의 모든 객체들의 퍼블릭 액세스 허용

해당 링크로 정적 웹페이지에 접속할 수 있다.


EC2

  • Elastic Computing Cloud

  • AZ 기반 서비스

    • 고가용성을 위해서는 Multi AZ 를 이용해야 한다.

      • 둘 이상의 AZ를 활용해 서비스 구축

      • ELB (Elastic Load Balancer) 를 이용해 두개 이상의 서버를 연결

  • 용어 정리

    • EC2: CPU에 해당하는 서버

    • EBS (Elastic Block Storage)

      • EC2 의 블록 저장장치 (SSD)

      • AZ 서비스

      • EBS Snapshot = EBS 백업 데이터

    • VPC (Virtual Private Cloud)

      • EC2 를 포함하는 사설 네트워크 망

      • 리전 서비스

    • Subnet

      • VPC의 하위망

      • EC2 는 Subnet 에 위치한다.

      • AZ 서비스


    • AMI (Amazone Machine Image)

      • EC2 인스턴스 백업 이미지

      • AMI를 이용해 EC2를 시작할 수 있다.


EC2 인스턴스 생성

SSD 용량은 최대 30GB 까지 가능


SSH 접속하기

다운받은 .pem key 의 읽기 권한을 나에게만 부여한다.

  • 나/그룹/전체

ssh -i pem키 호스트명@공개IP 로 원격접속


탄력적 IP 설정하기

  • EC2를 재시작해도 IP가 바뀌지 않는다.

  • 고정 IP

  • 사용중이지 않을 경우 과금된다.

    • 사용하지 않으면 릴리스 할 것


EBS 스냅샷 생성하기

  • 간단하게 EBS 데이터를 백업

  • 스냅샷은 S3 에 저장된다.

    • 리전 서비스

    • 다른 AZ로 복사가능

  • EC2를 정지하고 스냅샷을 생성하는 것이 좋다.

스냅샷은 S3에 저장된다.

현재 인스턴스의 EBS는 -2c AZ 에 존재

  • 스냅샷에서 EBS 를 생성
  • EBS 를 -2a AZ에 생성


AMI 생성하기

  • EC2 의 백업 이미지

  • EBS 스냅샷 + 메타 데이터로 구성

  • AMI를 이용해 EC2를 다른 AZ로 옮길 수 있다.

현재 EC2 에 awesome.txt 생성

AMI를 생성하면 스냅샷도 자동으로 생성된다.

현재 인스턴스는 -2c AZ에 존재

-2a AZ에 인스턴스 생성

AMI 로 만든 EC2 에 접속해보면 앞서 만든 awesome.txt 가 그대로 있다.


EC2 Role 사용하기

  • EC2 인스턴스가 다른 AWS 리소스를 제어할 때 사용하는 IAM Role

  • aws configure 로 액세스 키를 설정하는 것보다 안전하다.

EC2 내에서 액세스키를 설정하지 않았으므로 aws s3 ls 를 사용할 수 없다.

  • 리전과 데이터 형식만 설정하였다.

EC2가 사용할 EC2 Role 생성

권한 추가

EC2 Role 생성


  • EC2와 IAM Role을 연결하기 위해선, developer 사용자 그룹에 추가적인 권한(정책)이 필요하다.
    • developer 사용자 그룹은 EC2와 IAM Role 을 연결할 수 있는 권한이 없다.

정책을 JSON으로 직접 만든다.

정책 생성

정책을 developer 사용자 그룹에 추가


  • 이제 developer 그룹의 사용자들은 EC2 Role을 EC2 인스턴스에 연결할 수 있다.

인스턴스 프로파일 ARN이 생겼음을 확인

aws s3 ls 명령어를 EC2 내부에서 수행할 수 있다.


VPC

  • Amazon Virtual Private Cloud

  • AWS의 가상 사설 네트워크

  • VPC와 Subnet 의 Prefix 범위는 16 ~ 28


VPC 만들기

Prefix: 16


서브넷 만들기

  • Public 서브넷

    • 인터넷 세상에 공개된 서브넷

    • 웹 서버, WAS 등이 위치

  • Private 서브넷

    • 인터넷과의 직접적인 연결이 막힌 서브넷

    • DB가 위치


앞서 만든 VPC 에 서브넷 생성

  • Prefix 24
  • VPC Prefix 의 부분집합이어야 한다.

  • 프리티어 인스턴스는 a, c AZ 서브넷에만 위치할 수 있다.

인터넷 게이트웨이 추가

  • IGW 를 VPC 에 연결해야 VPC에서 인터넷을 사용할 수 있다.


서브넷과 라우팅 테이블 연결

  • 서브넷을 인터넷과 연결하기 위해서는 라우팅 규칙 필요

  • 라우팅 테이블을 생성한 뒤, 지정된 서브넷과 연결한다.

    • 특별히 설정하지 않는다면, 기본 라우팅 테이블이 서브넷에 연결된다.
  • Public 서브넷 - 라우팅 테이블 연결 실습

기본 라우팅 테이블에 연결된 Public 서브넷은 SSH 접속이 제대로 되지 않는다.

  • 인터넷 연결이 안되어있다.

VPC 내부 IP를 제외한, 모든 IP 요청은 IGW를 통하도록 설정

  • 인터넷 연결 성공
  • SSH 원격 접속도 잘 된다.

  • 추가 팁

  • Public 서브넷 설정에서 퍼블릭 IPv4 주소 자동 할당 활성화
  • 이를 체크하면, Public 서브넷에 인스턴스 생성 시 퍼블릭 IP 자동 할당이 활성화된다.

EC2 Private Instance 접속하기

  • Key forwarding을 이용한다.

  • 만약 ssh-add 명령어가 동작하지 않는 경우 ➔ eval $(ssh-agent) 먼저 입력하여 ssh-agent 활성화
  • ssh-add private.pem
    • ssh-agent 가 Private Instance 의 private key 를 캐싱할 수 있도록 등록
  • ssh-add -L
    • 등록된 private key 확인

Public Instance 먼저 접속

  • ssh -A -i 공개키 호스트@Public EC2 IP

Public Instance 에서 Private Instance 에 ssh 접속

  • ssh 호스트@Private EC2 IP

Private Instance 에 인터넷 연결하기

Private Instance 는 일반적으로는 인터넷을 사용할 수 없다.


  • 인터넷을 사용하려면 NAT 게이트웨이를 사용해야 한다.

Private 서브넷 라우팅 테이블 생성

모든 IP 요청에 NAT 게이트웨이를 추가해준다.

인터넷이 잘 된다.

Private Instance 의 SSH 인바운드 규칙을, Public Instance 에 대해서만 허용해주고 싶다면, Public Instance 의 보안그룹에 대해 허용해주면 된다.


RDS

  • Amazon Relational Database Service

  • 관계형 데이터베이스를 쉽게 사용할 수 있게 도와주는 서비스


RDS 생성하기

  • 서브넷 그룹 만들기

    • 다른 AZ의 서브넷 그룹 2개 이상을 묶어 만든다.


  • 보안 그룹 만들기

Public EC2 의 보안그룹을 인바운드 규칙으로 설정하여, Public EC2 에서의 접근을 허용한다.


  • 데이터베이스 만들기

스토리지 자동 조정 활성화 해제

  • 앞서 만든 VPC와 서브넷 그룹 설정
  • 퍼블릭 액세스 아니요 체크

앞서 만든 보안 그룹으로 설정

로그 체크

암호 확인

만약 암호를 잊어버린 경우 수정 할 수 있다.

암호를 직접 생성하거나, 다시 자동 생성할 수 있다.


  • 파라미터 그룹 만들기

    • 한글 + 이모지를 입력할 수 있다.

    • DB 시간을 한국 시간으로 맞춘다.

모든 항목을 utf8mb4 로 설정

앞서 만든 파라미터 그룹 설정


RDS 연결하기

  • Public EC2 에서 RDS 연결하기

    • mysql 미 설치 시
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm

# https://dev.mysql.com/downloads/repo/yum/ 에서 알맞는 버전의 패키지 다운로드

sudo yum -y install mysql-community-server

mysql --version

  • mysql -u 계정ID -h DB엔드포인트 -p
  • 이후 비밀번호 입력

쿼리 잘 동작


  • GUI 툴에서 SSH Tunneling 을 이용해 RDS 연결

    • 인텔리제이의 Database 기능 사용

Host (DB 엔드포인트), User (계정ID), Password(비밀번호) 입력 후, SSH/SSL 항목 클릭

Host(Public EC2 접속 IP), Username(Public EC2 사용자명), Public EC2 .pem 키 입력 후 적용

잘 되는지 테스트 후 적용


RDS 백업하기

  • 스냅샷을 직접 생성하고, 이를 기반으로 복구


  • 특정 시점으로 복원


출처

실습으로 배우는 AWS 핵심 서비스 (호눅스)
https://www.inflearn.com/course/aws-%ED%95%B5%EC%8B%AC-%EC%8B%A4%EC%8A%B5/dashboard


VPC 이미지 (AWS)
https://aws.amazon.com/ko/blogs/aws/new-application-load-balancer-simplifies-deployment-with-weighted-target-groups/


VPC 구성도 (PurpleBox)
https://www.prplbx.com/resources/blog/aws-vpc-design-configuration/

0개의 댓글