VPC에서 생성한 CloudWatch canary가 실패해서 발생한 오류를 해결하려면 어떻게 해야 하나요?

3분 분량
0

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

간략한 설명

VPC에 canary를 생성하면 지정된 VPC 서브넷에 탄력적 네트워크 인터페이스가 있는 AWS Lambda 함수도 생성됩니다. 이 같은 탄력적 네트워크 인터페이스는 공용 서브넷에 추가해도 기본적으로 공용 IP 주소가 없습니다. Amazon Simple Storage Service(S3)에 로그를 쓰고 CloudWatch에 데이터 포인트를 게시하려면 canary가 다음 엔드포인트에 액세스할 수 있어야 합니다.

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

canary가 이 엔드포인트 중 하나에 액세스하는 데 문제가 있는 경우 다음 오류 메시지 중 하나가 나타납니다.

  • TimeoutError: 내비게이션 제한 시간 초과: 30000ms 초과: 모니터링 중인 엔드포인트 응답 시간이 page.goto 메서드에 구성된 제한 시간을 초과하는 경우 이 오류가 발생합니다. 예를 들어 구성을 "const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});"로 했다고 가정합시다. 제한 시간이 30초이기 때문에 응답 시간이 30초를 초과하면 이 오류가 발생합니다.
    -또는-
    보안 그룹, 네트워크 액세스 제어 목록(ACL) , 라우팅 테이블에서 canary가 엔드포인트에 액세스하는 것을 허용하지 않는 경우 이 오류가 발생합니다.
  • 테스트 결과가 반환되지 않았습니다. 30000ms 후 연결 시간이 초과되고 업로드된 아티팩트가 없음: canary가 CloudWatch Monitoring이나 Amazon S3 엔드포인트에 액세스할 수 없는 경우 이 같은 오류가 발생합니다. canary 지표에 데이터 포인트가 없으면 canary가 CloudWatch Monitoring에 액세스할 수 없습니다. canary 지표에 데이터 포인트가 있으면 canary가 CloudWatch Monitoring에 액세스할 수 있으나 Amazon S3에는 액세스할 수 없습니다. 참고로 30000ms는 canary에 구성된 시간 제한입니다.

VPC Reachability Analyzer를 이용해 언제든지 canary의 인터넷 연결을 테스트할 수 있습니다.

해결 방법

“내비게이션 시간 초과” 오류 해결

canary에 연결된 보안 그룹에 다음과 같은 속성이 있는지 확인합니다.

  • 구성된 포트와 모니터링하는 엔드포인트 간에 IP 주소 연결을 허용하는 아웃바운드 규칙이 있어야 합니다.
  • 포트 443으로 가는 아웃바운드 트래픽을 허용해야 합니다. 참고로 Amazon S3와 CloudWatch Monitoring 엔드포인트는 HTTPS를 통해 연결할 수 있습니다. 필요한 경우 Type에 HTTPS (TCP 포트 443), Destination에 0.0.0.0/0을 사용해 아웃바운드 규칙을 추가합니다.
  • canary 서브넷의 네트워크 ACL에서 인바운드와 아웃바운드 액세스를 허용해야 합니다.
    인바운드 액세스: 임시 포트가 포트와 엔드포인트 IP 주소의 소스 주소에 액세스할 수 있도록 허용합니다. 임시 포트가 포트 443에서 0.0.0.0/0에 액세스할 수 있도록 허용합니다.
    아웃바운드 액세스: Destination 주소와 엔드포인트 IP 주소 포트에 액세스를 허용합니다. 포트 443에서 0.0.0.0/0로 Destination 액세스를 허용합니다.
  • 엔드포인트가 구성된 시간 제한 내에 응답하는지 확인합니다.

엔드포인트 응답 시간을 확인하려면 다음 명령어를 실행합니다.

time curl http/(s)://[your Endpoint IP/DNS]:Port

canary 코드에서 하트비트 시간 제한을 엔드포인트 응답 시간을 초과하도록 변경합니다.

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

“업로드된 아티팩트가 없음” 또는 “테스트 결과가 반환되지 않음” 오류 해결

프라이빗 서브넷에 Network Address Translation(NAT) 게이트웨이나 NAT 인스턴스를 0.0.0.0/0으로 하여 canary를 추가합니다.

  1. NAT 게이트웨이를 생성합니다.

  2. canary의 프라이빗 서브넷 라우팅 테이블을 업데이트합니다. 라우팅 테이블에서 NAT 게이트웨이를 대상으로 사용하는 방법에 관한 자세한 내용은 NAT 장치로 라우팅을 참고하세요.

-또는-

Amazon S3와 CloudWatch Monitoring용 VPC 엔드포인트가 있는 프라이빗 서브넷에 canary를 추가합니다.

  1. Amazon S3 엔드포인트에 게이트웨이 엔드포인트를 생성합니다.
    참고: 서비스 이름에서 Amazon S3를 검색하고 com.amazonaws.region.s3을 선택합니다.

  2. CloudWatch Monitoring 엔드포인트에 인터페이스 엔드포인트를 생성합니다. DNS 이름 사용 확인란에 체크 표시하세요.
    참고: 서비스 이름에서 모니터링을 검색하고 com.amazonaws.[region].monitoring을 선택합니다. DNS 이름 사용 확인란에 체크 표시하세요.

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