dev 환경 구조
네트워크 및 보안 구조
Name |
Type |
Default |
Description |
app |
string |
autosql |
어플리케이션 명 |
domain |
string |
autosql.co.kr |
어플리케이션 최상위 도메인 |
region |
string |
ap-northeast-2 |
AWS Region |
Name |
Type |
aws_vpc |
resource |
aws_subnet |
resource |
aws_internet_gateway |
resource |
aws_route_table |
resource |
aws_route_table_association |
resource |
Name |
Description |
Type |
Default |
Required |
app |
어플리케이션 명 |
string |
autosql |
yes |
env |
배포 환경 |
string |
terraform.workspace |
yes |
vpc_cidr |
vpc의 cidr |
string |
10.0.0.0/16 |
no |
public_subnets |
가용영역 a와 b의 서브넷 cidr |
list(string) |
["10.0.1.0/24", "10.0.2.0/24"] |
no |
Name |
Description |
vpc_id |
배포된 vpc id |
public_subnet_ids |
ap-northeast-2a와 ap-northeast-2b에 배포된 서브넷 아이디의 리스트 |
bucket.tf
Name |
Type |
aws_s3_bucket |
resource(for_each) |
aws_s3_bucket_website_configuration |
resource(for_each) |
aws_iam_policy_document |
resource(for_each) |
aws_s3_bucket_policy |
resource(for_each) |
aws_s3_bucket_acl |
resource(for_each) |
proxy_instance.tf
Name |
Type |
aws_security_group |
resource |
aws_eip |
resource |
aws_instance |
resource |
ssm_parameter.tf
Name |
Type |
aws_ssm_parameter |
resource(for_each) |
route53.tf
Name |
Type |
aws_route53_zone |
resource |
aws_route53_record |
resource |
Name |
Description |
Type |
Default |
Required |
app |
어플리케이션 명 |
string |
autosql |
yes |
env |
배포 환경 |
string |
terraform.workspace |
yes |
domain |
어플리케이션 최상위 도메인 |
string |
autosql.co.kr |
yes |
region |
Region |
string |
ap-northeast-2 |
yes |
vpc_id |
개발환경의 vpc id |
string |
terraform_remote_state |
yes |
public_subnet_ids |
개발환경 vpc 내의 subnet의 리스트 |
list(string) |
terraform_remote_state |
yes |
bucket_names |
랜딩페이지 버킷과 리엑트 앱 버킷 |
list(string) |
["landing", "erd"] |
yes |
bucket_acl |
버킷의 acl |
string |
"public-read" |
yes |
Name |
Description |
website_endpoints |
생성된 버킷들의 website endpoints |
loadbalancer.tf
Name |
Type |
aws_security_group |
resource |
aws_lb |
resource |
aws_lb_listener |
resource |
aws_lb_listener_rule |
resource |
aws_lb_target_group |
resource |
elastic-container-registry.tf
Name |
Type |
aws_ecr_repository |
resource |
aws_ecr_lifecycle_policy |
resource |
elastic-container-service.tf
Name |
Type |
aws_security_group |
resource |
aws_iam_policy_document |
data |
aws_iam_role |
resource |
aws_iam_role_policy |
resource |
aws_iam_role_policy_attachment |
resource |
template_file |
data |
aws_ecs_task_definition |
resource |
aws_ecs_cluster |
resource |
aws_ecs_service |
resource |
autoscaling.tf
Name |
Type |
aws_appautoscaling_target |
resource |
aws_appautoscaling_policy |
resource(for_each) |
ssm_parameter.tf
Name |
Type |
aws_ssm_parameter |
resource |
route53.tf
Name |
Type |
aws_route53_zone |
resource |
aws_route53_record |
resource |
aws_acm_certificate |
resource |
aws_acm_certificate_validation |
resource |
codecommit.tf
Name |
Type |
aws_caller_identity |
data |
template_file |
data |
aws_codecommit_repository |
resource |
codedeploy.tf
Name |
Type |
aws_iam_policy_document |
data |
aws_iam_role |
resource |
aws_iam_role_policy |
resource |
aws_iam_role_policy_attachment |
resource |
aws_codedeploy_app |
resource |
aws_codedeploy_deployment_group |
resource |
codepipeline.tf
Name |
Type |
aws_s3_bucket |
resource |
aws_iam_policy_document |
data |
aws_iam_role |
resource |
aws_iam_role_policy |
resource |
aws_codepipeline |
resource |
Name |
Description |
Type |
Default |
Required |
app |
어플리케이션 명 |
string |
autosql |
yes |
env |
배포 환경 |
string |
terraform.workspace |
yes |
domain |
어플리케이션 최상위 도메인 |
string |
autosql.co.kr |
yes |
region |
Region |
string |
ap-northeast-2 |
yes |
vpc_id |
개발환경의 vpc id |
string |
terraform_remote_state |
yes |
public_subnet_ids |
개발환경 vpc 내의 subnet의 리스트 |
list(string) |
terraform_remote_state |
yes |
desired_count |
ecs FARGATE 서비스 Desired 갯수 |
number |
1 |
yes |
min_capacity |
어플리케이션 오토스케일링 - ecs FARGATE 서비스 최소값 |
number |
1 |
yes |
max_capacity |
어플리케이션 오토스케일링 - ecs FARGATE 서비스 최대값 |
number |
3 |
yes |
scale_policy |
어플리케이션 오토스케일링 정책 |
map(number) |
|
yes |
scale_policy.ECSServiceAverageCPUUtilization |
CPU 사용량 퍼센트 |
number |
60 |
yes |
scale_policy.ECSServiceAverageMemoryUtilization |
Memory 사용량 퍼센트 |
number |
80 |
yes |
host_port |
ecs 서비스 작업의 호스트 포트 |
number |
80 |
yes |
container_port |
ecs 서비스 작업의 컨테이너 포트 |
number |
3000 |
yes |
container_spec_path |
data.template_file 의 템플릿 파일 경로 |
string |
backend.config.json.tpl |
yes |
MYSQL_USERNAME |
data.template_file 의 변수 - 데이터베이스 사용자 |
string |
admin |
yes |
MYSQL_DATABASE |
data.template_file 의 변수 - 데이터베이스 명 |
string |
autosql |
yes |
taskdef_path |
codecommit - data.template_file 의 작업정의 파일 경로 |
string |
taskdef.json |
yes |
appspec_path |
codecommit - data.template_file 의 앱스펙 파일 경로 |
string |
appspec.yaml |
yes |
Name |
Description |
repository_url |
ecr 레포지토리 url |
api_domain_name |
acm 이 적용된 loadbalancer 의 A 레코드 |
rds.tf
Name |
Type |
aws_db_subnet_group |
resource |
aws_db_instance |
resource |
aws_security_group |
resource |
ssm_parameter.tf
Name |
Type |
aws_ssm_parameter |
resource |
Name |
Description |
Type |
Default |
Required |
app |
어플리케이션 명 |
string |
autosql |
yes |
env |
배포 환경 |
string |
terraform.workspace |
yes |
domain |
어플리케이션 최상위 도메인 |
string |
autosql.co.kr |
yes |
region |
Region |
string |
ap-northeast-2 |
yes |
vpc_id |
개발환경의 vpc id |
string |
terraform_remote_state |
yes |
public_subnet_ids |
개발환경 vpc 내의 subnet의 리스트 |
list(string) |
terraform_remote_state |
yes |
instance_type |
RDS mysql의 인스턴스 타입 |
string |
db.t2.micro |
yes |
database_port |
RDS mysql의 데이터베이스 포트 |
number |
3306 |
yes |
MYSQL_USER |
데이터베이스 사용자명 |
string |
admin |
yes |
MYSQL_PASSWORD |
데이터베이스 사용자 암호 |
string |
TF_VAR_MYSQL_PASSWORD |
yes |
Name |
Description |
address |
데이터베이스 웹 endpoint |
- 현재 개발 환경의 Cloudfront 대신 프론트엔드 버킷에 proxy를 위한 nginx 서버 인스턴스를 사용 중
- RDS는 VPC 내에서 접근 가능하므로 Bastion Host 를 통해 RDS mysql 접속하여 데이터 Restore