바이브코딩 서비스를 Docker 컨테이너로 실전서비스 론칭하기 · 2부 — 이미지 레지스트리, AWS 인프라(콘솔)

8장. AWS 시작 — 계정·IAM·리전·비용

2부를 시작하며. 1부에서 우리는 라이브 투표 서비스를 로컬에서 직접 만들고(React 프론트 + Express API + PostgreSQL), 그것을 Docker라는 도구로 "어디서든 똑같이 도는 상자(컨테이너)"에 담아 내 노트북에서 실행하는 데까지 왔습니다. 2부의 목표는 그 상자를 내 노트북 밖, 진짜 인터넷 서버로 옮기는 것입니다. 그 서버를 빌려 쓸 곳이 바로 AWS입니다.

AWS는 화면이 방대해서 처음엔 압도됩니다. 하지만 이 책에서 쓸 부분은 정해져 있으니, 길을 잃지 않도록 이 8장에서 먼저 전체 지도를 그리고 갑니다. 이 장에서 실제로 서버를 만들지는 않습니다. AWS에 발을 들이는 준비, 즉 계정을 만들고 · 리전을 서울로 맞추고 · 실습용 사용자와 열쇠(액세스 키)를 만들고 · 요금 안전장치를 켜는 것까지가 목표입니다. 서두르지 말고 하나씩 따라오세요.

주의

콘솔 화면은 조금씩 다를 수 있습니다 AWS는 화면(콘솔)을 자주 개편합니다. 이 책의 버튼 위치나 문구가 실제와 조금 다를 수 있는데, 큰 흐름은 같습니다. 찾는 항목이 안 보이면 8.2에서 배울 상단 검색창에 이름을 입력하면 대부분 바로 찾을 수 있습니다.

[지금 여기]

우리는 22단계를 거쳐 "라이브 투표 서비스"를 만들고, 컨테이너에 담아, AWS 클라우드에 배포하는 여정을 지나고 있습니다. 아래가 그 전체 지도이고, 지금은 8단계 — AWS에 처음 발을 들이는 자리입니다.

  1. 1장개발 환경 준비 (터미널 / Node.js / Git / GitHub / VS Code / Claude Code)
  2. 2장Claude Code 사용법 익히기
  3. 3장무엇을 만들지 기획 (라이브 투표 서비스)
  4. 4장로컬에서 서비스 만들기 (React + Express + PostgreSQL)
  5. 5장Docker 개념
  6. 6장Dockerfile 작성
  7. 7장컨테이너 빌드·실행
  8. 8장AWS 시작 (계정 / IAM / 리전 / 비용)
  9. 9장이미지 태깅
  10. 10장ECR에 이미지 올리기
  11. 11장VPC 네트워크 구성
  12. 12장RDS 데이터베이스 생성
  13. 13장SSM 터널로 RDS 초기화
  14. 14장ECS Fargate + ALB로 배포 (기본 완성)
  15. 15장CI/CD (GitHub Actions)
  16. 16장IaC (Terraform)
  17. 17장배포 자동화 연결
  18. 18장현업 운영 구조 이해
  19. 19장무중단 배포
  20. 20장신규 버전 배포 & 롤백
  21. 21장(심화) 프론트를 Vercel로 분리 배포
  22. 22장마무리 (회고 + 리소스 삭제)

이번 장에서 완성되는 것

한 문장으로: AWS 콘솔에 로그인해 리전을 서울로 맞추고, 실습용 IAM 사용자 vote-admin과 그 액세스 키를 손에 쥐게 됩니다.

이렇게 되면 성공입니다:

이 액세스 키는 9장부터 내 노트북과 Claude Code가 AWS를 다룰 때 쓰는 열쇠라, 이 장의 핵심 결과물입니다.

사전 조건

이 장은 2부의 첫 장이라, 앞 장의 코드 결과물을 직접 이어 쓰지는 않습니다. 다만 아래가 갖춰져 있어야 이후 장이 매끄럽습니다.

