2025-09-09 09:28:27 +09:00

AWS CloudFront with OpenTofu

이 프로젝트는 OpenTofu를 사용하여 AWS CloudFront 배포와 CloudFormation 스택을 관리합니다.

구조

  • versions.tf - Provider 및 Terraform 버전 설정
  • variables.tf - 입력 변수 정의
  • main.tf - CloudFront 배포 및 CloudFormation 스택
  • security.tf - 보안 그룹 및 WAF 설정
  • outputs.tf - 출력 변수
  • terraform.tfvars.example - 변수 설정 예시

주요 기능

CloudFront 배포

  • origin.servidor.it.com을 원본 서버로 사용
  • HTTPS 리디렉션 및 압축 지원
  • 사용자 정의 도메인(CNAME) 지원
  • 캐시 정책 및 원본 요청 정책 설정
  • 커스텀 오류 페이지 설정

CloudFormation 스택

  • VPC 및 네트워킹 리소스 생성
  • 퍼블릭 서브넷 및 인터넷 게이트웨이
  • 스택 출력을 통한 리소스 ID 공유

보안 기능

  • ALB 및 웹 서버용 보안 그룹 (선택사항)
  • AWS WAF v2 웹 ACL (선택사항)
  • 레이트 제한 및 관리 규칙 세트

사용 방법

1. 환경 설정

# OpenTofu 설치 확인
tofu version

# AWS 자격 증명 설정
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_DEFAULT_REGION="us-east-1"

2. 변수 설정

# 설정 파일 복사
cp terraform.tfvars.example terraform.tfvars

# 필요한 값들 수정
vim terraform.tfvars

3. 배포

# 초기화
tofu init

# 계획 확인
tofu plan

# 배포 실행
tofu apply

4. 확인

배포 후 출력된 CloudFront URL을 통해 서비스에 접근할 수 있습니다:

# CloudFront 배포 상태 확인
aws cloudfront get-distribution --id <distribution-id>

# CloudFormation 스택 상태 확인
aws cloudformation describe-stacks --stack-name <stack-name>

중요 설정

SSL 인증서

이 설정은 ACM(AWS Certificate Manager) 인증서를 사용합니다:

  • servidor.it.com*.servidor.it.com 도메인 지원
  • 자동으로 us-east-1 리전에 ACM 인증서 생성
  • DNS 검증을 통한 자동 인증서 발급
  • Route53을 통한 자동 DNS 레코드 관리
  • CloudFront와 완전 통합된 HTTPS 설정

캐시 정책

기본 제공되는 AWS 관리 정책:

  • 4135ea2d-6df8-44a3-9df3-4b5a84be39ad - CachingDisabled
  • 725fe1d6-8a84-4f3e-8ab1-bc2d5bb10e12 - CachingOptimized
  • df3c6b6c-4e41-4d9c-a8c7-6b8b2b8e6b8b - CachingOptimizedForUncompressedObjects

보안 고려사항

프로덕션 환경에서는:

  • ssh_allowed_cidrs를 특정 IP로 제한
  • WAF 활성화 (enable_waf = true)
  • 적절한 캐시 정책 선택
  • CloudTrail 및 CloudWatch 로깅 활성화

도메인 설정

전제 조건:

  • servidor.it.com 도메인의 Route53 호스팅 영역이 존재해야 함
  • 도메인의 네임서버가 Route53으로 설정되어 있어야 함

자동 설정:

  • ACM 인증서 자동 생성 및 검증
  • Route53 A 레코드 자동 생성 (servidor.it.com → CloudFront)
  • Route53 A 레코드 자동 생성 (www.servidor.it.com → CloudFront)

출력 정보

배포 완료 후 다음 정보들이 출력됩니다:

  • CloudFront 배포 ID 및 도메인
  • CloudFormation 스택 정보
  • 보안 그룹 ID (활성화된 경우)
  • WAF Web ACL ARN (활성화된 경우)
  • VPC 및 서브넷 정보

정리

# 리소스 삭제
tofu destroy

문제 해결

일반적인 오류

  1. 인증서 오류: CloudFront용 인증서는 us-east-1에서만 생성 가능
  2. 도메인 검증: CNAME 설정 전에 도메인 소유권 확인 필요
  3. 원본 서버: origin.servidor.it.com이 HTTPS를 지원하는지 확인

로그 확인

  • CloudFront 액세스 로그 활성화
  • CloudWatch 메트릭 모니터링
  • WAF 로그 분석 (활성화된 경우)
Description
Cloudflare Workers application server
Readme MIT 57 KiB
Languages
HCL 80%
Shell 20%