이 디렉토리는 AWS 기반의 서버리스 TODO 애플리케이션을 위한 테라폼 템플릿을 포함하고 있습니다. 이 템플릿은 AWS CDK 기반 인프라를 테라폼으로 마이그레이션한 것으로, DynamoDB, Lambda, API Gateway 리소스를 자동으로 프로비저닝합니다.
- Amazon DynamoDB: TODO 항목 저장을 위한 테이블
- AWS Lambda: API 요청 처리 및 DynamoDB 상호작용
- Amazon API Gateway: REST API 엔드포인트 제공
- IAM 역할 및 정책: 리소스 간 권한 관리
terraform/
├── main.tf # 주요 리소스 정의
├── variables.tf # 변수 정의
├── outputs.tf # 출력 변수
├── package_lambda.sh # Lambda 패키징 스크립트
└── README.md # 문서
- Terraform v1.2.0 이상
- AWS CLI 구성 (personal 프로파일)
- Node.js 18.x 이상
-
Lambda 함수 패키징:
./package_lambda.sh
-
테라폼 초기화:
terraform init
-
배포 계획 확인:
terraform plan
-
인프라 배포:
terraform apply
-
인프라 삭제 (필요한 경우):
terraform destroy
variables.tf
파일에서 다음 변수를 조정할 수 있습니다:
aws_region
: AWS 리전 (기본값: ap-northeast-2)environment
: 배포 환경 (dev, staging, prod)dynamodb_table_name
: DynamoDB 테이블 이름lambda_zip_path
: Lambda 함수 ZIP 파일 경로
배포 후 다음 정보가 출력됩니다:
- API Gateway 엔드포인트 URL
- DynamoDB 테이블 이름
- Lambda 함수 이름
- API Gateway ID 및 스테이지
테라폼 리소스 간의 의존관계는 다음 그래프에서 확인할 수 있습니다:
의존관계 그래프는 다음과 같은 정보를 제공합니다:
- 리소스 간의 의존성 (어떤 리소스가 다른 리소스에 의존하는지)
- 리소스 생성 순서
- 리소스 그룹 및 관계
그래프는 코드 변경 시 자동으로 업데이트됩니다. SVG 형식의 그래프도 제공됩니다: SVG 그래프
의존관계 그래프를 수동으로 생성하려면 다음 명령을 실행하세요:
cd terraform
./generate_graph.sh
- Lambda 함수에는 최소 권한 원칙이 적용되어 있습니다
- API Gateway는 CORS 설정이 구성되어 있습니다
- 향후 인증 메커니즘 추가가 필요합니다 (Amazon Cognito 등)