아직 AWS를 한 번도 안 써 봤어도 괜찮습니다. 이 장이 처음 쓰는 사람 기준으로 하나씩 안내합니다.

8.1 AWS가 뭔가

먼저 우리가 앞으로 계속 쓸 두 단어, 클라우드와 AWS부터 정리합시다.

용어

클라우드(Cloud) 내 서버 컴퓨터를 직접 사서 방에 두는 대신, 인터넷 너머에 있는 거대한 회사의 컴퓨터를 필요한 만큼 빌려 쓰는 방식입니다. 전기를 발전기 없이 콘센트로 쓰는 것과 비슷합니다.

용어

AWS(Amazon Web Services) 아마존이 운영하는, 세계에서 가장 널리 쓰이는 클라우드 서비스입니다. 서버, 데이터베이스, 네트워크 등 IT에 필요한 거의 모든 것을 인터넷으로 빌려줍니다.

우리가 7장까지 만든 서비스는 "내 노트북 안"에서만 돕니다. 내 노트북을 끄면 아무도 접속할 수 없죠. 남들이 인터넷으로 접속하게 하려면, 24시간 켜져 있고 인터넷에 연결된 서버 컴퓨터가 필요합니다. 그런 컴퓨터를 직접 사서 관리하는 대신 빌려 쓰는 것이 클라우드이고, 그 대표가 AWS입니다.

[활용 사례] AWS는 실제로 어디에 쓰이나

AWS는 우리 실습만을 위한 도구가 아니라, 현업에서 다음처럼 폭넓게 쓰입니다. "이래서 배워 두는구나"를 실감하는 게 목표입니다.

이렇게 "필요할 때 필요한 만큼 빌린다"가 클라우드의 핵심이고, AWS는 그것을 다음 방식으로 제공합니다.

용어

온디맨드(On-demand) 필요할 때 필요한 만큼만 빌려 쓰고, 쓴 만큼만 요금을 내는 방식입니다. 서버를 미리 통째로 사둘 필요 없이, 오늘 한 시간 켜면 한 시간치만 냅니다.

이 특징은 장점이자 주의점입니다. 필요한 만큼만 써서 좋지만, 뒤집어 말하면 켜 두면 계속 요금이 나옵니다. 그래서 이 과정 마지막(22장)에 실습 리소스를 반드시 지우는 절을 따로 둡니다. 지금부터 "만든 건 나중에 지운다"를 마음에 새겨 두세요. 요금 이야기는 8.5에서 다시 정리합니다.

우리가 2부에서 빌려 쓸 AWS 부품들을 미리 이름만 소개하면 이렇습니다. 지금은 몰라도 됩니다. 각 장에서 하나씩 자세히 다룹니다.

8.2 계정 만들기 & 콘솔 로그인

용어

콘솔(Console) AWS를 마우스로 조작하는 웹사이트 화면입니다. 클릭으로 서버를 만들고 설정하는 관리 화면이라고 보면 됩니다. 이 장의 대부분을 이 콘솔에서 진행합니다.

이미 AWS 계정이 있다면

이미 계정이 있으면 아래 "계정 만들기"는 건너뛰고, 바로 로그인만 하면 됩니다.

  1. 웹브라우저에서 https://aws.amazon.com 에 접속합니다.
  2. 오른쪽 위 콘솔에 로그인(Sign in to the Console) 버튼을 누릅니다.
  3. 로그인에 성공하면 AWS Management Console 메인 화면이 나옵니다. (이후 8.3의 "화면 둘러보기"로 가세요.)

[콘솔] 계정 만들기 (가입) — 처음 하는 사람

계정이 없다면 가입부터 합니다. https://aws.amazon.com 오른쪽 위의 계정 만들기(Create an AWS Account)를 눌러 시작합니다. 이메일·비밀번호로 기본 정보를 만든 뒤, 아래 단계를 따라갑니다. (화면은 수시로 조금씩 바뀌지만 큰 흐름은 같습니다.)

