내가 직접 규칙을 정한다

발행: (2026년 2월 8일 오전 06:45 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

Background

일반 업무에서는 회사에서 승인되지 않은 AWS 서비스를 사용할 기회가 거의 없습니다. 그래서 AWS Amplify 같은 서비스를 개인 프로젝트에 사용하는 것이 약간 스캔들을 일으키는 느낌이죠—마치 갈 수 없다고 들은 파티에 가기 위해 창문을 뛰어내리는 것과 같습니다. 기술을 어떻게 활용할지 스스로 규칙을 정하고, 예상치 못한 새로운 수준을 열어가는 경험이 재미있습니다.

Using AWS Amplify

Amplify는 빠른 배포라는 약속을 실현합니다. Copilot을 사용해 React 프런트엔드를 스캐폴딩한 뒤, Amplify가 즉시 앱을 배포했습니다. Amplify 애플리케이션을 브랜치를 자동 감지하고 자동 빌드하도록 설정했기 때문에, 컴파일이 성공하는 푸시마다 완전하게 처리되는 빌드·배포 파이프라인이 실행됩니다.

Choosing Not to Use Amplify’s Backend Features

Amplify를 함수, 스토리지, 데이터 옵션과 직접 통합하지 않기로 했습니다. 이러한 통합이 큰 장점이긴 하지만, 저는 더 많은 제어권을 원했습니다:

  • API Gateway – Lambda를 노출시키기 위해 사용하며, 세밀한 검증과 오류 처리를 가능하게 합니다.
  • Managed Authorizer – Bedrock 모델을 호출해 콘텐츠를 생성하고 S3에서 다운로드하는 Lambda를 보호합니다.
  • Backend Language – TypeScript 대신 제가 익숙한 언어로 백엔드를 작성하고 싶습니다. React 프런트엔드만으로도 2026년에 충분히 학습할 수 있습니다.

Terraform Experiment

이전 글에서 개인 프로젝트에 대한 리소스 배포 방식을 물어봤었습니다. 이번에는 수동 배포 후 Terraform(TF)을 만들기로 했는데, 이는 제공자에 있는 Amplify 리소스에 익숙하지 않기 때문입니다. 콘솔 설정을 복제하는 데 필요한 Terraform을 빠르게 생성할 수 있는지 확인하고 싶었습니다.

일상 업무에서 가장 흔히 겪는 마찰점은 리소스를 프로비저닝하기 위해 Terraform을 작성하는 일입니다. 현재 AWS Terraform 제공자는 Amplify 앱의 모니터링이나 알림을 관리·커스터마이징할 리소스를 노출하지 않으므로, 해당 부분은 여전히 콘솔에서 처리해야 합니다.

Example Terraform Configuration

아래는 프런트엔드 앱을 배포하기 위해 Amplify를 구성한 Terraform 스니펫입니다:

resource "aws_amplify_app" "homeschool_app" {
  name       = "homeschool-app"
  repository = "https://github.com/homeschool-app" # Replace with your GH repository

  build_spec = <<-EOT
    version: 1
    frontend:
      phases:
        preBuild:
          commands:
            - npm ci
        build:
          commands:
            - npm run build
    artifacts:
      baseDirectory: build
      files:
        - '**/*'
    cache:
      paths:
        - node_modules/**/*
  EOT

  enable_auto_branch_creation = true
  auto_branch_creation_patterns = [
    "*",
    "*/**",
  ]
  auto_branch_creation_config {
    enable_auto_build = true
  }

  environment_variables = {
    # Cognito User Pool Domain (without the .auth.region.amazoncognito.com part)
    VITE_COGNITO_DOMAIN = "your-cognito-domain"

    # Cognito User Pool App Client ID
    VITE_COGNITO_CLIENT_ID = "your-cognito-client-id"

    # AWS Region (optional - defaults to us-east-1)
    VITE_AWS_REGION = "us-east-1"

    # Redirect URI after successful login (optional - defaults to current origin)
    VITE_COGNITO_REDIRECT_URI = "http://localhost:3000" # Local development redirect
    # For production: VITE_COGNITO_REDIRECT_URI = "https://your-domain.com"

    # API Configuration
    # Main API Gateway URL for backend endpoints
    VITE_API_ENDPOINT = "https://your-api-gateway.execute-api.us-east-1.amazonaws.com/prod"
  }
}
0 조회
Back to Blog

관련 글

더 보기 »

UX/UI 타이포그래피

Typography란 무엇을 의미할까요? - 어떤 font를 사용할지 - 어느 위치에서 얼마나 크게 할지 - 얼마나 굵게 할지 - 행 간격 - ...

이번 주 상위 7개 추천 DEV 게시물

이번 주 Top 7에 오신 것을 환영합니다. DEV 편집팀이 지난 주에 가장 좋아한 게시물을 직접 선정했습니다. 선정된 모든 저자분들께 축하드립니다.