-
[Terraform] aws_launch_configuration, aws_launch_template 차이점공부/Error 2025. 11. 19. 13:29

어디보자.. 무슨오류지.. 실습 과제를 진행하는 과정에서 Auto scaling 부분에서 다음과 같은 에러가 발생했다.
Error: Reference to undeclared resource on asg.tf line 2, in resource "aws_autoscaling_group" "example-asg": 2: launch_configuration = aws_launch_configuration.example_launchconfig.name A managed resource "aws_launch_configuration" "example_launchconfig" has not been declared in the root module.내용은 관리되는 리소스 "aws_launch_configuration" "example_launchconfig"가 루트 모듈에 선언되지 않았습니다.
인데, 내가 실습하는 계정은 최근에 생성된 계정으로, AWS 최신계정에 대한 Launch Configuration 을 공식적으로
지원 종료해버렸으니..당연히 리소스 생성이 안되는거 였다..
그래서 이 기회에 둘의 차이, 어떻게 코드를 작성해야할지 정리하고 넘어가야겠다 생각했다.
일단 둘 다 그래서 어떤 기능인지 정의하면,
Auto Scaling 그룹에서 EC2 Instance를 시작할 때 사용하는 인스턴스 설정 템플릿 이다.
둘의 차이점을 비교하면 다음과 같다.
항목 Launch Configuration Launch Template 정의 Auto Scaling 그룹에서 EC2 인스턴스를 시작할 때 사용하는 인스턴스 설정 템플릿 Auto Scaling 그룹 및 단독 EC2 인스턴스 실행 시 사용하는 최신 인스턴스 설정 템플릿 포함 정보 AMI ID, 인스턴스 유형, 키 페어, 보안 그룹, 블록 디바이스 매핑 등 기본 구성 동일 + 네트워크 인터페이스, IAM 역할, T2 무제한 CPU, 전용 호스트 등 고급 옵션 포함 수정 가능 여부 생성 후 수정 불가, 변경하려면 새로 생성해야 함 여러 버전 관리 지원, 설정 업데이트 및 다양한 버전 운영 가능 지원 인스턴스 온디맨드 인스턴스만 지원 온디맨드 + 스팟 인스턴스 모두 지원, 복수 인스턴스 유형 선택, CPU 아키텍처 혼합 가능 활용 범위 Auto Scaling 그룹 내 인스턴스 생성에만 사용 Auto Scaling 그룹 + 단독 인스턴스 실행에도 사용 가능 장점/제약 단순하고 표준화된 환경 제공, 하지만 유연성 부족 더 유연하고 최신 기능 지원, 관리와 자동화에 적합 현재 상태 AWS에서 지원 종료(deprecated), 신규 계정/리전에서는 사용 불가 AWS에서 권장되는 최신 방식 그래서 예를 들어 코드로 비교해보면 lauch configuration은 다음과 같다.
resource "aws_launch_configuration" "example_config" { name_prefix = "example-config" image_id = data.aws_ami.my_amazonlinux2.id instance_type = "t2.micro" security_groups = [aws_security_group.example_sg.id] key_name = "my-key" } resource "aws_autoscaling_group" "example_asg" { launch_configuration = aws_launch_configuration.example_config.name vpc_zone_identifier = [aws_subnet.example_subnet.id, aws_subnet.example_subnet2.id] min_size = 1 max_size = 4 desired_capacity = 2 }launch template의 코드로 작성하게 되면 다음과 같다.
resource "aws_launch_template" "example_template" { name_prefix = "example-template" image_id = data.aws_ami.my_amazonlinux2.id instance_type = "t2.micro" network_interfaces { associate_public_ip_address = true security_groups = [aws_security_group.example_sg.id] } tag_specifications { resource_type = "instance" tags = { Name = "example-instance" } } } resource "aws_autoscaling_group" "example_asg" { vpc_zone_identifier = [aws_subnet.example_subnet.id, aws_subnet.example_subnet2.id] min_size = 1 max_size = 4 desired_capacity = 2 launch_template { id = aws_launch_template.example_template.id version = "$Latest" } tag { key = "Name" value = "terraform-asg" propagate_at_launch = true } }'공부 > Error' 카테고리의 다른 글