예제

기본 배포

typescript
import { defineConfig } from 'scf-deploy';

export default defineConfig({
  app: 'my-site',
  region: 'ap-northeast-2',
  s3: {
    bucketName: 'my-site-bucket-abc123',
  },
  cloudfront: {
    enabled: true,
  },
});
bash
npx scf-deploy deploy

SPA (싱글 페이지 앱)

React, Vue 같은 SPA는 404 에러를 index.html로 연결해야 합니다:

typescript
import { defineConfig } from 'scf-deploy';

export default defineConfig({
  app: 'my-spa',
  region: 'ap-northeast-2',
  s3: {
    bucketName: 'my-spa-bucket-abc123',
  },
  cloudfront: {
    enabled: true,
    errorPages: [
      {
        errorCode: 404,
        responseCode: 200,
        responsePath: '/index.html',
      },
    ],
  },
});

개발/운영 환경 분리

environments로 환경별 설정을 다르게 할 수 있습니다:

typescript
import { defineConfig } from 'scf-deploy';

export default defineConfig({
  app: 'my-site',
  region: 'ap-northeast-2',
  s3: {
    bucketName: 'my-site-dev',
  },
  cloudfront: {
    enabled: false,
  },
  environments: {
    prod: {
      s3: {
        bucketName: 'my-site-prod',
      },
      cloudfront: {
        enabled: true,
        priceClass: 'PriceClass_All',
      },
    },
  },
});
bash
# 개발 환경 배포 (기본)
npx scf-deploy deploy

# 운영 환경 배포
npx scf-deploy deploy --env prod

커스텀 도메인 사용

typescript
import { defineConfig } from 'scf-deploy';

export default defineConfig({
  app: 'my-site',
  region: 'ap-northeast-2',
  s3: {
    bucketName: 'my-site-bucket-abc123',
  },
  cloudfront: {
    enabled: true,
    customDomain: {
      domainName: 'www.example.com',
      // certificateArn 생략하면 Route53으로 자동 발급
      certificateArn: 'arn:aws:acm:us-east-1:123456789012:certificate/xxxxx',
    },
  },
});

GitHub Actions로 자동 배포

yaml
# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '18'
      - run: npm ci
      - run: npm run build
      - run: npx scf-deploy deploy --env prod
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

GitHub 저장소 Settings > Secrets에서 추가하세요:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

다음으로 볼 문서

2 min read최종 업데이트: 2025-11-25