반응형

 

과금이 처음이라면 무섭지만, 두 번째라면 덜 무섭달까요..?

 

소플의 처음 만난 AWS를 다 읽고  AWS 교과서까지 다 읽었습니다.

개인적으로 난이도는 교과서가 더 높은 것 같아서 AWS가 처음이시라면 가볍게 소플의.. 를 읽고 나서 조금 더 자세히 알아보기위해 교과서까지 같이 보시면 좋은 것 같습니다. 특히 네트워크 부분이 기초를 쌓기에 좋다고 생각합니다.

 

AWS 과금이 될 수도 있다는 몇몇 구간이 있었는데, 다음날 반영되다보니 프리 티어인데 어떤 이유로 과금되었는지 기억이 안나더라구요.

 

그래서 책을 다 읽은 김에 한 번에 정리해봅니다,,

 

지난 번과 유사하게 EC2와 RDS와 VPC가 원인으로 들어가 있군요..

 

1. EC2

Amazon Elastic Compute Cloud NatGateway

 - $0.059 per NAT Gateway Hour: 2 Hrs

Nat(Network Address Translation)Gateway: 네트워크 주소 변환 서비스

  * 프라이빗 서브넷에서 외부 인터넷으로 통신하는 관문 역할

  * 프라이빗 서브넷은 외부 인터넷 구간과 단절된 독립된 네트워크이지만 외부 인터넷 구간과 통신이 필요할 때는 NAT 게이트웨이를 통해 프라이빗 IP 주소를 퍼블릭 IP 주소로 변환하여 외부 인터넷 구간과 통신할 수 있음

 

AWS 네트워크 서비스를 공부할 때, 아래와 같은 구조를 테스트해 보기 위해 NAT Gateway를 생성했습니다.

출발지 목적지 통신 가능 여부
퍼블릭 서브넷 외부 인터넷 가능
외부 인터넷 퍼블릭 인터넷 가능
프라이빗 인터넷 외부 인터넷 가능
외부 인터넷 프라이빗 인터넷 불가능

 

Amazon Elastic Compute Cloud running Linux/UNIX 

 - $0.052 per On Demand Linux t3.medium Instance Hour: 14.6 Hrs

찾아보지 않아도 알 수 있습니다.

제가 프리티어에서 무료로 사용할 수 있는 인스턴스 유형이 아닌 t3.medium 인스턴스를 썼기 때문이죠^^..

  * 프리티어는  t2.micro 또는 t3.micro  인스턴스가 한달에 750시간의 사용 시간이 제공됩니다.

 

2. RDS

Amazon Relational Database Service for MySQL Community Edition

 - USD 0.052 per db.t3.micro Multi-AZ instance hour (or partial hour) running MySQL: 1.276 Hrs

기억이 납니다. 기억이..

FailOver 테스트를 해볼 때였을까요..

Multi AZ는 고가용성을 위해 데이터베이스를 두 개의 가용 영역(AZ)에 걸쳐 복제하는 옵션인데, 추가 비용이 있습니다.

Amazon Relational Database Service Provisioned Storage

 - $0.131 per GB-month of provisioned GP3 storage running MySQL: 0.292 GB-Mo

RDS 설정했을 때, 스토리지 유형을 GP3로 설정하면 나옵니다.프리티어 친구들은 GP2를 사용해야 합니다.* provisioning: 사용자가 요청한 IT 자원을 사용할 수 있는 상태로 준비하는 것

 

Amazon Relational Database Service Provisioned Storage

 - $0.262 per GB-month of provisioned GP3 storage for Multi-AZ deployments running MySQL: 0.354 GB-Mo

단위 당 비용이 가장 비싼 친구^^...

Multi-AZ용 GP3 스토리지 요금입니다.

다른 가용영역에 예비 DB 인스턴스를 배포시킨 대가입니다..

 

3. Virtual Private Cloud

Amazon Virtual Private Cloud Public IPv4 Addresses

 - $0.005 per In-use public IPv4 address per hour: 14.329 Hrs

저번에도 한 번 청구되었던 기억이 나네요..

하지만, 이번에는 직접 원인을 찾아가보는 과정을 추가해보겠습니다.

 

VPC → Amazon VPC IP Address Manager → 퍼블릭 IP 인사이트(과금의 원인에 대한 인사이트를 주겠다는 의미일까요..)

EC2가 아닌 서비스가 범인이며, 저의 경우에는 RDS였습니다.

다시 한 번 옮겨 적어보는 문의 사항에 대한 답변..

프리티어를 사용하고 계실 경우, EC2용 퍼블릭 IPv4 주소에 대해 월 750시간의 무료 혜택이 제공되지만, 안타깝게도, RDS와 같은 다른 서비스와 연결되어 사용된 퍼블릭 IPv4 주소에 대해선 프리티어 혜택이 제공되지 않습니다.

 

 

 

