AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie kann ich eine Ebene für meine Lambda-Python-Funktion erstellen?
Ich möchte eine Ebene für meine AWS-Lambda-Python-Funktion erstellen.
Lösung
Die folgenden Anweisungen stellen eine Anwendung bereit, um eine Ebene zum Aufrufen einer Lambda-Python-Funktion zu erstellen.
- Öffnen Sie die AWS-Serverless-Application-Repository-Konsole.
- Wählen Sie im Navigationsbereich Verfügbare Anwendungen aus.
- Wählen Sie Apps anzeigen, die benutzerdefinierte IAM-Rollen oder Ressourcenrichtlinien erstellen.
- Geben Sie im Suchbereich python-lambda-layer-creation ein.
- Wählen Sie die Funktion Python-Lambda-Layer-Creation.
- Wählen Sie in den Python-Lambda-Layer-Creation-Anwendungseinstellungen die Option Ich bestätige, dass diese App benutzerdefinierte IAM-Rollen erstellt, und wählen Sie dann Bereitstellen aus.
Sie können eine Ebene erstellen, um Ihre Lambda-Funktion aufzurufen und eine Liste von Abhängigkeiten zu übergeben, die in den Metadaten der Ebene enthalten sind.
Im folgenden Beispiel werden Python-Lambda-Ebenen erstellt, die die Bibliotheken “requests” (neueste Version), “numpy” (Version 1.20.1) und “keyring” (Version >= 4.1.1) enthalten. Sie können die Lambda-Funktion mit einer Nutzlast aufrufen, die der folgenden ähnelt:
{ "dependencies": { "requests": "latest", "numpy": "== 1.20.1", "keyring": ">= 4.1.1" }, "layer": { "name": "a-sample-python-lambda-layer", "description": "this layer contains requests, numpy and keyring libraries", "compatible-runtimes": ["python3.6","python3.7","python3.8"], "license-info": "MIT" } }
Notieren Sie sich den ARN, um die Lambda-Python-Funktionsebene zu testen. Erstellen Sie dann einen AWS-CloudFormation-Stack mit einer YAML-Vorlage, die der folgenden ähnelt:
AWSTemplateFormatVersion: '2010-09-09' Parameters: Layer: Type: String Description: The ARN of the lambda function layer Resources: LambdaFunction: Type: AWS::Lambda::Function Properties: Code: ZipFile: | import json import requests import numpy as np def handler(event, context): try: ip = requests.get("http://checkip.amazonaws.com/") x = np.array([2,3,1,0]) except requests.RequestException as e: raise e return { "statusCode": 200, "body": json.dumps({ "array[0]": ("%s" % str(x[0])), "location": ip.text.replace("\n", "") }), } Handler: index.handler Runtime: python3.7 MemorySize: 128 Timeout: 30 Layers: - !Ref Layer Role: Fn::GetAtt: - LambdaExecutionRole - Arn LambdaExecutionRole: Description: Allow Lambda to connect function to publish Lambda layers Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole # Policies: # - PolicyName: AllowPublishLambdaLayer # PolicyDocument: # Version: '2012-10-17' # Statement: # - Effect: Allow # Action: lambda:PublishLayerVersion # Resource: '*'
Führen Sie die Lambda-Python-Funktion aus. Beispiel für eine Antwort:
{ "statusCode": 200, "body": "{\"array[0]\": \"2\", \"location\": \"[your-outbound-ip-address]\"}" }
Hinweis: Diese Lambda-Funktion verwendet pip, um Abhängigkeiten zu verwalten, sodass die in der Lambda-Ebene enthaltenen Bibliotheken im Python-Paketindex-Repository existieren.
Beispiele für Python-Bibliotheken, die in der für die Abhängigkeiten und Ebenenattribute definierten Ebene enthalten sind, finden Sie unter pip install auf der **Pip-**Website.
Weitere Informationen finden Sie unter Erstellen und Freigeben von Lambda-Ebenen.
Ähnliche Informationen
Lambda-Funktionen mit Python entwickeln
Verwenden von Ebenen mit Ihrer Lambda-Funktion
Wie erstelle ich eine Lambda-Ebene mit einer simulierten Lambda-Umgebung mit Docker?
- Themen
- Compute
- Tags
- AWS Lambda
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 9 Monaten