Lambda Layer 및 CloudFormation/sam-cli에서 즐거운 X-Ray

소개



Lambda Layer 및 X-Ray - Qiita 이라는 기사에서는 X-Ray 를 Lambda Layer 로 통합하는 방법을 소개하고 있습니다. 여러 lambda를 배포하는 경우 개별적으로 X-Ray를 통합하지 않고 한 번에 분리할 수 있기 때문에 꽤 좋은 느낌입니다.

꽤 좋은 느낌입니다만, 조금 명령을 두드리는 것이 번거롭기 때문에, CloudFormation 화할 수 없을까, 라고 생각하고 있었던 곳 AWS SAM CLI에서 Lambda Layers를 빌드할 수 있습니다. - Qiita 라고 하는 기사를 발견했습니다.

그래서 두 기사의 내용을 갓짱하면,

X-Ray의 LambdaLayer를 CloudFormation으로 만들 수 있어 낙칭!

라는 기사입니다.

X-Ray는 AWS Lambda에서 사용할 수 있는 추적 도구입니다. X-Ray를 사용하면 "Lambda의 어느 부분에서 시간이 걸리고 있습니까?"확인할 수 있습니다.

sample1



(그림 참조: AWS X-Ray 콘솔: - AWS X-Ray )

X-Ray Lambda Layer 템플릿 정의



template.yaml 외에 xray-layer-src/requirements.txt만 사용하면 괜찮습니다.

template.yaml



template.yaml
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: CloufFormation Template X-Ray lambda layer sample

Resources:
  # X-Ray の Lambda Layer 定義
  XRayLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      Description: Lambda Layer for XRay
      ContentUri: xray-layer-src
      CompatibleRuntimes:
        - python3.8  # ここは利用している Python のランタイムを指定
    Metadata:
      BuildMethod: python3.8  # sam-cli でビルド時に指定が必要

  # XRayLayer を利用するラムダ定義の例
  SomeFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambda/src/
      Handler: lambda_handler.lambda_handler
      Runtime: python3.8
      Tracing: Active
      Layers:
        - !Ref XRayLayer  # 作成した Layer の参照

xray-layer-src/requirements.txt



xray-layer-src/requirements.txt
aws-xray-sdk

Lambda Layer에 넣을 라이브러리의 지정으로, 여기서는 aws-xray-sdk만을 지정하면 OK입니다.

이제 X-Ray Lambda Layer 리소스를 만들 수 있습니다. 배포는 일반 sam을 사용할 때와 동일합니다.
sam build
sam deploy

X-Ray를 사용하는 Lambda 예제



X-Ray를 이용하는 소스 코드는, 예를 들면 다음과 같습니다.

lambda-src/lamda_handler.py
import ...

# XRay SDK をインポート。公式ドキュメントにあるように最後にインポートする必要あり
from aws_xray_sdk.core import patch_all

# boto3 などの関連ライブラリにまとめて X-Ray のパッチをあてる
patch_all()

def lambda_handler(event, context):
    ...


참고 링크



  • Lambda Layer 및 X-Ray - Qiita (재 게시)

  • AWS SAM CLI에서 Lambda Layers를 빌드할 수 있습니다. - Qiita (재 게시)
  • 좋은 웹페이지 즐겨찾기