[클라우드] AWS 사용법(EC2, VPC)
EC2 인스턴스 생성

리전을 서울 리전으로 변경








생성완료
버킷(저장소)생성








user-1 은 지금 S3 ReadOnly 권한을가지고있어 이아이디로 로그인하면 저장한것 읽기만 가능


사진 설명을 입력하세요.

상세보기도 가능

하지만 객체추가 못함.
이런식으로 가진 권한 내에서만 무엇인가를 할 수 있다.
권한 잘주기!
다하면 모두 다 삭제하자!
리소스 정리 (root 계정으로)
S3 객체(=파일)를 모두 삭제한 후 버킷을 삭제

사진 설명을 입력하세요.

사진 설명을 입력하세요.

사진 설명을 입력하세요.

사진 설명을 입력하세요.

사진 설명을 입력하세요.

내가만든 정책삭제
Access Key를 이용한 AWS 서비스 이용
AWS 서비스 이용하는 방법
- Management Console ⇒ 사람 사용자가 로그인 후 사용
- AWS CLI ⇒ 사람 또는 프로그램이 Access Key를 이용해서 사용
- 각 개발 언어별 SDK ⇒ 응용 프로그램을 이용해서 사용
AWS CLI 설치
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
https://awscli.amazonaws.com/AWSCLIV2.msi 파일을 다운로드 후 실행해서 기본 설정 상태로 설치를 진행
설치가 완료되면 명령 프롬프트를 실행해서 설치를 확인
C:\Users\crpark> aws --version
aws-cli/2.17.63 Python/3.12.6 Windows/11 exe/AMD64
C:\Users\crpark> aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".
사용자 생성 후 액세스 키를 발급

IAM 사용자 생성하기

administratorAccess 권한주고 생성

사진 설명을 입력하세요.

사진 설명을 입력하세요.

사진 설명을 입력하세요.

사진 설명을 입력하세요.
액세스 키를 등록
C:\Users\crpark> aws configure
AWS Access Key ID [None]: AK**********GK ⇐ 발급받은 액세스 키
AWS Secret Access Key [None]: zz**************************Vxd ⇐ 발급받은 비밀 액세스 키
Default region name [None]: ap-northeast-2 ⇐ 서울 리전
Default output format [None]: json ⇐ JSON을 출력 형식으로 지정
|
aws s3
|
aws s3api
|
버킷생성
|
aws s3 mb s3://my-bucket-inno-2 --region ap-northeast-2
|
aws s3api create-bucket --buket my-bucket-inno-2 --create-bucket-configuration LocationConstraint=ap-northeast-2
|
파일업로드
|
aws s3 cp 파일경로/파일이름.확장자 s3://my-bucket-inno-2/
|
aws s3api put-object --bucket my-bucket-inno-2 --key 파일경로/파일이름.확장자 --body 파일경로/파일이름.확장자
|
업로드확인
|
aws s3 ls s3://my-bucket-inno-2/
|
aws s3api list-objects --bucket my-bucket-inno-2
|
파일 상세내용 확인
|
직접적인 명령어 없음
다운받아 확인가능하긴함. aws s3 cp s3://my-bucket-inno-2/파일명.확장자 - | head |
aws s3api head-object --bucket my-bucket-inno-2 --key 파일명.확장자
|
파일삭제
|
aws s3 rm s3://my-bucket-inno-2/파일명.확장자
|
aws s3api delete-object --bucket my-bucket-inno-2 --key 파일명.확장자
|
차이점
|
간단하고 직관적 / 일반적인 파일 작업에 적합
|
상세하고 API에 가까움 / 더 많은 옵션과 세부기능을 제공
JSON 형식의 출력을 제공 세부적인제어나 자동화 필요시 사용 |
VPC(Vitual Private Cloud)
- AWS 사용자 계정 전용 가상 네트워크
- AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리
- 한 AWS 리전 안에서만 존재할 수 있고, 한 리전에 만든 VPC는 다른 리전에서 보이지 않음 > VPC Peering
- 10.0.0.0/8 ⇒ 10.0.0.0 - 10.255.255.255
- 172.16.0.0/12 ⇒ 172.16.0.0 - 172.31.255.255
- 192.168.0.0/16 ⇒ 192.168.0.0 - 192.168.255.255
VPC 구성 옵션
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/create-vpc-options.html
- 가용영역( AZ ) : 리전의 고가용성을 위한 구성요소
AWS 리전의 중복전력, 네트워킹 및 연결이 제공되는 하나 이상의 개별 데이터 센터로 구성
- CIDR 블록 : VPC와 서브넷 IP주소 범위를 지정해야함.
- DNS 옵션 : 서브넷이 시작된 EC2 인스턴스의 퍼블릭 IPv4 DNS 호스트이름이 필요한 경우 두 DNS 옵션을 모두 활성화 해야함.
- DNS 호스트 이름 활성화: VPC에서 시작되는 EC2 인스턴스는 퍼블릭 IPv4 주소에 해당하는 퍼블릭 DNS 호스트 이름을 받음
- DNS 확인 활성화: 프라이빗 DNS 호스트 이름에 대한 DNS 확인은 Route∘53 Resolver라고 하는 Amazon DNS 서버에서 VPC에 제공.
- 인터넷 게이트웨이 : 인터넷에 VPC 연결
- 명칭 : VPC 및 기타 VPC 리소스에 지정한 이름은 이름태그를생성하는데 사용됨
- 콘솔에서 이름 태그 자동 생성 기능을 사용하면 태그 값은 name - resource 형식을 갖음
- NAT 게이트웨이 : NAT=네트워크주소변환 서비
- 라우팅 테이블 : 서브넷 또는 게이트웨이의 네트워크 트래픽이 전송되는 위치를 결정하는 라우팅 규칙 집합을 포함.
- Tenancy : VPC로 시작하는 EC2 인스턴스가 다른 AWS 계정과 공유되는 하드웨어에서 실행되는지 아니면 사용자 전용 하드웨어에서 실해오디는지를 정의
- 서브넷 : VPC 안에서 가상으로 나눈 네트워크 / 인스턴스는 서브넷 안에위치
기본 VPC(default VPC)
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/default-vpc.html
퍼블릭 서브넷, 인터넷 게이트웨이 및 DNS 확인을 통해 EC2 인스턴스를 기본 VPC로 시작하세요. 기본 VPC에서 Elastic Load Balancing, Amazon RDS, Amazon EMR을 활용하세요.
docs.aws.amazon.com
Amazon VPC 를 사용하기 시작하는 경우 각 AWS 리전에 기본 VPC가 있다. 기본 VPC 는 각 가용영역의 퍼블릭 서브넷, 인터넷 게이트웨이 및 DNS 확인 활성화 설정과 함께 제공함. 따라서 기본 VPC Amazon EC2 인스턴스를 즉시 시작할 수 있음. 기본 VPC Elastic Load Balancing, Amazon RDS, Amazon EMR 같은 서비스를 사용할 수도 있다.
기본 VPC 구성요소
- IPv4 CIDR 블록의 크기가 /16인 VPC를 만듭니다 (172.31.0.0/16). 이는 최대 65,536개의 프라이빗 IPv4 주소를 제공합니다.
- 각 가용 영역에 크기 /20의 기본 서브넷을 생성합니다. 이렇게 하면 서브넷당 최대 4,096개의 주소가 제공되며, 그중 몇 개는 내부용으로 예약되어 있습니다.
- 인터넷 게이트웨이를 만들어 기본 VPC에 연결합니다.
- 기본 라우팅 테이블에 모든 트래픽(0.0.0.0/0)이 인터넷 게이트웨이로 전달되는 경로를 추가합니다.
- 기본 보안 그룹을 만들어 기본 VPC와 연결합니다.
- 네트워크 ACL(액세스 제어 목록)을 생성하여 기본 VPC와 연결합니다.
AWS 계정에서 설정된 기본 DHCP 옵션을 기본 VPC와 연결합니다.