📑참고 자료

Chat GPT

https://kimjingo.tistory.com/180

 

[AWS] VPC NAT Gateway 구성하기

AWS에서 NAT Gateway란? NAT 게이트웨이는 NAT(Network Address Translation, 네트워크 주소 변환) 서비스입니다. 프라이빗 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있지만 외부 서비스에서 이러한

kimjingo.tistory.com

https://jaeyumn.tistory.com/342

 

[AWS] Amazon Relational Database Service Provisioned Storage 비용

AWS로 서버를 설정하고 배포한 후 청구서에 비용이 조금씩 올라가기 시작했다. $0.131 per GB-month of provisioned GP3 storage running MySQL 이 녀석이 문제였다. 지금은 $0.00 per GB-month of provisioned GP2 storage under m

jaeyumn.tistory.com

https://shortcuts.tistory.com/53#google_vignette

 

[해결] AWS 퍼블릭 IPv4 유료화: 프리티어인데 과금되었다면

2024년 2월 1일부터 AWS의 Public IPv4 주소 사용이 유료화되었다. https://aws.amazon.com/ko/about-aws/whats-new/2024/02/aws-free-tier-750-hours-free-public-ipv4-addresses/ IPv4 주소가 고갈되면서 IPv6로의 이전을 장려하기 위

shortcuts.tistory.com

 

 

반응형

'PlayGround > AWS 연습' 카테고리의 다른 글

[AWS] AWS SDK, CLI  (1) 2025.04.10
[AWS] Lambda  (0) 2025.04.09
[AWS] DynamoDB  (0) 2025.04.08
[AWS] CloudFront  (0) 2025.04.07
[AWS] S3  (1) 2025.04.06
반응형

참고 자료

📖 소플의 처음 만난 AWS

 

SDK

Software Developement Kit, 애플리케이션을 만들기 위한 소프트웨어 개발 도구의 집합

 

Shared Credentials 설정

내가 사용하는 컴퓨터에 AWS 자격 증명을 설정함으로써, 해당 컴퓨터를 사용하는 사람은 별도의 설정 없이 SDK나 CLI를 사용하여 AWS 서비스를 사용할 수 있음

https://docs.aws.amazon.com/ko_kr/sdkref/latest/guide/file-format.html

 

공유 config 및 credentials 파일을 사용하여 AWS SDKs 및 도구 전역 구성 - AWS SDKs 및 도구

애플리케이션이 여러 애플리케이션을 실행하는 서버에 있는 경우 기본 프로파일 대신 항상 명명된 프로파일을 사용하는 것이 좋습니다. 기본 프로필은 환경의 모든 AWS 애플리케이션에서 자동

docs.aws.amazon.com

 

IAM 사용자 생성

IAM - 사용자 - 사용자 생성 클릭 - 사용자 이름 입력 - 권한 옵션 선택 - 사용자 생성 클릭

보안 자격 증명 탭 - 액세스 키 - 액세스 키 만들기 - 사용 사례 선택 - 액세스 키 만들기 클릭

운영 체제별로 .aws 폴더 생성 후, config 또는 credentials 파일 생성

Linux/Mac: ~/.aws/config 또는 ~/.aws/credentials
Window: %USERPROFILE%/.aws/ config 또는 %USERPROFILE%/.aws/ credentials
[default]
region = ap-northeast-2
aws_access_key_id = YOUR_AWS_ACCESS_KEY
aws_secret_access_key = YOUR_AWS_SECRET_KEY

 

AWS CLI 설치 및 사용

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

 

최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface

이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이

docs.aws.amazon.com

 

AWS SDK와 CLI 사용 시, 명령을 실행하려는 서비스에 대한 권한이 공유 자격 증명에 설정되어있어야 함

 

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/index.html

 

aws — AWS CLI 2.25.11 Command Reference

Synopsis aws [options] [parameters] Use aws command help for information on a specific command. Use aws help topics to view a list of available help topics. The synopsis for each command shows its parameters and their usage. Optional parameters are shown i

awscli.amazonaws.com

 

반응형

'PlayGround > AWS 연습' 카테고리의 다른 글

[AWS] 과금의 이유를 알아보자...2  (1) 2025.04.20
[AWS] Lambda  (0) 2025.04.09
[AWS] DynamoDB  (0) 2025.04.08
[AWS] CloudFront  (0) 2025.04.07
[AWS] S3  (1) 2025.04.06
반응형

참고 자료

📖 소플의 처음 만난 AWS

 

Serverless

서버에 대해 생각하지 않고, 애플리케이션과 서비스를 구축할 수 있게 함

