예제
기본 배포
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 deploySPA (싱글 페이지 앱)
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_IDAWS_SECRET_ACCESS_KEY