목록으로
DEV

Astro 블로그를 AWS Amplify로 배포하기

Astro 정적 사이트를 AWS Amplify에 배포하는 과정과 트러블슈팅 경험을 공유합니다.

FE6분 읽기
Astro 블로그를 AWS Amplify로 배포하기

왜 Amplify인가?

Astro로 만든 정적 블로그를 배포할 플랫폼을 고르면서 몇 가지를 비교했습니다.

  • Vercel: Astro 공식 지원, 무료 플랜 관대
  • Netlify: 비슷한 포지션, 빌드 속도 빠름
  • AWS Amplify: AWS 생태계 통합, 커스텀 도메인 관리 편리

팀에서 이미 AWS를 사용 중이었기 때문에 Amplify를 선택했습니다.

프로젝트 세팅

npm create astro@latest my-blog
cd my-blog
npm run dev

기본 Astro 프로젝트를 생성한 뒤, astro.config.mjs에 출력 설정을 추가합니다:

import { defineConfig } from "astro/config"
 
export default defineConfig({
  output: "static",
  site: "https://blog.example.com",
})

Amplify 연결

  1. AWS Console → Amplify 접속
  2. Host web app 클릭
  3. GitHub 리포지토리 연결
  4. 빌드 설정 자동 감지 확인

Amplify는 package.jsonbuild 스크립트를 자동으로 감지합니다.

빌드 설정 커스터마이징

amplify.yml 파일을 프로젝트 루트에 추가합니다:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: dist
    files:
      - "**/*"
  cache:
    paths:
      - node_modules/**/*

커스텀 도메인 설정

Route 53에서 관리 중인 도메인이라면 Amplify 콘솔에서 바로 연결할 수 있습니다.

blog.example.com → Amplify 앱

SSL 인증서는 자동으로 프로비저닝됩니다.

트러블슈팅

1. Node.js 버전 불일치

Amplify 기본 빌드 이미지의 Node.js 버전이 로컬과 다를 수 있습니다.

# .nvmrc 파일로 버전 고정
echo "20" > .nvmrc

2. 빌드 시 메모리 부족

대규모 사이트에서 빌드 중 메모리 부족이 발생할 수 있습니다:

# amplify.yml
frontend:
  phases:
    build:
      commands:
        - NODE_OPTIONS=--max-old-space-size=4096 npm run build

결론

Astro + Amplify 조합은 AWS 환경에서 정적 블로그를 운영하기에 충분히 실용적입니다. 초기 설정만 잘 잡아두면 이후 배포는 Git push만으로 자동화됩니다.

이런 글은 어때요?