1) 계정 플랜 선택 — 2025년 개편 이후 가입할 때 무료 플랜(Free)유료 플랜(Paid) 중 하나를 고르게 됩니다. 학습·실습용으로는 무료 플랜을 고릅니다. 무료 플랜은 가입 후 6개월 또는 제공된 크레딧을 다 쓸 때까지 중 먼저 오는 시점까지 유효하며, 그 안에서 실습하기에 충분합니다. (프리티어·크레딧 이야기는 뒤 8.5에서 자세히 다룹니다.)

AWS 가입 — 계정 플랜 선택 화면에서 무료(6개월) 플랜을 고른다

2) 연락처 정보 입력 — 이름·주소·전화번호를 입력합니다. 개인이면 계정 유형을 개인(Personal)으로 선택해 진행하면 됩니다.

AWS 가입 — 연락처 정보 입력 화면

3) 결제 정보 입력 — 신용/체크카드를 등록합니다.

주의

카드 등록은 필요하지만, 지금 큰돈이 나가는 건 아닙니다 AWS는 본인·부정사용 확인을 위해 1 USD(또는 그에 상당하는 금액)를 3~5일간 임시로 잡았다가 되돌립니다(실제 청구 아님). 다만 앞서 말했듯 만든 리소스를 안 지우면 요금이 쌓이므로, 실습 후 삭제(22장)를 꼭 지키세요.

AWS 가입 — 결제 정보(카드) 입력 화면

4) 카드 본인 인증 — 카드를 등록하면 확인 창이 뜹니다. 확인을 누르면 카드사 인증 페이지가 열립니다.

결제 방법 확인 팝업 — 확인을 눌러 인증을 진행한다

국내 카드는 카드번호·비밀번호·생년월일을 입력하는 본인 인증 창(아래)이 나옵니다. 유효시간(보통 3분) 안에 입력해 인증을 마칩니다.

국내 카드 본인 인증 창(KCP) — 유효시간 안에 인증을 완료한다

5) 본인 확인(전화/문자)과 지원 플랜 선택 — 휴대폰으로 오는 인증 번호를 입력해 본인 확인을 마칩니다. 마지막에 지원(Support) 플랜을 고르는 화면이 나오면 기본(Basic) — 무료를 선택하면 됩니다.

인증까지 끝나면 가입이 완료되고, 로그인하면 AWS Management Console 메인 화면이 나옵니다.

확인

로그인이 되면 화면 맨 위에 검은색(또는 짙은 남색) 바가 있고, 그 안에 검색창과 오른쪽 위 계정/지역 표시가 보입니다. 이 화면이 "AWS Management Console"이고, 앞으로 우리의 작업실입니다.

8.3 콘솔 둘러보기 — 딱 세 곳만 기억

처음엔 화면에 정보가 많아 보이지만, 지금 알아야 할 곳은 세 군데뿐입니다.

[맛보기] 검색창으로 서비스 이동해 보기

콘솔을 손으로 한 번 만져 봅시다. 아직 아무것도 만들지 않으니 안전합니다.

  1. 화면 맨 위 가운데 검색창을 클릭하고 EC2를 입력합니다.
  2. 아래에 뜨는 목록에서 EC2(가상 서버 서비스)를 클릭합니다. EC2 대시보드 화면으로 들어가집니다.
  3. 다시 맨 위 검색창을 클릭하고, 이번엔 S3를 입력해 S3로 이동해 봅니다.

두 번 해 보면 감이 옵니다. "어느 메뉴에 있더라?" 하고 헤매지 말고, 검색창에 이름을 치면 바로 그 서비스로 간다 — 이 하나만 익히면 이 절은 충분합니다. 앞으로 이 책이 "IAM 서비스로 가세요"라고 하면, 검색창에 IAM을 치면 됩니다.

8.4 리전 고르기 — 서울로 통일

용어

