AWS Lambda 백엔드와 함께 Amazon API Gateway를 사용하여 REST API를 호출할 때 HTTP 504 오류 상태 코드가 표시됩니다. 이 오류를 해결하려면 어떻게 해야 하나요?
해결 방법
REST API 요청이 HTTP 504 오류 상태 코드를 반환하면 다양한 검사를 실행해야 합니다.
IntegrationLatency 급증 확인
통합 지연 시간을 검토하여 API Gateway에 IntegrationLatency 급증이 있는지 확인합니다. IntegrationLatency 지속 시간을 보려면 HTTP API 로깅에 대한 액세스 로깅 변수 $context.integration.latency를 구성합니다.
자세한 내용은 API Gateway 콘솔을 사용하여 Amazon CloudWatch API 로깅 설정을 참조하세요.
API 게이트웨이의 IntegrationLatency 급증은 요청이 Lambda에서 대부분의 시간을 소비했음을 나타냅니다. 이를 확인하려면 Lambda 함수의 기간 성능 지표를 확인하세요.
자세한 내용은 Lambda 함수 지표 작업을 참조하세요.
CloudWatch 로그 인사이트로 요청 검토
Amazon CloudWatch Logs 인사이트를 사용하여 504 오류가 발생한 요청을 검토하세요. 요청을 검토하려면 CloudWatch 콘솔의 탐색 창에서 로그(Logs), **로그 인사이트(Log Insights)**를 선택합니다. API Gateway 로그 그룹을 선택합니다. 그런 후 다음 쿼리 중 하나를 사용하여 상대 시간을 설정합니다.
parse @message '(*) *' as reqId, message
| filter message like /Method completed with status: \d\d\d/
| parse message 'Method completed with status: *' as status
| filter status = 504
| sort @timestamp desc
| limit 20
-또는-
fields @timestamp, @message
| filter message like /Method completed with status: 504/
| sort @timestamp desc
| limit 20
X-Ray 추적 계측
504 오류가 계속해서 발생하면 Lambda 함수가 시간을 보내는 위치를 확인하세요. Lambda 함수 런타임을 기반으로 Lambda 함수에 대한 AWS X-Ray 추적을 계측합니다.
Python의 경우:
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()
Node.js의 경우:
const AWSXRay = require('aws-xray-sdk-core')
const AWS = AWSXRay.captureAWS(require('aws-sdk'))
참고: Lambda 함수에서 X-Ray 추적을 계측한 후 새 배포 패키지를 빌드해야 합니다.
API 재시도 계측
504 오류가 발생하고 Lambda에서 요청을 찾을 수 없는 경우 클라이언트에서 API 재시도를 계측합니다. 이 오류는 API Gateway의 일시적인 네트워크 오류로 인해 발생했을 수 있습니다.
Lambda 함수 구성 확인
Lambda 함수에 API Gateway 이벤트별 처리 로직만 있는지 확인하세요. 이렇게 하면 Lambda 함수가 실행하는 데 걸리는 시간이 줄어들고 들어오는 이벤트를 따라잡을 수 있습니다.
REST API의 기본 최대 통합 제한 시간은 29초입니다. 따라서 Lambda 함수의 실행 시간이 29초 미만인지 확인하세요.
애플리케이션이 시간에 민감한 사용 사례가 있는 경우 백엔드 Lambda 함수의 비동기 호출 설정을 참조하세요.
관련 정보
API Gateway 차원 및 지표
API Gateway에서 REST API에 대한 CloudWatch 로깅 설정
CloudWatch 콘솔에서 API Gateway 로그 이벤트 보기
X-Ray를 사용하여 REST API에 대한 사용자 요청 추적
Lambda와 함께 X-Ray 사용