* 특징

  * 서버 관리 부담 없음

  * 이벤트 기반 실행: HTTP 요청, DB 변경, 파일 업로드 등

  * 비용 효율적: 필요할 때만 실행되며, 실행 시간에 따라 비용이 청구됨 -> 트래픽이 자주 변하는 애플리케이션에 이상적

  * 작은 코드 단위 -> 모듈화가 쉽고 테스트가 편리

  * 다양한 클라우드 서비스와 통합

 

AWS Lambda

* 서버리스 컴퓨팅 서비스

 


Lambda 함수 생성 및 실행

1. 함수 생성 클릭

2. 함수 생성 선택

3. 함수 생성 클릭

4. 테스트 탭 선택

  * 이벤트 이름, 이벤트 JSON 입력 후 저장

5. 테스트 클릭 - 세부 정보 확인

 

Lambda 함수 삭제

1. 작업 - 삭제 클릭

 

반응형

'PlayGround > AWS 연습' 카테고리의 다른 글

[AWS] 과금의 이유를 알아보자...2  (1) 2025.04.20
[AWS] AWS SDK, CLI  (1) 2025.04.10
[AWS] DynamoDB  (0) 2025.04.08
[AWS] CloudFront  (0) 2025.04.07
[AWS] S3  (1) 2025.04.06
반응형

참고 자료

📖 소플의 처음 만난 AWS

 

DynamoDB

AWS에서 제공하는 매우 빠르고 확장 가능한 완전 관리형 클라우드 NoSQL 데이터 베이스

  * NoSQL: RDB의 데이터 일관성 제약 일부 완화, 수평적으로 확장 가능한 성능, 스키마 없는 데이터 모델에 최적화. 몇 가지 방법으로 데이터를 효율적으로 쿼리할 수 있으나, 그 외에는 쿼리 비용이 높고 속도가 느림

* Read 방식

  * Eventually Consistent Read: 기본, 최근 완료된 쓰기 작업의 결과가 반영되지 않을 수도 있음

  * Strongly Consistent Read: 가장 최신 데이터로 응답, 네트워크 지연 또는 중단 발생 시, 사용이 어려움

* 과금 방식

  * 스토리지 요금

  * 읽기/쓰기 용량 유닛 요금

    * 1읽기 용량 유닛 = 초당 최대 2건의 읽기 작업 제공

    * 1쓰기 용량 유닛 = 초당 최대 1건의 쓰기 작업 제공

(프리티어: 매월 25GB 스토리지 및 읽기/쓰기 용량 유닛이 각 25개씩 제공)

 

DynamoDB 기본 구성

Table

  Attribute1 Attribute2
Item1 Value Value
Item2 Value Value

Table: Item의 집합

Item: Attribute의 집합

Attribute: Key(문자열)-Value 방식의 데이터

 

DynamoDB 데이터 타입

* 스칼라 데이터 형식: 하나의 값만 표현

  * Number: 양수, 음수 또는 0

  * String: 문자열

  * Binary: 압축 텍스트

  * Boolean: true/false

  * Null: null

* 문서 형식: 내포 속성이 있는 복잡한 구조를 표현

  * List: 순서가 지정된 값 모음

  * Map: 정렬되지 않은 이름-값 쌍의 모음

* 다중 값 형식: 여러 스칼라 값을 표현

  * String Set, Number Set, Binary Set

 

DynamoDB 파티션

DynamoDB가 데이터를 저장하는 곳

* Primary Key

  * Table 내에서 각 Item을 구분하는 고유 식별자

  * 단순 기본 키: 파티션 키만 사용 / 복합 기본 키: 파티션 키와 정렬 키를 함께 사용

* Partition Key

  * 데이터가 저장되어 있는 파티션을 결정하기 위한 키

  * 내부 해시 함수에 대한 입력으로 파티션 키 값을 사용

  * 출력에 따라 항목을 저장할 파티션이 결정됨

* Sort Key

  * 파티션 키가 동일한 모든 항목들을 정렬하는 키 값

 

보조 인덱스

* Local Secondary Index: 테이블과 파티션 키는 동일하지만 정렬 키는 다른 인덱스

  * 테이블 당 최대 5개

  * 파티션 키와 다른 정렬 키를 사용해서 테이블 내에 아이템을 찾을 수 있음

  * 예: 테이블의 파티션 키: Name, 정렬 키: Subject -> LSI: 파티션 키: Name, 정렬 키: Score

* Global Secondary Index: 파티션 키 및 정렬 키가 테이블의 파티션 키 및 정렬 키와 다를 수 있는 인덱스

  * 테이블 당 최대 20개

  * 다른 값으로 파티션을 나눌 수 있고, 해당하는 파티션 내에서 아이템들을 정렬할 수 있음

  * 예: 테이블의 파티션 키: Name, 정렬 키: Subject -> GSI: 파티션 키: Subject , 정렬 키: Score

 