리전(Region) AWS의 데이터센터가 모여 있는 "지역"입니다. 서울, 도쿄, 미국 버지니아 등 전 세계에 여러 리전이 있습니다. 내가 만드는 리소스는 특정 리전 안에 만들어집니다.

리전이 왜 여러 개일까요? 현업에서는 이렇게 씁니다. 접속자가 가까운 리전을 골라 속도(지연시간)를 줄이고(한국 사용자 대상 서비스면 서울), 나라별 데이터 보관 규정을 지키려고 그 나라 리전에 두기도 하고, 큰 서비스는 재해 대비로 여러 리전에 나눠 두기도 합니다. 우리는 한국에서 실습하니 서울 리전을 씁니다.

여기에 초보자가 가장 많이 겪는 함정이 있습니다.

주의

리전을 섞으면 리소스가 "사라진 것처럼" 보입니다 리소스는 만들 때 선택한 리전에만 존재합니다. 서울 리전에서 만든 걸 도쿄 리전 화면에서 찾으면, 아무것도 없는 것처럼 보입니다. "분명 만들었는데 왜 없지?"의 대부분은 리전을 잘못 보고 있는 경우입니다.

그래서 이 실습에서는 모든 작업을 서울 리전 하나로 통일합니다.

[콘솔] 리전을 서울로 맞추기

  1. 화면 오른쪽 위, 지역 이름이 적힌 부분(예: 버지니아 북부 또는 N. Virginia)을 클릭합니다.
  2. 펼쳐진 목록에서 아시아 태평양(서울) / Asia Pacific (Seoul) ap-northeast-2를 클릭합니다.
  3. 화면 오른쪽 위에 서울 또는 ap-northeast-2가 표시되면 완료입니다.
용어

ap-northeast-2 서울 리전의 코드 이름입니다. 리전마다 이런 코드가 있는데, 9장부터 명령어나 설정에서 이 코드를 쓰게 됩니다. "서울 = ap-northeast-2"만 기억하세요.

주의

앞으로 매 실습 전 리전 확인 2부 내내, 새 작업을 시작할 때마다 오른쪽 위가 서울인지 습관적으로 확인하세요. 이 습관 하나가 수많은 혼란을 막아 줍니다.

8.5 루트 계정 vs IAM 사용자

지금 로그인한 이 계정은 "루트 계정"입니다. 이걸 그대로 실습에 쓰면 안 되는 이유가 있습니다.

용어

루트 계정(Root Account) 가입할 때 만든, 그 AWS 계정의 최고 관리자 계정입니다(가입에 쓴 이메일로 로그인하는 계정). 무엇이든 할 수 있는 만능 열쇠라, 반대로 이 계정 정보가 새어 나가면 피해가 큽니다. 그래서 평소 작업에는 쓰지 않는 것이 원칙입니다.

용어

IAM(Identity and Access Management) AWS에서 "누가 무엇을 할 수 있는지"를 관리하는 서비스입니다. 루트 계정 대신 쓸 별도의 사용자들을 만들고, 각자에게 필요한 권한만 부여할 수 있습니다.

용어

IAM 사용자(IAM User) IAM으로 만드는, 실제 작업에 쓸 계정입니다. 루트라는 만능 열쇠는 금고에 넣어 두고, 실습에는 이 IAM 사용자를 씁니다.

집에 비유하면, 루트 계정은 집 전체의 마스터키입니다. 마스터키는 금고에 보관하고, 평소엔 필요한 문만 여는 일반 열쇠(IAM 사용자)를 쓰는 것이 안전하겠죠. AWS도 똑같이 권장합니다.

[활용 사례] 현업에서 IAM은 이렇게 쓴다

IAM은 "권한을 사람·프로그램별로 나눠 주는" 도구라, 실무에서 폭넓게 쓰입니다.

우리는 이 실습을 편하게 하려고, 넓은 권한을 가진 실습 전용 IAM 사용자를 하나 만들어 쓰겠습니다.

