AWS AppSync에서 요청 추적에 AWS X-Ray 사용 - AWS AppSync GraphQL

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS AppSync에서 요청 추적에 AWS X-Ray 사용

AWS X-Ray를 사용하여 AWS AppSync에서 실행되는 요청을 추적할 수 있습니다. X-Ray를 사용할 수 있는 모든 AWS 리전에서 AWS AppSync와 함께 X-Ray를 사용할 수 있습니다. X-Ray는 전체 GraphQL 요청에 대한 자세한 개요를 제공합니다. 이를 통해 API 및 기본 해석기와 데이터 원본의 지연 시간을 분석할 수 있습니다. X-Ray 서비스 맵을 사용하여 X-Ray와 통합된 모든 AWS 서비스를 포함한 요청의 지연 시간을 확인할 수 있습니다. 또한 샘플링 규칙을 구성하여 지정한 기준에 따라 어떤 요청을 어떤 샘플링 속도로 기록할지를 X-Ray에 지정할 수도 있습니다.

X-Ray의 샘플링에 대한 자세한 내용은 AWS X-Ray 콘솔의 샘플링 규칙 구성을 참조하세요.

설정 및 구성

AWS AppSync 콘솔을 통해 GraphQL API에 대한 AppSync 추적을 활성화할 수 있습니다.

  1. AWS AppSync 콘솔에 로그인합니다.

  2. 탐색 창에서 설정을 선택합니다.

  3. X-Ray에서 Enable X-Ray(X-Ray 활성화)를 설정합니다.

  4. Save(저장)를 선택합니다. 이제 X-Ray 추적이 API에 대해 활성화됩니다.

AWS CLI 또는 AWS CloudFormation을 사용하는 경우 xrayEnabled 속성을 true로 설정하여 새 AWS AppSync API를 만들거나 기존 AWS AppSync API를 업데이트할 수도 있습니다.

AWS AppSync API에 대해 X-Ray 추적이 활성화되면 적절한 권한을 가진 계정에 AWS Identity and Access Management 서비스 연결 역할이 자동으로 생성됩니다. 이를 통해 AWS AppSync에서 X-Ray로 추적을 안전하게 보낼 수 있습니다.

X-Ray로 API 추적

샘플링

샘플링 규칙을 사용하여 AWS AppSync에 기록할 데이터의 양을 제어하고, 코드를 수정하거나 재배포하는 대신 즉석에서 샘플링 동작을 수정할 수 있습니다. 예를 들어, 이 규칙은 API ID 3n572shhcpfokwhdnq1ogu59v6을 사용하여 GraphQL API에 대한 요청을 샘플링합니다.

  • 규칙 이름 - test-sample

  • 우선 순위 - 10

  • 리저버 크기 - 10

  • 고정 비율 - 10

  • 서비스 이름 - *

  • 서비스 유형 - AWS::AppSync::GraphQLAPI

  • HTTP 메서드 - *

  • 리소스 ARN - arn:aws:appsync:us-west-2:123456789012:apis/3n572shhcpfokwhdnq1ogu59v6

  • 호스트 - *

추적 이해

GraphQL API에 대한 X-Ray 추적을 활성화하면 X-Ray 추적 세부 정보 페이지를 사용하여 API 요청에 대한 자세한 지연 시간 정보를 확인할 수 있습니다. 다음 예제에서는 이 특정 요청에 대한 서비스 맵과 함께 추적 보기를 보여 줍니다. 이 요청은 Post 유형으로 postAPI라는 API에 대해 수행되었으며, 이 API의 데이터는 PostTable-Example이라는 Amazon DynamoDB 테이블에 포함되어 있습니다.

다음 추적 이미지는 다음 GraphQL 쿼리에 해당합니다.

query getPost { getPost(id: "1") { id title } }

getPost 쿼리에 대한 해석기는 기본 DynamoDB 데이터 소스를 사용합니다. 다음 추적 보기는 DynamoDB에 대한 호출과 쿼리 실행의 여러 부분에 대한 지연 시간을 보여 줍니다.

Trace view showing client request, postAPI, and DynamoDB with durations and request details.
  • 앞의 이미지에서 /getPost는 해석 중인 요소의 전체 경로를 나타냅니다. 이 경우 getPost는 루트 Query 유형의 필드이므로 경로에서 루트 바로 뒤에 나타납니다.

  • requestMappingTemplateEvaluation은 AWS AppSync가 쿼리에서 이 요소에 대한 요청 매핑 템플릿을 평가하는 데 소요된 시간을 나타냅니다.

  • Query.getPost는 유형 및 필드(Type.field 형식)를 나타냅니다. 여기에는 API 구조와 추적 중인 요청에 따라 여러 하위 세그먼트가 포함될 수 있습니다.

    • DynamoDB는 이 해석기에 연결된 데이터 원본을 나타냅니다. 여기에는 필드를 확인하기 위해 소요된 DynamoDB에 대한 네트워크 호출의 지연 시간이 포함되어 있습니다.

    • responseMappingTemplateEvaluation은 AWS AppSync가 쿼리에서 이 요소에 대한 응답 매핑 템플릿을 평가하는 데 소요된 시간을 나타냅니다.

X-Ray에서 추적을 볼 때 하위 세그먼트를 선택하고 세부 정보 보기를 탐색하여 AWS AppSync 세그먼트의 하위 세그먼트에 대한 추가 컨텍스트 및 메타데이터 정보를 얻을 수 있습니다.

깊이 중첩되거나 복잡한 쿼리의 경우, AWS AppSync가 X-Ray에 전달하는 세그먼트가 세그먼트 설명서에서 허용하는 최대 크기보다 클 수 있습니다. 허용되는 최대 크기는 AWS X-Ray 세그먼트 설명서에 정의되어 있습니다. X-Ray는 제한을 초과하는 세그먼트를 표시하지 않습니다.