AWS Lambda를 AWS X-Ray와 함께 사용 - AWS Lambda

AWS Lambda를 AWS X-Ray와 함께 사용

AWS X-Ray를 사용하여 애플리케이션의 구성 요소를 시각화하고, 성능 병목 현상을 식별하고, 오류가 발생한 요청을 문제 해결할 수 있습니다. Lambda 함수는 추적 데이터를 X-Ray로 보내고, X-Ray는 데이터를 처리하여 서비스 맵과 검색 가능한 추적 요약을 생성합니다.


      Lambda 함수, X-Ray, Amazon S3 및 CloudWatch Logs의 노드를 보여주는 서비스 맵

함수를 호출하는 서비스에서 X-Ray 추적을 활성화한 경우 Lambda는 자동으로 추적을 X-Ray로 보냅니다. Amazon API Gateway와 같은 업스트림 서비스 또는 X-Ray SDK로 계측되는 Amazon EC2에서 호스팅되는 애플리케이션은 들어오는 요청을 샘플링하고 Lambda에게 추적 전송 여부를 지시하는 추적 헤더를 추가합니다.

추적 헤더가 없는 요청을 추적하려면 함수의 구성에서 적극 추적을 활성화합니다.

적극 추적을 활성화하려면

  1. Lambda 콘솔 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. AWS X-Ray에서 적극 추적을 선택합니다.

  4. 저장을 선택합니다.

요금

X-Ray에는 영구 프리 티어가 있습니다. 프리 티어 한도를 초과하면 추적 저장 및 검색에 대한 X-Ray 요금이 부과됩니다. 자세한 내용은 AWS X-Ray 요금을 참조하십시오.

함수에 추적 데이터를 X-Ray로 업로드할 권한이 있어야 합니다. Lambda 콘솔에서 적극 추적을 활성화하면 Lambda가 필요한 권한을 함수의 실행 역할에 추가합니다. 그렇지 않으면 실행 역할에 AWSXRayDaemonWriteAccess 정책을 추가합니다.

X-Ray는 여전히 애플리케이션이 처리하는 요청에 대한 대표 샘플을 제공하면서 트레이스가 효율적일 수 있도록 샘플링 알고리즘을 적용합니다. 기본 샘플링 규칙은 초당 요청이 1개이며 추가 요청의 5퍼센트입니다. 이 샘플링 비율은 Lambda 함수에 대해 구성할 수 없습니다.

X-Ray에서 추적은 하나 이상의 서비스에서 처리되는 요청에 대한 정보를 기록합니다. 서비스는 하위 세그먼트의 계층을 포함하는 세그먼트를 기록합니다. Lambda는 호출 요청을 처리하는 Lambda 서비스의 세그먼트와 함수에 의해 수행된 작업에 대한 세그먼트를 기록합니다. 함수 세그먼트는 Initialization, InvocationOverhead의 하위 세그먼트와 함께 제공됩니다.

다음 예제에서는 두 개의 세그먼트가 있는 추적을 보여줍니다. 둘 다 이름이 my-function이지만, 하나는 AWS::Lambda 형식이고 다른 하나는 AWS::Lambda::Function 형식입니다. 함수 세그먼트는 하위 세그먼트를 표시하도록 확장됩니다.

중요

Lambda에서는 X-Ray SDK를 사용하여 Invocation 하위 세그먼트를 다운스트림 호출, 주석 및 메타데이터에 대한 추가 하위 세그먼트로 확장할 수 있습니다. 함수 세그먼트에 직접 액세스하거나 핸들러 호출 범위 외부에서 수행된 작업을 기록할 수 없습니다.

Lambda에서의 추적에 대한 언어별 소개는 다음 주제를 참조하십시오.

적극 계측을 지원하는 서비스의 전체 목록은 AWS X-Ray 개발자 안내서에서 지원되는 AWS 서비스를 참조하십시오.

실행 역할 권한

X-Ray에 추적 데이터를 보내려면 Lambda에 다음 권한이 필요합니다. 이러한 권한을 함수의 실행 역할에 추가합니다.

이러한 권한은 AWSXRayDaemonWriteAccess 관리형 정책에 포함됩니다.

AWS X-Ray 데몬

X-Ray API로 추적 데이터를 직접 보내는 대신 X-Ray SDK는 데몬 프로세스를 사용합니다. AWS X-Ray 데몬은 Lambda 환경에서 실행되고 세그먼트 및 하위 세그먼트를 포함하는 UDP 트래픽을 수신하는 애플리케이션입니다. 수신 데이터를 버퍼링하고 배치로 X-Ray에 작성하여 호출을 추적하는 데 필요한 처리 및 메모리 오버헤드를 줄입니다.

Lambda 런타임을 사용하면 데몬이 함수에 구성된 메모리의 최대 3% 또는 16MB 중 더 큰 메모리를 사용할 수 있습니다. 호출 중에 함수의 메모리가 부족하면 런타임은 먼저 데몬 프로세스를 종료하여 메모리를 확보합니다.

데몬 프로세스는 Lambda에 의해 완전히 관리되며 사용자가 구성할 수 없습니다. 함수 호출에 의해 생성된 모든 세그먼트는 Lambda 함수와 동일한 계정에 기록됩니다. 데몬은 다른 계정으로 리디렉션하도록 구성할 수 없습니다.

자세한 내용은 X-Ray 개발자 안내서의 X-Ray 데몬을 참조하십시오.

Lambda API로 활성 추적 사용

AWS CLI 또는 AWS SDK를 사용하여 추적 구성을 관리하려면 다음 API 작업을 사용합니다.

다음 예제 AWS CLI 명령은 my-function이라는 함수에 대한 활성 추적을 사용하도록 설정합니다.

$ aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

추적 모드는 버전별 구성의 일부로서 함수의 버전을 게시할 때 잠깁니다. 게시된 버전에 대한 추적 모드는 변경할 수 없습니다.

AWS CloudFormation으로 활성 추적 사용

AWS CloudFormation 템플릿으로 AWS::Lambda::Function 리소스에 대한 활성 추적을 사용하려면 TracingConfig 속성을 사용합니다.

function-inline.yml – 추적 구성

Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

AWS Serverless Application Model(AWS SAM) AWS::Serverless::Function 리소스의 경우 Tracing 속성을 사용합니다.

template.yml – 추적 구성

Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...