DNS 요청 시 EC2 인스턴스 자동 시작

DNS 요청 시 EC2 인스턴스 자동 시작

Docker 내에서 웹 애플리케이션을 실행하는 일부 EC2 인스턴스가 있고 비용 절감을 위해 근무 시간 외(예: 오전 7시부터 오후 7시) 동안 자동으로 중지되도록 설정했습니다. 누군가가 이전에 구성한 업무 시간 외에 액세스하려는 경우 웹 앱의 URL이 요청되면(EC2가 중지된 경우에도) 인스턴스가 시작되도록 자동화할 수 있는지 알고 싶습니다.

어떤 사람들은 AWS Lambda 내에서 애플리케이션을 실행하라고 추천했습니다. 그런데 DNS 호출로 시작하도록 함수를 트리거하려면 어떻게 해야 합니까?

답변1

이것은 쉽게 가능하지 않습니다. 람다 및 Route 53 로깅을 사용하면 복잡한 방법을 찾을 수 있지만 그렇게 하더라도 EC2 인스턴스를 시작하는 데 5분이 걸릴 수 있습니다. 이는 EC2 인스턴스가 시작될 때 요청 시간이 초과되었음을 의미합니다.

람다

람다/서버리스 컴퓨팅에서 애플리케이션을 다시 작성하면 이 문제가 제거됩니다. 요청당 비용만 지불하며 대부분의 경우 비용을 많이 지불하지 않습니다. 대부분의 서버리스 애플리케이션에는 비용이 거의 들지 않습니다. 그러나 일부는 EC2 인스턴스보다 비용이 훨씬 더 많이 들 수 있습니다.

실용적인 옵션

비용을 낮추는 가장 실용적인 방법은 대규모 인스턴스 수를 줄이는 대신 자동 크기 조정과 작은 컴퓨팅 단위를 사용하고 수평 확장하는 것입니다. 하나의 작은 리소스 세트를 연중무휴 24시간 실행하고 바쁜 기간에는 더 많은 리소스를 실행합니다.

컨테이너의 경우 Fargate를 사용하여 낮은 리소스 컨테이너를 연중무휴 24시간 실행한 다음 로드 빌드 시 더 많은 리소스를 늘리는 것을 고려할 수 있습니다. 이는 자동 크기 조정이거나 예약된 크기 조정일 수 있습니다. 동일한 ECS 클러스터 내에서 Fargate와 EC2를 사용할 수 있는지는 모르겠지만 가능하다면 문제가 해결될 수 있습니다.

답변2

웹 앱의 URL이 요청되면 ec2 인스턴스를 시작할 수 없습니다. 인스턴스가 요청을 처리할 준비가 되기 전에 http 요청 시간이 초과됩니다.

인증이 필요하지 않습니다. 즉, 봇의 임의 요청이 EC2 인스턴스의 시작을 트리거한다는 의미입니다.

이론적으로는 예를 들어 ec2 인스턴스를 시작할 수 있는 Lambda 함수에 대한 특정 경로에 대한 ALB 라우팅 요청을 사용하여 이를 수행하는 스택을 생성하는 것이 가능해야 합니다. 하지만 관련 리소스는 인스턴스를 연중무휴로 실행하는 것보다 더 비쌉니다.

비용을 절감하고 싶다면 AWS가 최고의 공급자가 아닐 수도 있습니다.

관련 정보