[PYTHON] Einfache Röntgenaufnahme mit Lambda Layer und CloudFormation / sam-cli

Einführung

Dieser Artikel Lambda-Schicht und X \ -Ray \ -Qiita zeigt, wie Röntgen in Lambda-Schicht eingebaut wird. Wenn mehrere Lambdas eingesetzt werden, ist dies sehr hilfreich, da sie auf einmal angebracht und abgenommen werden können, ohne dass Röntgenstrahlen einzeln eingebaut werden müssen.

Es fühlt sich ziemlich gut an, aber ich habe mich gefragt, ob es in CloudFormation konvertiert werden könnte, da es mühsam wäre, ein paar Befehle auszuführen. [Lambda-Ebenen können jetzt mit der AWS SAM-CLI erstellt werden. \ -Qiita](https: // qiita) Ich habe den Artikel .com / hayao_k / items / f8c7ad5e35e29d590957) gefunden.

Wenn Sie also den Inhalt der beiden Artikel lesen, wird es so sein

** Einfacher Röntgen-LambdaLayer mit CloudFormation! **

Es ist ein Artikel namens.

X-Ray ist ein Tracing-Tool, das mit AWS Lambda verwendet werden kann. Bei Verwendung von X-Ray wird "Welcher Teil von Lambda benötigt Zeit?" Und "Welcher Ressourcenaufruf (DynamoDB, S3 usw.) benötigt Zeit?" Wie in der folgenden Abbildung dargestellt. Sie können überprüfen.

sample1

sample2

(Quelle: AWS X \ -Ray-Konsole: \ -AWS X \ -Ray)

Definition der Röntgen-Lambda-Schicht-Vorlage

Zusätzlich zu template.yaml benötigen Sie nur ** xray-layer-src / require.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-Rays Lambda-Layer-Definition
  XRayLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      Description: Lambda Layer for XRay
      ContentUri: xray-layer-src
      CompatibleRuntimes:
        - python3.8  #Geben Sie die Python-Laufzeit an, die Sie hier verwenden
    Metadata:
      BuildMethod: python3.8  # sam-Muss beim Erstellen mit cli angegeben werden

  #Beispiel für eine Lambda-Definition mit XRayLayer
  SomeFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: lambda/src/
      Handler: lambda_handler.lambda_handler
      Runtime: python3.8
      Tracing: Active
      Layers:
        - !Ref XRayLayer  #Referenz der erstellten Ebene

xray-layer-src/requirements.txt

xray-layer-src/requirements.txt


aws-xray-sdk

Es ist in Ordnung, hier nur aws-xray-sdk anzugeben, wenn die Bibliothek angegeben wird, die in die Lambda-Ebene aufgenommen werden soll.

Sie können jetzt Ressourcen für die Röntgen-Lambda-Schicht erstellen. Die Bereitstellung ist dieselbe wie bei Verwendung von normalem Sam.

sam build
sam deploy

Lambda-Beispiel mit Röntgen

Der Quellcode, der Röntgen verwendet, lautet beispielsweise wie folgt.

lambda-src/lamda_handler.py


import ...

#Importieren Sie das XRay SDK. Muss zuletzt wie in der offiziellen Dokumentation importiert werden
from aws_xray_sdk.core import patch_all

#Gemeinsam in verwandten Bibliotheken wie boto3 X.-Ray Patch anwenden
patch_all()

def lambda_handler(event, context):
    ...

Referenzlink

Recommended Posts

Einfache Röntgenaufnahme mit Lambda Layer und CloudFormation / sam-cli
Einfacher Slackbot mit Docker und Errbot
Einfache Serverüberwachung mit AWS Lambda (Python) und Ergebnisbenachrichtigung mit Slack
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Einfach! Verwenden Sie gensim und word2vec mit MAMP.
Einfaches Web-Scraping mit Python und Ruby
Einfache REST-API mit API Gateway / Lambda / DynamoDB
[AWS] Versuchen Sie, API Gateway + Lambda mit X-Ray zu verfolgen
Dynamische HTML-Seiten mit AWS Lambda und Python
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Erstellen Sie eine Python-Version der Lambda-Funktion (+ Lambda-Schicht) mit Serverless Framework
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Einfacher Gesichtserkennungsversuch mit Jetson Nano und Webkamera
Machen Sie mit AWS Lambda und Python gewöhnliche Tweets flottenartig