VPC에서 생성한 CloudWatch Canary 실패에 대해 수신한 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 1월 8일

Virtual Private Cloud(VPC)에서 Amazon CloudWatch Canary를 생성했습니다. 하지만 오류가 발생해서 Canary가 실패했습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

VPC에서 Canary를 생성하면 탄력적 네트워크 인터페이스가 연결된 AWS Lambda 함수가 지정된 VPC 서브넷으로 생성됩니다. 이 탄력적 네트워크 인터페이스는 퍼블릭 서브넷에 추가되었더라도 기본적으로 퍼블릭 IP 주소가 할당되지 않습니다. Amazon Simple Storage Service(Amazon S3)에 로그를 작성하고 데이터 포인트를 CloudWatch에 게시하려면 Canary가 다음의 대상에 액세스해야 합니다.

  • Amazon S3 엔드포인트
  • CloudWatch Monitoring 엔드포인트

잠재적 오류 메시지 및 원인:

  • CloudWatch Monitoring에 액세스가 없으면 "No test result returned. Connection timed out after 60000ms" 오류가 수신됩니다. "60000ms"는 Canary에 구성된 시간 초과 제한을 나타냅니다. "No artifacts were uploaded" 오류도 수신하고 Canary 지표에 데이터 포인트가 없습니다.
  • Amazon S3에 액세스가 없으면 "No artifacts were uploaded"와 "No test result returned. Connection timed out after 300000ms" 오류가 수신됩니다. "300000ms"는 Canary에 구성된 시간 초과 제한을 나타냅니다. Canary 지표에 데이터 포인트가 있는데도 이런 오류가 발생했다면 Amazon S3 엔드포인트를 Canary의 서브넷에서 액세스할 수 없지만 CloudWatch Monitoring 엔드포인트는 액세스할 수 있습니다.
  • 모니터링되는 엔드포인트의 응답이 page.goto 메서드에 구성된 시간 초과 제한을 초과할 경우(예: "const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});", 시간 초과 제한 30초), "TimeoutError: Navigation Timeout Exceeded:30000ms exceeded" 오류가 수신됩니다.
  • 보안 그룹, 네트워크 액세스 제어 목록 또는 라우팅 테이블에서 Canary의 엔드포인트에 액세스를 허용하지 않을 경우, "TimeoutError: Navigation Timeout Exceeded:30000ms exceeded" 오류를 수신합니다. 30000ms는 page.goto 함수에 구성된 시간 초과 제한입니다.

해결 방법

"Navigation timeout" 오류 해결

  • 보안 그룹이 Canary에 연결되어 있는지 확인:
    • 구성된 포트와 모니터링되는 엔드포인트의 IP 주소 간의 연결을 허용하는 아웃바운드 규칙이 있어야 합니다.
    • 포트 443에 아웃바운드 트래픽을 허용합니다(Amazon S3와 CloudWatch Monitoring 엔드포인트는 HTTPS를 통해 연결할 수 있습니다). 필요한 경우, 유형에는 HTTPS(TCP 포트 443)를 지정하고 대상으로 0.0.0.0/0을 지정한 아웃바운드 규칙을 추가합니다.
  • Canary 서브넷의 네트워크 ACL(액세스 제어 목록)에서 인바운드 및 아웃바운드 액세스를 허용하는지 확인합니다.
    • 인바운드:
      • 소스 주소에 대한 임시 포트와 엔드포인트 IP 주소의 포트를 허용합니다.
      • 포트 443에서 0.0.0.0/0에 대한 임시 포트를 허용합니다.
    • 아웃바운드:
      • 대상 주소와 엔드포인트 IP 주소의 포트를 허용합니다.
      • 포트 443에서 0.0.0.0/0을 대상으로 지정하는 것을 허용합니다.
  • 엔드포인트가 구성된 시간 초과 제한 내에 응답하는지 확인합니다.
    • 엔드포인트 응답 시간을 찾습니다.
time curl http/(s)://[your Endpoint IP/DNS]:Port
    • Canary 코드에서 하트비트 시간 초과가 엔드포인트 응답 시간을 초과하도록 변경합니다.
const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});

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

네트워크 주소 변환(NAT) 게이트웨이 또는 NAT 인스턴스에 0.0.0.0/0으로 프라이빗 서브넷의 Canary를 추가합니다.

  1. NAT 게이트웨이를 생성합니다.
  2. Canary의 프라이빗 서브넷 라우팅 테이블을 업데이트합니다.

-또는-

Amazon S3 및 CloudWatch Monitoring에 VPC 엔드포인트로 프라이빗 서브넷의 Canary를 추가합니다.

  1. 다음 단계에 따라 Amazon S3 엔드포인트의 게이트웨이 엔드포인트를 생성하세요.
    참고: [서비스 이름]은 "Amazon S3"를 검색한 다음, com.amazonaws.region.s3를 선택합니다.
  2. 동일한 단계에 따라 CloudWatch Monitoring 엔드포인트의 인터페이스 엔드포인트를 생성합니다. [DNS 이름 활성화] 확인란을 선택해야 합니다.
    참고: [서비스 이름]은 "monitoring"을 검색한 다음, com.amazonaws.[region].monitoring을 선택합니다. [DNS 이름 활성화] 확인란을 선택해야 합니다.

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?