[콘솔] 실습용 IAM 사용자 만들기

  1. 상단 검색창에 IAM을 입력해 IAM 서비스로 들어갑니다.
  2. 왼쪽 사이드바에서 사용자(Users)를 클릭합니다.
  3. 사용자 생성(Create user) 버튼을 누릅니다.
  4. 사용자 이름(User name)vote-admin을 입력합니다.
  5. 바로 아래 AWS Management Console에 대한 사용자 액세스 권한 제공 (Provide user access to the AWS Management Console) 체크박스가 있습니다. 이 IAM 사용자로도 웹 콘솔에 로그인하고 싶다면 체크합니다. 우리는 주로 액세스 키(명령어)로 쓸 거라 체크하지 않아도 됩니다. 그대로 다음(Next)을 누릅니다.
  6. 권한 설정(Set permissions) 단계가 나옵니다. 위쪽 세 옵션 중 직접 정책 연결(Attach policies directly)을 선택합니다.
  7. 아래 정책 목록의 검색란에 AdministratorAccess를 입력하고, 나온 AdministratorAccess 왼쪽 체크박스를 켠 뒤 다음(Next)을 누릅니다.
    • [주의] AdministratorAccess는 거의 모든 것을 할 수 있는 넓은 권한입니다. 실무에서는 이렇게 넓게 주지 않고 필요한 최소 권한만 줍니다. 여기서 넓게 주는 건 오직 학습용 계정이라 배우기 편하게 하기 위해서입니다. 실제 서비스 계정에서는 이렇게 하지 않는다는 점을 기억하세요.
  8. 검토 및 생성(Review and create) 화면에서 사용자 이름(vote-admin)과 권한(AdministratorAccess)이 맞는지 확인하고 사용자 생성(Create user)을 누릅니다.
확인

IAM 왼쪽 사용자(Users) 목록에 vote-admin이 보이면 생성 성공입니다.

[콘솔] 액세스 키 만들기 (로컬에서 AWS를 다루기 위해)

콘솔(웹 화면)이 아니라, 내 컴퓨터의 명령어나 Claude Code로 AWS를 다루려면 "액세스 키"가 필요합니다. 9장부터 이 키를 씁니다.

용어

액세스 키(Access Key) 프로그램이나 명령어가 AWS에 "나는 이 사용자다"라고 증명하는 열쇠입니다. 아이디에 해당하는 액세스 키 ID와, 비밀번호에 해당하는 시크릿 액세스 키 한 쌍으로 이루어집니다.

  1. IAM 사용자(Users) 목록에서 방금 만든 vote-admin을 클릭해 들어갑니다.
  2. 위쪽 탭에서 보안 자격 증명(Security credentials) 탭을 클릭합니다.
  3. 아래로 스크롤해 액세스 키(Access keys) 영역의 액세스 키 만들기(Create access key)를 누릅니다.
  4. 사용 사례(use case)를 묻는 화면에서 명령줄 인터페이스(CLI) (Command Line Interface)를 선택합니다.
  5. 그 아래 "위의 권장 사항을 이해했으며 액세스 키를 만들려고 합니다" 같은 확인 체크박스가 나오면 체크하고 다음(Next)을 누릅니다.
  6. 설명(태그)을 묻는 화면은 비워 두고 액세스 키 만들기(Create access key)를 누릅니다.
  7. 생성 완료 화면에 액세스 키(Access key)비밀 액세스 키 (Secret access key) 두 값이 나옵니다. .csv 파일 다운로드 (Download .csv file) 버튼을 눌러 파일로 저장하거나, 두 값을 그대로 복사해 안전한 곳에 붙여넣어 둡니다.
주의

시크릿 액세스 키는 이 화면에서만 보입니다 시크릿 키는 생성 직후 이 화면에서 한 번만 전체가 보이고, 화면을 벗어나면 다시 볼 수 없습니다. 반드시 지금 안전한 곳에 복사(또는 .csv 다운로드)해 두세요. 잃어버리면 키를 새로 만들어야 합니다.

