Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von Lambda mit Infrastructure as Code (IaC)
Lambda-Funktionen werden selten isoliert ausgeführt. Stattdessen sind sie often Teil einer Serverless-Anwendung, zu der auch andere Ressourcen wie Datenbanken, Warteschlangen und Speicher gehören. Mit infrastructure as code (IaC)
IaC-Tools für Lambda
- AWS CloudFormation
-
CloudFormation ist der grundlegende IaC-Dienst von AWS. Sie können YAML- oder JSON-Vorlagen verwenden, um Ihre gesamte AWS-Infrastruktur, einschließlich Lambda-Funktionen, zu modellieren und bereitzustellen. CloudFormation bewältigt die Komplexität beim Erstellen, Aktualisieren und Löschen Ihrer AWS-Ressourcen.
- AWS Serverless Application Model (AWS SAM)
-
AWS SAM ist ein Open-Source-Framework, das auf CloudFormation aufbaut. Es bietet eine vereinfachte Syntax für die Definition serverless-Anwendungen. Verwenden Sie AWS SAM-Vorlagen, um Lambda-Funktionen, APIs, Datenbanken und Ereignisquellen schnell mit nur wenigen YAML-Zeilen bereitzustellen.
- AWS Cloud Development Kit (AWS CDK)
-
Das CDK ist ein IaC-Ansatz, bei dem der Code an erster Stelle steht. Sie können Ihre Lambda-basierte Architektur mit TypeScript, JavaScript, Python, Java, C#/.Net oder Go definieren. Wählen Sie Ihre bevorzugte Sprache und verwenden Sie Programmierelemente wie Parameter, Konditionale, Schleifen, Komposition und Vererbung, um das gewünschte Ergebnis Ihrer Infrastruktur zu definieren. Das CDK generiert dann die zugrunde liegenden CloudFormation-Vorlagen für die Bereitstellung. Ein Beispiel für die Verwendung von Lambda mit CDK finden Sie unter Bereitstellung von Lambda-Funktionen mit dem AWS CDK.