DynamoDB 데이터 조회 방식

* Query: 기본 키 값을 기반으로 항목을 찾는 방식

* Scan: 테이블 또는 보조 인덱스의 모든 항목을 읽어와서 필터링하는 방식

  * Query 방식은 학번을 곧바로 부르는 방식, Scan은 한 명씩 불러 학번이 일치하는지 확인하는 방식으로 데이터를 조회할 때는 되도록이면 Query를 사용하는 것이 좋음

 


DynamoDB 테이블 생성

1. 테이블 생성 클릭

2. 테이블 이름, 파티션 키, 정렬 키 입력, 테이블 설정 선택

  * 보조 인덱스 생성 시, 설정 사용자 지정 선택

3. 테이블 생성 클릭

 

DynamoDB 데이터 입력

1. 작업 - Create Item

  * 새 속성 추가를 통해 값 입력

2. 항목 생성 클릭

 

DynamoDB 데이터 조회

1. 표 항목 탐색 클릭

2. 쿼리 선택 - 테이블 또는 인덱스 선택 - 파티션 키 입력 후 실행 클릭

3. 스캔 선택 - 필터 클릭 - 속성 이름, 유형, 조건, 값 입력 후 실행 클릭

  * Query 방식은 학번을 곧바로 부르는 방식, Scan은 한 명씩 불러 학번이 일치하는지 확인하는 방식으로 데이터를 조회할 때는 되도록이면 Query를 사용하는 것이 좋음

 

DynamoDB 테이블 삭제

1. 테이블 선택 후 삭제 클릭

 

반응형

'PlayGround > AWS 연습' 카테고리의 다른 글

[AWS] AWS SDK, CLI  (1) 2025.04.10
[AWS] Lambda  (0) 2025.04.09
[AWS] CloudFront  (0) 2025.04.07
[AWS] S3  (1) 2025.04.06
[AWS] CloudWatch  (1) 2025.03.31
반응형

참고 자료

📖 소플의 처음 만난 AWS

 

CloudFront: CDN 서비스

AWS 서비스와 CloudFront 데이터 전송 무료

  * CDN(Content Delivery Network): 콘턴츠 전송 네트워크, 콘텐츠를 전 세계로 빠르게 전송할 수 있게 해주는 것

    * CDN이 전 세계로 컨텐츠를 빠르게 전송할 수 있는 원리 = 캐싱

 

* CloudFront

  * Distribution

    * 각 배포는 고유의 도메인을 가짐

    * Route53을 사용해서 자신의 도메인과 연결 가능

  * Origin

    * 원본 파일을 가져오는 위치(기본: S3, 커스텀: EC2, ELB, 외부 서버 등)

 


S3를 Origin으로 하는 CloudFront에서 파일 가져오기

 

CloudFront 배포 만들기

1. CloudFront - CloudFront 배포 생성 클릭

2. Origin Domain 선택

  * 사용자가 CloudFront를 통해 버킷의 객체를 가져오려고 할 때, Edge Location에 해당 객체가 캐싱이 되고 빠르게 전송될 수 있게 됨

3. 원본 액세스 선택 - 원본 액세스 제어 설정 클릭

4. Create new OAC 클릭

5. 이름 입력 - create 클릭

6. 웹 애플리케이션 방화벽(WAF) 설정(유료)

7. 기본값 루트 객체: CloudFront 배포의 URL로 접속할 경우에 기본적으로 나오게 될 객체

8. 배포 생성 클릭

9. 정책 복사 클릭: CloudFront가 S3 버킷 객체에 접근할 수 있도록 S3 버킷 정책 업데이트

10. S3 - 버킷 - 권한 탭 - 버킷 정책 편집 클릭

  * 정책을 직접 만들고 싶은 경우: Amazon S3 오리진에 대한 액세스 제한

    * 버킷 ARN, CloudFront ARN 값 사용

11. 객체 URL로 들어갈 경우, AccessDenied 확인

12. 배포 - 배포 도메인 이름 복사 - 확인

13. 개발자 도구 - network 탭 - reload page 클릭 후, docs 탭에 CloudFront 주소 확인

Header - x-cache: Miss from cloudfront(캐시를 가져올 경우, Hit / 캐시에 없을 경우, Miss)

 

CloudFront 삭제

1. 배포 클릭 후 비발성화 클릭

2. 삭제(비활성화 클릭 후 삭제가 활성화되기까지 시간이 좀 걸림)

반응형

'PlayGround > AWS 연습' 카테고리의 다른 글

[AWS] Lambda  (0) 2025.04.09
[AWS] DynamoDB  (0) 2025.04.08
[AWS] S3  (1) 2025.04.06
[AWS] CloudWatch  (1) 2025.03.31
[AWS] IAM  (0) 2025.03.24