강의를 보며 중요하다고 생각되는 내용들을 정리하였다.
호눅스 짱
ap-northeast-2
4개의 AZ로 구성되어 있다. (Availability Zones)
ap-northeast-2a
ap-northeast-2b
ap-northeast-2c
ap-northeast-2d
Root account 는 MFA 등을 이용해 이중화를 하는 것이 안전
MFA 적용하기
Authenticator
앱을 설치한 후, QR코드를 스캔하여 MFA를 추가한다.
MFA 적용 후,
Authenticator
앱의 MFA 코드를 입력하여 Root account 로그인을 진행한다.
MFA 삭제하기
그룹 이름과 그룹에 부여할 권한을 설정한다.
- 자동 생성된 암호 체크
- 로그인 시 새 암호 생성 체크 해제
- 번거롭다.
그룹에 사용자 추가
csv
파일은 사용자 이름, 암호, 콘솔 로그인 URL로 이루어져 있다.
콘솔 로그인 URL로 들어가서, 사용자 이름과 암호를 입력하면 IAM 계정으로 로그인한다.
특정 개체에게 리소스의 접근 권한을 부여
Short term credential
AWS 서비스나 응용프로그램에서 AWS 리소스에 일시적으로 접근 권한을 얻기 위해 사용
Amazon Resource Name
아마존에서 리소스를 유일하게 식별할 수 있는 구분자
- S3 는 region, account-id 없이 식별 가능하기에 생략되었다.
- S3 는 버킷이름이 전세계에서 유일하므로, 이름으로 식별 가능
Switch Role 은 다른 AWS 계정이 사용할 수 있는 역할이다.
부여하고 싶은 권한을 설정한다.
역할이 생성됐다.
다음 빨간 밑줄 부분을 수정하여, 특정 계정에게만 Switch Role을 부여할 수 있다.
lukee1
IAM 계정에 Switch Role 을 부여
원래
lukee1
계정은 IAM 접근권한이 없다.
앞서 만들어준 역할명을 입력하고 역할 전환을 수행한다.
역할을 사용하여 IAM 접근권한을 얻었다.
다시 전환을 눌러 다시 사용자 계정으로 돌아갈 수 있다.
- 만약 앞서 역할을 사용할 수 있도록 설정한
lukee1
이 아니라 다른 계정으로 역할을 사용할 수 없다.- 다음은
lukee2
사용자 계정이다.
터미널을 이용해 AWS 서비스들을 사용할 수 있다.
IAM 계정을 AWS CLI를 통해 사용하기
다음 빨간 밑줄 링크로 들어가 다음의 명령어들을 실행
AWS CLI 가 제대로 설치되었음을 확인
액세스 키를 만들면, AWS CLI를 사용해 AWS 계정에 액세스 할 수 있다.
액세스 키 ID와 액세스 키 비밀번호가 들어있는 csv 파일을 다운로드한다.
aws configure
입력 후, 액세스 키 ID와 비밀번호, region, data format 을 설정한다.
.aws
폴더 안에config
와credentials
파일이 생긴걸 확인할 수 있다.
--profile profile이름
입력 후, region 과 dataformat 만 설정한다.
이후
config
파일에role_arn = 역할 ARN
과source_profile = default
를 추가로 입력해준다.
aws iam list-users
입력 시, IAM 권한이 없어AccessDenied
가 발생aws iam list-users --profile iamhyun
입력 시, IAM 권한을 가진 역할로 명령을 내리기 때문에 IAM 계정 정보들을 가져올 수 있다.
객체 스토리지
객체 (파일) 저장소
파일 업로드, 다운로드, 검색 가능
객체들은 고유한 URL을 가진다.
다양한 인증과 권한 부여 제공
Region 기반 서비스
static web page 기능 지원
버저닝 기능 사용 가능
다양한 요금 옵션 존재
버킷의 이름은 전 세계에서 유일해야 한다.
버킷 이름은 전 세계에서 유일해야 한다.
ACL
Access Control List
객체마다 권한 제어 가능
권한이 없어 URL로 접속하여 볼 수 없다.
버킷의 퍼블릭 액세스 차단을 전부 해제
버킷의 ACL을 활성화
퍼블릭 액세스를 허용해주려는 객체의 ACL 편집
URL 접속하여 객체를 눈으로 볼 수 있다.
Bucket Policy
퍼블릭 액세스를 허용해주려는 prefix (폴더)
public/
ARN =
S3 ARN
+퍼블릭 액세스를 허용해주려는 prefix/*
복사
붙여넣기
IAM 을 이용한 제어
Presigned URL
aws s3 mb s3://버킷이름
➔ 버킷 생성aws s3 ls
➔ 버킷 리스트 확인
aws s3 cp 로컬파일 s3://버킷이름/경로
➔ 로컬파일을 버킷/경로에 업로드
aws s3 cp s3://버킷이름/파일 로컬경로
➔ 버킷파일을 로컬경로에 다운로드
aws s3 rm s3://버킷이름/파일
➔ 버킷파일을 삭제
aws s3 sync 로컬경로 s3://버킷이름/경로
➔ 로컬경로 파일들과 같게 버킷파일들을 맞춘다. (버킷 동기화)
aws s3api put-object-acl --bucket 버킷이름 --key 객체명 --acl public-read
- 버킷에 앞서한 ACL 설정들을 허용해주어야 제대로 동작한다.
버킷내의 모든 객체들의 퍼블릭 액세스 허용
해당 링크로 정적 웹페이지에 접속할 수 있다.
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를 시작할 수 있다.
SSD 용량은 최대 30GB 까지 가능
다운받은
.pem
key 의 읽기 권한을 나에게만 부여한다.
나/그룹/전체
순
ssh -i pem키 호스트명@공개IP
로 원격접속
EC2를 재시작해도 IP가 바뀌지 않는다.
고정 IP
사용중이지 않을 경우 과금된다.
간단하게 EBS 데이터를 백업
스냅샷은 S3 에 저장된다.
리전 서비스
다른 AZ로 복사가능
EC2를 정지하고 스냅샷을 생성하는 것이 좋다.
스냅샷은 S3에 저장된다.
현재 인스턴스의 EBS는
-2c
AZ 에 존재
- 스냅샷에서 EBS 를 생성
- EBS 를
-2a
AZ에 생성
EC2 의 백업 이미지
EBS 스냅샷 + 메타 데이터로 구성
AMI를 이용해 EC2를 다른 AZ로 옮길 수 있다.
현재 EC2 에
awesome.txt
생성
AMI를 생성하면 스냅샷도 자동으로 생성된다.
현재 인스턴스는
-2c
AZ에 존재
-2a
AZ에 인스턴스 생성
AMI 로 만든 EC2 에 접속해보면 앞서 만든
awesome.txt
가 그대로 있다.
EC2 인스턴스가 다른 AWS 리소스를 제어할 때 사용하는 IAM Role
aws configure
로 액세스 키를 설정하는 것보다 안전하다.
EC2 내에서 액세스키를 설정하지 않았으므로
aws s3 ls
를 사용할 수 없다.
- 리전과 데이터 형식만 설정하였다.
EC2가 사용할 EC2 Role 생성
권한 추가
EC2 Role 생성
developer
사용자 그룹에 추가적인 권한(정책)이 필요하다.developer
사용자 그룹은 EC2와 IAM Role 을 연결할 수 있는 권한이 없다.정책을 JSON으로 직접 만든다.
정책 생성
정책을
developer
사용자 그룹에 추가
developer
그룹의 사용자들은 EC2 Role을 EC2 인스턴스에 연결할 수 있다.인스턴스 프로파일 ARN이 생겼음을 확인
aws s3 ls
명령어를 EC2 내부에서 수행할 수 있다.
Amazon Virtual Private Cloud
AWS의 가상 사설 네트워크
VPC와 Subnet 의 Prefix 범위는 16 ~ 28
Prefix: 16
Public 서브넷
인터넷 세상에 공개된 서브넷
웹 서버, WAS 등이 위치
Private 서브넷
인터넷과의 직접적인 연결이 막힌 서브넷
DB가 위치
앞서 만든 VPC 에 서브넷 생성
- Prefix 24
- VPC Prefix 의 부분집합이어야 한다.
- 프리티어 인스턴스는
a
,c
AZ 서브넷에만 위치할 수 있다.
서브넷을 인터넷과 연결하기 위해서는 라우팅 규칙 필요
라우팅 테이블을 생성한 뒤, 지정된 서브넷과 연결한다.
Public 서브넷 - 라우팅 테이블 연결 실습
기본 라우팅 테이블에 연결된 Public 서브넷은 SSH 접속이 제대로 되지 않는다.
- 인터넷 연결이 안되어있다.
VPC 내부 IP를 제외한, 모든 IP 요청은 IGW를 통하도록 설정
- 인터넷 연결 성공
- SSH 원격 접속도 잘 된다.
- Public 서브넷 설정에서 퍼블릭 IPv4 주소 자동 할당 활성화
- 이를 체크하면, Public 서브넷에 인스턴스 생성 시 퍼블릭 IP 자동 할당이 활성화된다.
- 만약
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 서브넷 라우팅 테이블 생성
모든 IP 요청에 NAT 게이트웨이를 추가해준다.
인터넷이 잘 된다.
Private Instance 의 SSH 인바운드 규칙을, Public Instance 에 대해서만 허용해주고 싶다면, Public Instance 의 보안그룹에 대해 허용해주면 된다.
Amazon Relational Database Service
관계형 데이터베이스를 쉽게 사용할 수 있게 도와주는 서비스
서브넷 그룹 만들기
Public EC2 의 보안그룹을 인바운드 규칙으로 설정하여, Public EC2 에서의 접근을 허용한다.
스토리지 자동 조정 활성화 해제
- 앞서 만든 VPC와 서브넷 그룹 설정
- 퍼블릭 액세스
아니요
체크
앞서 만든 보안 그룹으로 설정
로그 체크
암호 확인
만약 암호를 잊어버린 경우
수정
할 수 있다.
암호를 직접 생성하거나, 다시 자동 생성할 수 있다.
파라미터 그룹 만들기
한글 + 이모지를 입력할 수 있다.
DB 시간을 한국 시간으로 맞춘다.
모든 항목을
utf8mb4
로 설정
앞서 만든 파라미터 그룹 설정
Public EC2 에서 RDS 연결하기
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 키 입력 후 적용
잘 되는지 테스트 후 적용
출처
실습으로 배우는 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/