사진 설명을 입력하세요.
서브넷
- VPC 내 논리 구분
- 인스턴스는 서브넷 안에 위치 ⇒ EC2 인스턴스를 배치하는 장소
- 한번 서브넷에 인스턴스를 생성하면 다른 서브넷으로 옮길 수 없음
- 인스턴스를 종료하고 다른 서브넷에 새 인스턴스를 만들 수는 있음
- 인스턴스를 서로 격리하고, 인스턴스 간의 트래픽 흐름을 제어하고, 인스턴스를 기능별로 묶을 수 있음
- 서브넷은 하나의 가용 영역(AZ, Availablility Zone) 내에서만 존재할 수 있음
- 서브넷 CIDR 블록
- VPC의 일부, VPC 내에서는 유니크해야 함
- 모든 서브넷에서 처음 4개의 IP와 마지막 1개는 예약되어 있으므로 인스턴스에 할당할 수 없음
예) 서브넷 CIDR이 172.16.100.0/24인 경우
172.16.100.0 네트워크 주소
172.16.100.1 AWS에서 VPC 라우터용으로 예약
172.16.100.2 DNS 서버 주소
172.16.100.3 AWS에서 나중에 사용하려고 예약
127.15.100.255 네트워크 브로드캐스트 주소
- 퍼블릿 서브넷 : 서브넷이 인터넷 게이트웨어로 향하는 라우팅이 있는 라우팅 테이블과 연결된 경우
- 프라이빗 서브넷 : 서브넷이 인터넷 게이트웨어로 향하는 라우팅이 없는 라우팅 테이블과 연결된 경우
ENI(Elastic Network Interface, 탄력적 네트워크 인터페이스, 램카드)
- 물리 서버의 네트워크 이넡페이스와 같은 기능을 수행
- VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워쿠 구성요소
인터넷 게이트웨이(IGW)
- 퍼블릭 IP 주소를 갖는 인스턴스가 인터넷에 연결 할 수 있도록 기능을 제공
- 처음 VPC를 만들면 인터넷게이트웨이가 연결되어있지 않으므로, 직접 인터넷게이트웨이을 만들고 VPC와 연결해야 함
- 하나의 VPC는 하나의 IGW 만 연결가능
라우팅(Routing)
- VPC의 네트워크 트래픽을 전달할 위치를 결정하는데 사용되는 규칙
- 트래픽을 전달할 IP주소범위(대상주소)와 트래픽을 전송할 게이트웨이, 네트워크 인터페이스 또는 연결(대상)을 지정
- VPC는 소프트웨어 함수로 IP라우팅을 구현 > 사용자는 라우팅 테이블만 관리
- 라우팅 테이블 > 라우팅의 집합, 서브넷과 연결 가능
- 기본 라우팅 테이블 > VPC 와 함께 자동으로 제공되는 라우팅 테이블
- 기본 VPC인 경우, local 및 IGW 로의 라우팅을 포함
- 기본 VPC가 아닌경우, local 라우팅만 포함
----------- ---------------------
대상 주소 대상
----------- ---------------------
172.31.0.0/16 local
0.0.0.0/0 igw-0b7313723843100f9
~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
| 인터넷 게이트웨이
+-- 인터넷 상의 모든 호스트 IP를 기반
⇒ 172.31.10.10으로 패킷을 보낼려고 하면, local로 라우팅을 처리
⇒ 198.51.100.50으로 패킷을 보낼려고 하면, ...
라우팅할 위치와 가장 근접하게 일치하는 항목을 기반으로 라우팅을 처리 → IGW로 라우팅됨
⇒ 라우팅 테이블의 항목들간의 순서는 중요하지 않음
--------------------------------- ---------------------
대상 주소 대상
--------------------------------- ---------------------
10.0.0.0/16 Local
2001:db8:1234:1a00::/56 Local
172.31.0.0/16 pcx-11223344556677889
0.0.0.0/0 igw-12345678901234567
::/0 eigw-aabbccddee1122334
--------------------------------- ---------------------
-
- VPC(10.0.0.0/16) 내에서 라우팅되는 IPv4 트래픽은 Local 경로로 처리
- VPC(2001:db8:1234:1a00::/56) 내에서 라우팅되는 IPv6 트래픽은 Local 경로로 처리
- 172.31.0.0/16의 경로는 피어링 연결로 트래픽을 전송
- 모든 IPv4 트래픽(0.0.0.0/0)의 경로는 인터넷 게이트웨이로 트래픽을 전송 ⇒ VPC 내 그리고 피어링 연결을 통한 트래픽을 제외한 모든 IPv4 트래픽은 인터넷 게이트웨이로 라우팅
- 모든 IPv6 트래픽(::/0)의 경로는 외부 전용 인터넷 게이트웨이로 트래픽을 전송 ⇒ VPC 내 트래픽을 제외한 모든 IPv6 트래픽은 외부 전용 인터넷 게이트웨이로 라우팅
보안 그룹(security group)
- 방화벽과 같은 기능을 제공
- 인스턴스의 ENI(탄력적 네트워크 인터페이스)에서 송수신하는 트래픽을 제어
- 모든 ENI는 최소 한개 이상의 보안그룹과 연결되어야하고, 보안 그룹은 여러 ENI 와 연결될 수 있음
- 생성할때 보안그룹 이름, 설명, 포함될 VPC를 지정하고, 생성 후에 인바운드, 아웃바운드 규칙을 지정 > 트래픽을 허용
- 상태 저장 방화벽 역활 > 보안 그룹이 트래픽을 한 방향으로 전달하도록 허용할 때 반대 방향의 응답 트래픽을 지능적으로 허용
NACL(Network Access Control List)
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-network-acls.html#default-network-acl
네트워크 액세스 제어 목록을 사용하여 서브넷 내부와 외부의 트래픽을 제어합니다.
docs.aws.amazon.com
- 보안그룹과 유사
- 원본 또는 대상주소 CIDR, 프로토콜, 포트 를 기반으로 트래픽을 인바운드, 아웃바운드 규칙으로 제어 > 방하벽과 같은 역활
- vpc에는 삭제할 수 없는 기본 NACL이 있음

사진 설명을 입력하세요.
- 서브넷에 연결되어 해당 서브넷과 송수신되는 트래픽을 제어
- 상태 비저장
- NACL을 통과한 연결 상태를 추적하지않음
- 모든 인바운드와 아웃바운드 트래픽의 허용 규칙을 별도로 작성해야함
- 규칙을 적용할 때 규칙번호의 오름차순으로 정리
보안그룹
|
네트워크 ACL
|
인스턴스 레벨에서 운영
|
서브넷 레벨에서 운영
|
인스턴스와 연결된 경우에만 인스턴스에 적용
|
연결된 서브넷에서 배포된 모든 인스턴스에 적용
(보안그룹 규칙이 지나치게 허용적일 경우 추가 보안 계층 제공) |
허용규칙만 지원
|
허용 및 거부 규칙 지원
|
트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가
|
트래픽 허용 여부를 결정할 때 가장 낮은 번호의 규칙부터 순서대로 규칙을 평가
|
상태 저장 : 규칙에 관계없이 반환 트래픽이 허용됨
|
상태 비저장 : 반환 트래픽이 규칙에 따라 명시적으로 허용 되어야 함
|
계층구조