주의

액세스 키는 절대 공개하지 마세요 이 키가 노출되면 남이 내 AWS를 마음대로 쓸 수 있습니다. 코드나 GitHub에 절대 올리지 말고(1장에서 만든 저장소는 프라이빗, 민감값은 .env에), 9장 이후 실습에서 안전하게 등록해 사용합니다.

참고

더 안전한 방식도 있습니다 AWS는 요즘 장기 액세스 키 대신 "IAM Identity Center" 같은 방식을 권장합니다. 다만 개념이 더 복잡해서, 이 입문 과정에서는 이해하기 쉬운 IAM 사용자 + 액세스 키로 진행합니다. 실무에서 더 나아갈 때 그 방식을 찾아보면 됩니다.

8.6 비용 감 잡기 & 프리티어

마지막으로, 요금 이야기를 분명히 하고 넘어갑니다. 겁줄 필요는 없지만, 모르고 방치하는 게 가장 위험합니다.

용어

프리티어(Free Tier) AWS를 처음 쓰는 사람을 위한 무료 혜택입니다. 정책이 개편되어, 현재 신규 계정은 가입 시 제공되는 크레딧을 일정 기간 안에 쓰는 방식이 기본입니다. 가입하면 100달러 크레딧이 주어지고, 온보딩 활동(간단한 서비스 사용 등)을 완료하면 최대 200달러까지 늘어납니다. 무료 계정 플랜은 가입 후 6개월 또는 크레딧 소진 중 먼저 오는 시점까지 유효합니다. 여기에 더해 상시 무료(always free) 한도가 있는 서비스도 30여 개 있습니다. 어느 쪽이든 "모든 것이 무제한 공짜"는 아니라는 점이 중요합니다.

이 실습에서 요금이 나올 수 있는 부분

우리가 2부에서 만들 것 중 일부는 프리티어를 벗어나거나, 켜 두면 시간당 요금이 붙습니다. 대표적으로:

금액이 아주 큰 건 아니지만, 며칠씩 켜 두고 잊으면 쌓입니다. 그래서 이렇게 하세요.

[콘솔] 예산 알림(Budgets) 켜 두기 — 안전장치

요금이 정해 둔 금액을 넘으면 이메일로 알려 주는 안전장치를 지금 켜 둡시다. 실제 요금을 막아 주지는 않지만, "모르는 새 쌓이는" 최악을 막아 줍니다.

  1. 상단 검색창에 Budgets를 입력해 AWS Budgets(비용 관리) 화면으로 들어갑니다.
  2. 예산 생성(Create budget)을 누릅니다.
  3. 템플릿 사용(Use a template)을 선택하고, 목록에서 월별 비용 예산(Monthly cost budget)을 고릅니다. (요금이 한 푼이라도 나면 알림을 받고 싶다면 제로 지출 예산(Zero spend budget)을 골라도 됩니다.)
  4. 예산 이름(Budget name)vote-monthly 같은 알아볼 이름을 넣고, 예산 금액(Budgeted amount)에 감당할 상한(예: 10 달러)을 입력합니다.
  5. 이메일 수신자(Email recipients)에 알림을 받을 내 이메일 주소를 입력합니다.
  6. 예산 생성(Create budget)을 눌러 마칩니다.

이렇게 해 두면, 이번 달 실제 요금(또는 예상 요금)이 정해 둔 금액을 넘어설 때 이메일이 옵니다.

[확인]

이번 장이 제대로 끝났는지 눈으로 확인합니다.

여기까지 됐다면 AWS에 발을 들이고, 다음 장부터 쓸 열쇠(액세스 키)까지 손에 쥔 것입니다.

막히면

이 장에서 자주 나는 문제와 대처법입니다.

[체크리스트]

아래가 모두 됐는지 확인해 보세요. 하나라도 안 됐다면 해당 절로 돌아가 다시 진행합니다.

모두 체크됐다면 AWS 준비가 끝난 겁니다.