AWS bietet außerdem einen Service namens AWS-Infrastruktur-Composer zur Entwicklung von IaC-Vorlagen mithilfe einer einfachen grafischen Oberfläche. Mit Infrastructure Composer entwerfen Sie eine Anwendungsarchitektur, indem Sie AWS-Services auf einer visuellen Zeichenfläche ziehen, gruppieren und verbinden. Infrastructure Composer erstellt dann eine AWS SAM-Vorlage oder eine AWS CloudFormation-Vorlage aus Ihrem Entwurf, die Sie zur Bereitstellung Ihrer Anwendung verwenden können.
Im folgenden Abschnitt Erste Schritte mit IaC für Lambda verwenden Sie Infrastructure Composer, um eine Vorlage für eine Serverless-Anwendung zu entwickeln, die auf einer vorhandenen Lambda-Funktion basiert.
Erste Schritte mit IaC für Lambda
In diesem Tutorial können Sie mit der Verwendung von IaC mit Lambda beginnen, indem Sie eine AWS SAM-Vorlage aus einer vorhandenen Lambda-Funktion erstellen und dann eine Serverless-Anwendung in Infrastructure Composer erstellen, indem Sie weitere AWS-Ressourcen hinzufügen.
Während Sie dieses Tutorial durchführen, lernen Sie einige grundlegende Konzepte kennen, z. B. wie AWS-Ressourcen in AWS SAM angegeben werden. Zudem erfahren Sie, wie Sie mit Infrastructure Composer eine Serverless-Anwendung erstellen, die Sie mit AWS SAM oder AWS CloudFormation bereitstellen können.
Führen Sie für dieses Tutorial die folgenden Schritte aus:
-
Erstellen Sie eine Beispiel-Lambda-Funktion.
-
Verwenden Sie die Lambda-Konsole, um die AWS SAM-Vorlage für die Funktion anzuzeigen.
-
Exportieren Sie die Konfiguration Ihrer Funktion nach AWS-Infrastruktur-Composer und entwerfen Sie eine einfache Serverless-Anwendung, die auf der Konfiguration Ihrer Funktion basiert.
-
Speichern Sie eine aktualisierte AWS SAM-Vorlage, die Sie als Grundlage für die Bereitstellung Ihrer Serverless-Anwendung verwenden können.
Voraussetzungen
In diesem Tutorial verwenden Sie die Funktion für die lokale Synchronisierung von Infrastructure Composer, um Ihre Vorlagen- und Codedateien auf Ihrem lokalen Build-Computer zu speichern. Um diese Funktion nutzen zu können, benötigen Sie einen Browser, der die File System Access-API unterstützt. Damit können Webanwendungen Dateien in Ihrem lokalen Dateisystem lesen, schreiben und speichern. Wir empfehlen, entweder Google Chrome oder Microsoft Edge zu verwenden. Weitere Informationen zur File System Access-API finden Sie unter Was ist die File System Access-API?.
Erstellen einer Lambda-Funktion
In diesem ersten Schritt erstellen Sie eine Lambda-Funktion, mit der Sie den Rest des Tutorials abschließen können. Der Einfachheit halber verwenden Sie die Lambda-Konsole, um mithilfe der Python 3.11-Laufzeit eine grundlegende „Hello World“-Funktion zu erstellen.
So erstellen Sie eine „Hello World“-Lambda-Funktion mit der Konsole
-
Öffnen Sie die Lambda-Konsole
. -
Wählen Sie Funktion erstellen aus.
-
Lassen Sie Ohne Vorgabe erstellen ausgewählt. Geben Sie im Feld Grundlegende Informationen für Funktionsname
LambdaIaCDemo
ein. -
Wählen Sie für Laufzeit die Option Python 3.11 aus.
-
Wählen Sie Funktion erstellen aus.
Sehen Sie sich die AWS SAM-Vorlage für Ihre Funktion an.
Bevor Sie die Konfiguration Ihrer Funktion nach Infrastructure Composer exportieren, verwenden Sie die Lambda-Konsole, um die aktuelle Konfiguration Ihrer Funktion als AWS SAM-Vorlage anzuzeigen. Wenn Sie die Schritte in diesem Abschnitt befolgen, erfahren Sie mehr über den Aufbau einer AWS SAM-Vorlage und darüber, wie Sie Ressourcen wie Lambda-Funktionen definieren, um mit der Spezifizierung einer Serverless-Anwendung zu beginnen.
So sehen Sie sich die AWS SAM-Vorlage für Ihre Funktion an
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie die Funktion aus, die Sie gerade erstellt haben (
LambdaIaCDemo
). -
Wählen Sie im Bereich Funktionsübersicht die Option Vorlage.
Anstelle des Diagramms, das die Konfiguration Ihrer Funktion darstellt, wird eine AWS SAM-Vorlage für Ihre Funktion angezeigt. Die Vorlage sollte jetzt wie folgt aussehen:
# This AWS SAM template has been generated from your function's # configuration. If your function has one or more triggers, note # that the AWS resources associated with these triggers aren't fully # specified in this template and include placeholder values.Open this template # in AWS Application Composer or your favorite IDE and modify # it to specify a serverless application with other AWS resources. AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Specification template describing your function. Resources: LambdaIaCDemo: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 3 Handler: lambda_function.lambda_handler Runtime: python3.11 Architectures: - x86_64 EventInvokeConfig: MaximumEventAgeInSeconds: 21600 MaximumRetryAttempts: 2 EphemeralStorage: Size: 512 RuntimeManagementConfig: UpdateRuntimeOn: Auto SnapStart: ApplyOn: None PackageType: Zip Policies: Statement: - Effect: Allow Action: - logs:CreateLogGroup Resource: arn:aws:logs:us-east-1:123456789012:* - Effect: Allow Action: - logs:CreateLogStream - logs:PutLogEvents Resource: - >- arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/LambdaIaCDemo:*
Nehmen wir uns einen Moment Zeit, um uns die YAML-Vorlage für Ihre Funktion anzusehen und einige wichtige Konzepte zu verstehen.
Die Vorlage beginnt mit der Deklaration Transform: AWS::Serverless-2016-10-31
. Diese Deklaration ist erforderlich, weil im Hintergrund AWS SAM-Vorlagen über AWS CloudFormation bereitgestellt werden. Mithilfe der Transform
-Anweisung wird die Vorlage als AWS SAM-Vorlagendatei identifiziert.
Nach der Transform
-Deklaration folgt der Resources
-Abschnitt. Hier werden die AWS-Ressourcen definiert, die Sie mit Ihrer AWS SAM-Vorlage bereitstellen möchten. AWS SAM-Vorlagen können eine Kombination aus AWS SAM-Ressourcen und AWS CloudFormation-Ressourcen enthalten. Das liegt daran, dass AWS SAM-Vorlagen bei der Bereitstellung zu AWS CloudFormation-Vorlagen erweitert werden, sodass jeder AWS SAM-Vorlage jede gültige AWS CloudFormation-Syntax hinzugefügt werden kann.
Im Moment ist im Abschnitt Resources
der Vorlage nur eine Ressource definiert, Ihre Lambda-Funktion LambdaIaCDemo
. Um einer AWS SAM-Vorlage eine Lambda-Funktion hinzuzufügen, verwenden Sie den AWS::Serverless::Function
-Ressourcentyp. Die Properties
der Ressource einer Lambda-Funktion definieren die Laufzeit, den Funktionshandler und andere Konfigurationsoptionen der Funktion. Der Pfad zum Quellcode Ihrer Funktion, den AWS SAM für die Bereitstellung der Funktion verwenden soll, ist hier ebenfalls definiert. Weitere Informationen zu Lambda-Funktionsressourcen in AWS SAM finden Sie unter AWS::Serverless::Function im AWS SAM-Entwicklerhandbuch.
Neben den Funktionseigenschaften und Konfigurationen ist in der Vorlage auch eine AWS Identity and Access Management-Richtlinie (IAM) für Ihre Funktion angegeben. Diese Richtlinie gibt Ihrer Funktion die Berechtigung zum Schreiben von Protokollen in Amazon CloudWatch Logs. Wenn Sie eine Funktion in der Lambda-Konsole erstellen, hängt Lambda diese Richtlinie automatisch an Ihre Funktion an. Weitere Informationen zur Angabe einer IAM-Richtlinie für eine Funktion in einer AWS SAM-Vorlage finden Sie in der policies
-Eigenschaft auf der Seite AWS::Serverless::Function im AWS SAM-Entwicklerleitfaden.
Weitere Informationen zur Struktur von AWS SAM-Vorlagen finden Sie unter AWS SAM-Vorlagenaufbau.
Verwenden von AWS-Infrastruktur-Composer zum Entwerfen einer Serverless-Anwendung
Um mit der Erstellung einer einfachen Serverless-Anwendung zu beginnen, die die AWS SAM-Vorlage Ihrer Funktion als Ausgangspunkt verwendet, exportieren Sie Ihre Funktionskonfiguration nach Infrastructure Composer und aktivieren den lokalen Synchronisierungsmodus von Infrastructure Composer. Die Funktion für die lokale Synchronisierung speichert den Code Ihrer Funktion und Ihre AWS SAM-Vorlage automatisch auf Ihrem lokalen Build-Computer und sorgt dafür, dass Ihre gespeicherte Vorlage synchronisiert wird, wenn Sie weitere AWS-Ressourcen in Infrastructure Composer hinzufügen.
So exportieren Sie Ihre Funktion nach Infrastructure Composer
-
Wählen Sie im Bereich Funktionsübersicht die Option Nach Application Composer exportieren aus.
Um die Konfiguration und den Code Ihrer Funktion nach Infrastructure Composer zu exportieren, erstellt Lambda einen Amazon-S3-Bucket in Ihrem Konto, um diese Daten vorübergehend zu speichern.
-
Wählen Sie im Dialogfeld Projekt bestätigen und erstellen aus, um den Standardnamen für diesen Bucket zu akzeptieren und die Konfiguration und den Code Ihrer Funktion nach Infrastructure Composer zu exportieren.
-
(Optional) Um einen anderen Namen für den von Lambda erstellten Amazon-S3-Bucket auszuwählen, geben Sie einen neuen Namen ein und wählen Sie Projekt bestätigen und erstellen aus. Die Amazon-S3-Bucket-Namen müssen global eindeutig sein und den Regeln für die Benennung von Buckets entsprechen.
Wenn Sie Projekt bestätigen und erstellen auswählen, wird die Infrastructure-Composer-Konsole geöffnet. Auf der Zeichenfläche sehen Sie Ihre Lambda-Funktion.
-
Wählen Sie in der Menü-Dropdown-Liste die Option Lokale Synchronisierung aktivieren aus.
-
Wählen Sie in dem sich öffnenden Dialogfeld die Option Ordner auswählen aus und wählen Sie einen Ordner auf Ihrem lokalen Build-Computer aus.
-
Wählen Sie Aktivieren aus, um die lokale Synchronisierung zu aktivieren.
Zum Exportieren Ihrer Funktion nach Infrastructure Composer benötigen Sie die Berechtigung zur Verwendung von bestimmten API-Aktionen. Wenn Sie Ihre Funktion nicht exportieren können, beachten Sie Erforderliche Berechtigungen und stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen.
Anmerkung
Für den Bucket, den Lambda erstellt, wenn Sie eine Funktion nach Infrastructure Composer exportieren, gelten die Amazon-S3-Standardpreise
Folgen Sie den Anweisungen unter Löschen eines Buckets, nachdem Sie Ihre Funktion nach Infrastructure Composer exportiert haben, um zu vermeiden, dass für Ihr AWS-Konto zusätzliche Kosten anfallen. Weitere Informationen zum Amazon-S3-Bucket-Namen, den Lamda erstellt, finden Sie unter Verwenden AWS Lambda mit AWS-Infrastruktur-Composer.
So entwerfen Sie Ihre Serverless-Anwendung in Infrastructure Composer
Nach der Aktivierung der lokalen Synchronisierung werden die Änderungen, die Sie in Infrastructure Composer vornehmen, in der AWS SAM-Vorlage widergespiegelt, die auf Ihrer lokalen Build-Maschine gespeichert ist. Sie können jetzt zusätzliche AWS-Ressourcen per Drag-and-Drop auf die Infrastructure-Composer-Zeichenfläche ziehen, um Ihre Anwendung zu erstellen. In diesem Beispiel fügen Sie eine einfache Amazon-SQS-Warteschlange als Trigger für Ihre Lambda-Funktion und eine DynamoDB-Tabelle für die Funktion hinzu, in die Daten geschrieben werden sollen.
-
Fügen Sie Ihrer Lambda-Funktion einen Amazon-SQS-Trigger hinzu, indem Sie wie folgt vorgehen:
-
Geben Sie im Suchfeld in der Ressourcenpalette
SQS
ein. -
Ziehen Sie die Ressource SQS-Warteschlange auf Ihre Zeichenfläche und positionieren Sie sie links neben Ihrer Lambda-Funktion.
-
Wählen Sie Details und geben Sie
LambdaIaCQueue
als Logische ID ein. -
Wählen Sie Save (Speichern) aus.
-
Verbinden Sie Ihre Amazon-SQS- und Lambda-Ressourcen, indem Sie auf der SQS-Warteschlangenkarte auf den Port Abonnement klicken und ihn auf den linken Port auf der Lambda-Funktionskarte ziehen. Das Erscheinen einer Linie zwischen den beiden Ressourcen weist auf eine erfolgreiche Verbindung hin. Infrastructure Composer zeigt außerdem unten auf der Zeichenfläche eine Meldung an, die darauf hinweist, dass die beiden Ressourcen erfolgreich verbunden wurden.
-
-
Fügen Sie eine Amazon-DynamoDB-Tabelle für Ihre Lambda-Funktion hinzu, in die Daten geschrieben werden sollen, indem Sie so vorgehen:
-
Geben Sie im Suchfeld in der Ressourcenpalette
DynamoDB
ein. -
Ziehen Sie die Ressource DynamoDB-Tabelle auf Ihre Zeichenfläche und positionieren Sie sie rechts neben Ihrer Lambda-Funktion.
-
Wählen Sie Details und geben Sie
LambdaIaCTable
als Logische ID ein. -
Wählen Sie Save (Speichern) aus.
-
Verbinden Sie die DynamoDB-Tabelle mit Ihrer Lambda-Funktion, indem Sie auf den rechten Port der Lambda-Funktionskarte klicken und ihn auf den linken Port der DynamoDB-Karte ziehen.
-
Nachdem Sie diese zusätzlichen Ressourcen hinzugefügt haben, werfen wir einen Blick auf die aktualisierte AWS SAM-Vorlage, die Infrastructure Composer erstellt hat.
So zeigen Sie Ihre aktualisierte AWS SAM-Vorlage an
-
Wählen Sie auf der Infrastructure-Composer-Zeichenfläche Vorlage, um von der Zeichenflächenansicht zur Vorlagenansicht zu wechseln.
Ihre AWS SAM-Vorlage sollte jetzt die folgenden zusätzlichen Ressourcen und Eigenschaften enthalten:
-
Eine Amazon-SQS-Warteschlange mit der ID
LambdaIaCQueue
LambdaIaCQueue: Type: AWS::SQS::Queue Properties: MessageRetentionPeriod: 345600
Wenn Sie eine Amazon-SQS-Warteschlange mit Infrastructure Composer hinzufügen, setzt Infrastructure Composer die Eigenschaft
MessageRetentionPeriod
. Sie können dieFifoQueue
-Eigenschaft auch festlegen, indem Sie auf der SQS-Warteschlangenkarte Details auswählen und die Fifo-Warteschlange aktivieren oder deaktivieren.Um weitere Eigenschaften für Ihre Warteschlange festzulegen, können Sie die Vorlage manuell bearbeiten, um sie hinzuzufügen. Weitere Informationen zur
AWS::SQS::Queue
-Ressource und ihre verfügbaren Eigenschaften finden Sie unter AWS::SQS::Queue im AWS CloudFormation-Benutzerhandbuch. -
Eine
Events
-Eigenschaft in Ihrer Lambda-Funktionsdefinition, die die Amazon-SQS-Warteschlange als Trigger für die Funktion angibtEvents: LambdaIaCQueue: Type: SQS Properties: Queue: !GetAtt LambdaIaCQueue.Arn BatchSize: 1
Die
Events
-Eigenschaft besteht aus einem Ereignistyp und einer Reihe von Eigenschaften, die vom Typ abhängen. Weitere Informationen zu den verschiedenen AWS-Services, die Sie zum Auslösen einer Lambda-Funktion konfigurieren können, und zu den Eigenschaften, die Sie festlegen können, finden Sie unter EventSource im AWS SAM-Entwicklerleitfaden. -
Eine DynamoDB-Tabelle mit dem Bezeichner
LambdaIaCTable
LambdaIaCTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S BillingMode: PAY_PER_REQUEST KeySchema: - AttributeName: id KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES
Wenn Sie mit Infrastructure Composer eine DynamoDB-Tabelle hinzufügen, können Sie die Schlüssel Ihrer Tabelle festlegen, indem Sie auf der DynamoDB-Tabellenkarte Details auswählen und die Schlüsselwerte bearbeiten. Infrastructure Composer legt auch Standardwerte für eine Reihe anderer Eigenschaften fest, darunter
BillingMode
undStreamViewType
.Weitere Informationen zu diesen und anderen Eigenschaften, die Sie Ihrer AWS SAM-Vorlage hinzufügen können, finden Sie unter AWS::DynamoDB::Table im AWS CloudFormation-Benutzerhandbuch.
-
Eine neue IAM-Richtlinie, die Ihrer Funktion die Berechtigung gewährt, CRUD-Operationen für die von Ihnen hinzugefügte DynamoDB-Tabelle auszuführen.
Policies: ... - DynamoDBCrudPolicy: TableName: !Ref LambdaIaCTable
Die endgültige vollständige AWS SAM-Vorlage sollte jetzt so aussehen:
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Specification template describing your function. Resources: LambdaIaCDemo: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 3 Handler: lambda_function.lambda_handler Runtime: python3.11 Architectures: - x86_64 EventInvokeConfig: MaximumEventAgeInSeconds: 21600 MaximumRetryAttempts: 2 EphemeralStorage: Size: 512 RuntimeManagementConfig: UpdateRuntimeOn: Auto SnapStart: ApplyOn: None PackageType: Zip Policies: - Statement: - Effect: Allow Action: - logs:CreateLogGroup Resource: arn:aws:logs:us-east-1:594035263019:* - Effect: Allow Action: - logs:CreateLogStream - logs:PutLogEvents Resource: - arn:aws:logs:us-east-1:594035263019:log-group:/aws/lambda/LambdaIaCDemo:* - DynamoDBCrudPolicy: TableName: !Ref LambdaIaCTable Events: LambdaIaCQueue: Type: SQS Properties: Queue: !GetAtt LambdaIaCQueue.Arn BatchSize: 1 Environment: Variables: LAMBDAIACTABLE_TABLE_NAME: !Ref LambdaIaCTable LAMBDAIACTABLE_TABLE_ARN: !GetAtt LambdaIaCTable.Arn LambdaIaCQueue: Type: AWS::SQS::Queue Properties: MessageRetentionPeriod: 345600 LambdaIaCTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: id AttributeType: S BillingMode: PAY_PER_REQUEST KeySchema: - AttributeName: id KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES
Stellen Sie Ihre Serverless-Anwendung mithilfe von AWS SAM (optional) bereit
Wenn Sie AWS SAM verwenden möchten, um eine Serverless-Anwendung mithilfe der Vorlage bereitzustellen, die Sie gerade in Infrastructure Composer erstellt haben, müssen Sie zuerst die AWS SAM-CLI installieren. Befolgen Sie hierzu die Anweisungen unter Installieren der AWS SAM-CLI.
Bevor Sie Ihre Anwendung bereitstellen, müssen Sie auch den Funktionscode aktualisieren, den Infrastructure Composer zusammen mit Ihrer Vorlage gespeichert hat. Derzeit enthält die von Infrastructure Composer gespeicherte lambda_function.py
-Datei nur den grundlegenden „Hello World“-Code, den Lambda bei der Erstellung der Funktion bereitgestellt hat.
Um Ihren Funktionscode zu aktualisieren, kopieren Sie den folgenden Code und fügen Sie ihn in die lambda_function.py
-Datei ein, die Infrastructure Composer auf Ihrer lokalen Build-Maschine gespeichert hat. Sie haben das Verzeichnis, in dem Infrastructure Composer diese Datei speichern soll, beim Aktivieren des Modus „Lokale Synchronisation“ angegeben.
Dieser Code akzeptiert ein Schlüssel-Wert-Paar in einer Nachricht von der Amazon-SQS-Warteschlange, die Sie in Infrastructure Composer erstellt haben. Wenn sowohl der Schlüssel als auch der Wert Zeichenfolgen sind, verwendet der Code diese Werte, um ein Element in die in Ihrer Vorlage definierte DynamoDB-Tabelle zu schreiben.
import boto3 import os import json # define the DynamoDB table that Lambda will connect to tablename = os.environ['LAMBDAIACTABLE_TABLE_NAME'] # create the DynamoDB resource dynamo = boto3.client('dynamodb') def lambda_handler(event, context): # get the message out of the SQS event message = event['Records'][0]['body'] data = json.loads(message) # write event data to DDB table if check_message_format(data): key = next(iter(data)) value = data[key] dynamo.put_item( TableName=tablename, Item={ 'id': {'S': key}, 'Value': {'S': value} } ) else: raise ValueError("Input data not in the correct format") # check that the event object contains a single key value # pair that can be written to the database def check_message_format(message): if len(message) != 1: return False key, value = next(iter(message.items())) if not (isinstance(key, str) and isinstance(value, str)): return False else: return True
So stellen Sie Ihre Serverless-Anwendung bereit
Gehen Sie wie folgt vor, um Ihre Anwendung mithilfe der AWS SAM-CLI bereitzustellen. Damit Ihre Funktion korrekt erstellt und bereitgestellt werden kann, muss die Python-Version 3.11 auf Ihrem Build-Computer und in Ihrem PATH
installiert sein.
-
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem Infrastructure Composer Ihre Dateien
template.yaml
undlambda_function.py
gespeichert hat.sam build
Dieser Befehl sammelt die Build-Artefakte für Ihre Anwendung und platziert sie im richtigen Format und am richtigen Ort, um sie bereitzustellen.
-
Führen Sie den folgenden Befehl aus, um Ihre Anwendung bereitzustellen und die in Ihrer AWS SAM-Vorlage angegebenen Lambda-, Amazon-SQS- und DynamoDB-Ressourcen zu erstellen.
sam deploy --guided
Wenn Sie die
--guided
-Markierung verwenden, werden Ihnen in AWS SAM Eingabeaufforderungen angezeigt, die Sie durch den Bereitstellungsprozess führen. Akzeptieren Sie für diese Bereitstellung die Standardoptionen, indem Sie die Eingabetaste drücken.
AWS SAM erstellt während des Bereitstellungsprozesses die folgenden Ressourcen in Ihrem AWS-Konto:
-
Ein AWS CloudFormation-Stack mit dem Namen
sam-app
-
Eine Lambda-Funktion mit dem Namensformat
sam-app-LambdaIaCDemo-
99VXPpYQVv1M
-
Eine Amazon-SQS-Warteschlange mit dem Namensformat
sam-app-LambdaIaCQueue-
xL87VeKsGiIo
-
Eine DynamoDB-Tabelle mit dem Namensformat
sam-app-LambdaIaCTable-
CN0S66C0VLNV
AWS SAM erstellt auch die erforderlichen IAM-Rollen und -Richtlinien, sodass Ihre Lambda-Funktion Nachrichten aus der Amazon-SQS-Warteschlange lesen und CRUD-Operationen in der DynamoDB-Tabelle ausführen kann.
Testen der bereitgestellten Anwendung (optional)
Um zu überprüfen, ob Ihre Serverless-Anwendung korrekt bereitgestellt wurde, senden Sie eine Nachricht an Ihre Amazon-SQS-Warteschlange, die ein Schlüssel-Wert-Paar enthält, und überprüfen Sie, ob Lambda mit diesen Werten ein Element in Ihre DynamoDB-Tabelle schreibt.
So testen Sie Ihre Serverless-Anwendung
-
Öffnen Sie die Seite Warteschlangen
der Amazon-SQS-Konsole und wählen Sie die Warteschlange aus, die AWS SAM aus Ihrer Vorlage erstellt hat. Der Name weist das Format sam-app-LambdaIaCQueue-
auf.xL87VeKsGiIo
-
Wählen Sie Nachrichten senden und empfangen aus und fügen Sie den folgenden JSON in den Nachrichtentext im Abschnitt Nachricht senden ein.
{ "myKey": "myValue" }
-
Klicken Sie auf Send Message (Nachricht senden).
Wenn Sie Ihre Nachricht an die Warteschlange senden, ruft Lambda Ihre Funktion über Ihre Zuordnung von Ereignisquellen auf, die in Ihrer AWS SAM-Vorlage definiert ist. Um zu bestätigen, dass Lambda Ihre Funktion wie erwartet aufgerufen hat, vergewissern Sie sich, dass Ihrer DynamoDB-Tabelle ein Element hinzugefügt wurde.
-
Öffnen Sie die Seite Tabellen
der DynamoDB-Konsole und wählen Sie Ihre Tabelle aus. Der Name weist das Format sam-app-LambdaIaCTable-
auf.CN0S66C0VLNV
-
Wählen Sie Explore Table Items (Tabellenelemente erkudnen) aus. Im Bereich Zurückgegebene Elemente sollten Sie ein Element mit der ID
myKey
und dem WertmyValue
sehen.