내용으로 건너뛰기

VPC에서 실패한 CloudWatch 카나리의 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Virtual Private Cloud(VPC)에 있는 Amazon CloudWatch 카나리가 오류를 수신하고 실패합니다.

간략한 설명

VPC에 카나리를 만들면 Amazon CloudWatch Synthetics는 지정된 VPC 서브넷에 탄력적 네트워크 인터페이스를 사용하여 AWS Lambda 함수를 자동으로 만듭니다. 이러한 탄력적 네트워크 인터페이스는 퍼블릭 서브넷에 추가하더라도 기본적으로 퍼블릭 IP 주소를 받지 않습니다.

Amazon Simple Storage Service(S3)에 로그를 쓰고 CloudWatch에 데이터 포인트를 게시하려면 카나리가 Amazon S3 엔드포인트CloudWatch Network Monitoring 엔드포인트에 액세스할 수 있어야 합니다.

카나리가 이러한 엔드포인트 중 하나에 액세스할 수 없는 경우 다음 오류 메시지 중 하나가 나타납니다.

"TimeoutError: Navigation Timeout Exceeded:30000ms exceeded"

"No test result returned. Connection timed out after 30000ms and No artifacts were uploaded"

카나리의 인터넷 연결을 테스트하려면 VPC Reachability Analyzer를 사용하십시오.

해결 방법

"Navigation timeout" 오류 해결

카나리의 엔드포인트에 대한 액세스를 허용하도록 보안 그룹, 네트워크 액세스 제어 목록(네트워크 ACL) 및 라우팅 테이블을 올바르게 구성해야 합니다. 모니터링되는 엔드포인트에 대해 구성된 제한 기간은 엔드포인트 응답 시간보다 커야 합니다.

카나리에 연결된 보안 그룹에 다음 속성이 포함되어 있는지 확인합니다.

  • 보안 그룹에는 구성된 포트와 모니터링하는 엔드포인트 간에 IP 주소 연결을 허용하는 아웃바운드 규칙이 있어야 합니다.
  • 보안 그룹은 포트 443으로 가는 아웃바운드 트래픽을 허용해야 합니다. Amazon S3와 CloudWatch Monitoring 엔드포인트는 HTTPS를 통해 연결할 수 있습니다. 아웃바운드 규칙이 없는 경우 아웃바운드 규칙을 추가하십시오. 아웃바운드 규칙을 추가할 때는 Type에 HTTPS(TCP 포트 443), Destination0.0.0.0/0을 사용합니다.
  • 카나리 서브넷의 네트워크 ACL에서 인바운드와 아웃바운드 액세스를 허용해야 합니다.<br id=hardline_break/> 인바운드 액세스의 경우 임시 포트가 포트와 엔드포인트 IP 주소의 소스 주소에 액세스할 수 있도록 허용합니다. 임시 포트가 포트 443에서 0.0.0.0/0에 액세스할 수 있도록 허용합니다.<br id=hardline_break/> 아웃바운드 액세스의 경우 Destination 주소와 엔드포인트 IP 주소 포트에 액세스를 허용합니다. 포트 443에서 0.0.0.0/0으로 Destination 액세스를 허용합니다.
  • 카나리를 연 다음 추가 구성을 선택하여 엔드포인트가 구성된 제한 기간 내에 응답하는지 확인합니다.

그리고 다음 명령을 실행하여 엔드포인트 응답 시간을 확인합니다.

time curl http/(s)://YOUR ENDPOINT IP/DNS:PORT

참고: YOUR ENDPOINT IP/DNS를 DNS 또는 IP 주소로 바꾸고 PORT를 TCP 포트 번호로 바꾸십시오.

마지막으로, 카나리 코드에서 하트비트 제한 시간 값을 엔드포인트 응답 시간보다 큰 값으로 변경합니다.

const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});

예를 들어 구성이 "const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});"이고 엔드포인트가 응답하는 데 35초가 걸린다면 제한 시간 값을 35,000밀리초보다 큰 값으로 변경합니다.

"No artifacts were uploaded" 또는 "No test result returned" 오류 해결

카나리 지표에 데이터 포인트가 없는 경우 카나리는 CloudWatch Network Monitoring 엔드포인트에 액세스할 수 있어야 합니다. 카나리 지표에 데이터 포인트가 있는 경우 카나리는 Amazon S3 엔드포인트에 액세스할 수 있어야 합니다. 참고로 30000ms는 카나리에 구성된 제한 기간입니다.

카나리가 Amazon S3 및 CloudWatch Monitoring 엔드포인트에 액세스할 수 있도록 하려면 다음 접근 방식 중 하나를 선택하십시오.

  • NAT 게이트웨이를 사용하여 카나리를 프라이빗 서브넷에 추가하고 프라이빗 서브넷에서 인터넷으로 트래픽을 라우팅합니다.
  • VPC 엔드포인트를 사용하여 카나리를 프라이빗 서브넷에 추가하여 AWS 서비스에 대한 프라이빗 연결을 허용합니다.

NAT 게이트웨이 사용

NAT 게이트웨이를 만듭니다. 그런 다음 카나리의 프라이빗 서브넷 라우팅 테이블을 업데이트합니다. 라우팅 테이블에서 NAT 게이트웨이를 대상으로 사용하는 방법에 관한 자세한 내용은 NAT 디바이스로 라우팅을 참조하십시오.

VPC 엔드포인트 사용

Amazon S3 엔드포인트에 게이트웨이 엔드포인트를 만듭니다.<br id=hardline_break/> 참고: 서비스 이름에서 Amazon S3을 검색하고 com.amazonaws.region.s3을 선택합니다.

그런 다음, CloudWatch Network Monitoring 엔드포인트에 대한 인터페이스 VPC 엔드포인트를 생성합니다. 추가 설정에서 DNS 이름 활성화를 선택합니다.<br id=hardline_break/> 참고: 서비스 이름에서 monitoring을 검색하고 com.amazonaws.[region].monitoring을 선택합니다.