[PYTHON] Easy X-Ray avec Lambda Layer et CloudFormation / sam-cli

introduction

Cet article Lambda Layer and X \ -Ray \ -Qiita montre comment incorporer X-Ray dans Lambda Layer. Lors du déploiement de plusieurs lambdas, c'est assez agréable car il peut être attaché et détaché en un seul coup sans incorporer X-Ray individuellement.

Cela fait du bien, mais je me demandais s'il pouvait être converti en CloudFormation car il serait compliqué de lancer quelques commandes. [Les couches Lambda peuvent maintenant être créées avec l'AWS SAM CLI. \ -Qiita](https: // qiita) J'ai trouvé l'article .com / hayao_k / items / f8c7ad5e35e29d590957).

Donc, si vous récupérez le contenu des deux articles, ce sera comme ça

** Facile à créer X-Ray LambdaLayer avec CloudFormation! **

C'est un article appelé.

X-Ray est un outil de traçage qui peut être utilisé avec AWS Lambda. En utilisant X-Ray, «Quelle partie de Lambda prend du temps?» Et «Quel appel de ressource (DynamoDB, S3, etc.) prend du temps?» Est comme illustré dans la figure ci-dessous. Vous pourrez vérifier.

sample1

sample2

(Source: AWS X \ -Ray Console: \ -AWS X \ -Ray)

Définition du modèle de couche Lambda X-Ray

En plus de template.yaml, vous n'avez besoin que de ** 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-Définition de la couche Lambda de Ray
  XRayLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      Description: Lambda Layer for XRay
      ContentUri: xray-layer-src
      CompatibleRuntimes:
        - python3.8  #Spécifiez le runtime Python que vous utilisez ici
    Metadata:
      BuildMethod: python3.8  # sam-Doit être spécifié au moment de la construction avec cli

  #Exemple de définition lambda utilisant XRayLayer
  SomeFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambda/src/
      Handler: lambda_handler.lambda_handler
      Runtime: python3.8
      Tracing: Active
      Layers:
        - !Ref XRayLayer  #Référence du calque créé

xray-layer-src/requirements.txt

xray-layer-src/requirements.txt


aws-xray-sdk

Il est acceptable de spécifier uniquement aws-xray-sdk ici dans la spécification de la bibliothèque à inclure dans la couche Lambda.

Vous pouvez désormais créer des ressources pour la couche Lambda X-Ray. Le déploiement est le même que lors de l'utilisation de sam.

sam build
sam deploy

Exemple Lambda utilisant X-Ray

Le code source qui utilise X-Ray est le suivant, par exemple.

lambda-src/lamda_handler.py


import ...

#Importez le SDK XRay. Doit être importé en dernier comme dans la documentation officielle
from aws_xray_sdk.core import patch_all

#Collectivement dans des bibliothèques associées telles que boto3 X-Appliquer le patch Ray
patch_all()

def lambda_handler(event, context):
    ...

Lien de référence

Recommended Posts

Easy X-Ray avec Lambda Layer et CloudFormation / sam-cli
Easy Slackbot avec Docker et Errbot
Surveillance simple du serveur avec AWS Lambda (Python) et notification des résultats avec Slack
[AWS] Associez Lambda et S3 à boto3
Facile! Utilisez gensim et word2vec avec MAMP.
Scraping Web facile avec Python et Ruby
API REST facile avec API Gateway / Lambda / DynamoDB
[AWS] Essayez de tracer API Gateway + Lambda avec X-Ray
Pages HTML dynamiques créées avec AWS Lambda et Python
IoT facile pour démarrer avec Raspeye et MESH
Créer une fonction Lambda de version Python (+ couche Lambda) avec Serverless Framework
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
Créer une couche pour AWS Lambda Python dans Docker
Essai de reconnaissance faciale facile avec Jetson Nano et caméra Web
Créez des tweets ordinaires comme une flotte avec AWS Lambda et Python