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 bietet verschiedene Möglichkeiten, Ihren Code bereitzustellen und Funktionen zu erstellen. Sie können beispielsweise die Lambda-Konsole oder die AWS Command Line Interface (AWS CLI) verwenden, um Lambda-Funktionen manuell zu erstellen oder zu aktualisieren. Zusätzlich zu diesen manuellen Optionen AWS bietet es eine Reihe von Lösungen für die Bereitstellung von Lambda-Funktionen und serverlosen Anwendungen mithilfe von Infrastructure as Code (IaC). Mit IaC können Sie Lambda-Funktionen und andere AWS -Ressourcen mithilfe von Code bereitstellen und verwalten, anstatt manuelle Prozesse und Einstellungen zu verwenden.
In den meisten Fällen werden Lambda-Funktionen nicht isoliert ausgeführt. Stattdessen sind sie Teil einer Serverless-Anwendung, zu der auch andere Ressourcen wie Datenbanken, Warteschlangen und Speicher gehören. Mit IaC können Sie Ihre Bereitstellungsprozesse automatisieren, um ganze serverlose Anwendungen mit vielen separaten Ressourcen schnell und wiederholbar bereitzustellen und zu aktualisieren. AWS Dieser Ansatz beschleunigt Ihren Entwicklungszyklus, erleichtert die Konfigurationsverwaltung und stellt sicher, dass Ihre Ressourcen jedes Mal auf die gleiche Weise bereitgestellt werden.
Themen
IaC-Tools für Lambda
Um Lambda-Funktionen und serverlose Anwendungen mithilfe von IaC bereitzustellen, AWS bietet eine Reihe verschiedener Tools und Dienste.
AWS CloudFormation war der erste Service, der von AWS zur Erstellung und Konfiguration von Cloud-Ressourcen angeboten wurde. Mit AWS CloudFormation erstellen Sie Textvorlagen zur Definition von Infrastruktur und Code. Als immer mehr neue Dienste AWS eingeführt wurden und die Komplexität der Erstellung von AWS CloudFormation Vorlagen zunahm, wurden zwei weitere Tools veröffentlicht. AWS SAM ist ein weiteres auf Vorlagen basierendes Framework zur Definition serverloser Anwendungen. AWS Cloud Development Kit (AWS CDK) Es handelt sich um einen Ansatz, bei dem der Code an erster Stelle steht, um Infrastruktur mithilfe von Codekonstrukten in vielen gängigen Programmiersprachen zu definieren und bereitzustellen.
Mit both AWS SAM and the AWS CloudFormation arbeitet hinter den Kulissen AWS CDK, um Ihre Infrastruktur aufzubauen und bereitzustellen. Die folgende Abbildung veranschaulicht die Beziehung zwischen diesen Tools und in den Absätzen nach dem Diagramm werden ihre wichtigsten Funktionen erläutert.
![Diagramm, das zeigt, wie AWS SAM und wie AWS Ressourcen und Code AWS CDK bereitgestellt werden AWS CloudFormation](images/IaC_tools.png)
-
AWS CloudFormation- Dabei modellieren und richten CloudFormation Sie Ihre AWS Ressourcen mithilfe einer YAML JSON Oder-Vorlage ein, die Ihre Ressourcen und ihre Eigenschaften beschreibt. CloudFormation stellt Ihre Ressourcen auf sichere und wiederholbare Weise bereit, sodass Sie Ihre Infrastruktur und Anwendungen häufig ohne manuelle Schritte erstellen können. Wenn Sie die Konfiguration ändern, CloudFormation bestimmt es die richtigen Operationen, die zur Aktualisierung Ihres Stacks ausgeführt werden müssen. CloudFormation kann sogar Änderungen rückgängig machen.
-
AWS Serverless Application Model (AWS SAM) - AWS SAM ist ein Open-Source-Framework zur Definition serverloser Anwendungen. AWS SAM Vorlagen verwenden eine Kurzsyntax, um FunktionenAPIs, Datenbanken und Zuordnungen von Ereignisquellen mit nur wenigen Textzeilen () pro Ressource zu definieren. YAML AWS SAM Transformiert und erweitert die Syntax während der Bereitstellung in Syntax. AWS SAM AWS CloudFormation Aus diesem Grund kann jede CloudFormation Syntax zu AWS SAM Vorlagen hinzugefügt werden. Dies bietet die AWS SAM gesamte Leistung von CloudFormation, jedoch mit weniger Konfigurationszeilen.
-
AWS Cloud Development Kit (AWS CDK)- Mit dem AWS CDK definieren Sie Ihre Infrastruktur mithilfe von Codekonstrukten und stellen sie über AWS CloudFormation diese bereit. AWS CDK ermöglicht es Ihnen, die Anwendungsinfrastruktur mit Python TypeScript, Java, zu modellieren. NET, und Go (in Developer Preview) unter Verwendung Ihrer vorhandenen IDE Testtools und Workflow-Muster. Sie erhalten alle Vorteile von AWS CloudFormation, einschließlich wiederholbarer Bereitstellung, einfachem Rollback und Drift-Erkennung.
AWS bietet außerdem einen Dienst AWS Application Composer zur Entwicklung von IaC-Vorlagen mithilfe einer einfachen grafischen Oberfläche. Mit Application Composer entwerfen Sie eine Anwendungsarchitektur, indem Sie sie auf einer visuellen Leinwand ziehen, gruppieren und verbinden AWS -Services . Application Composer erstellt dann eine AWS SAM Vorlage oder eine AWS CloudFormation Vorlage aus Ihrem Design, die Sie zur Bereitstellung Ihrer Anwendung verwenden können.
Im folgenden Abschnitt Erste Schritte mit IaC für Lambda verwenden Sie Application 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 serverlose Anwendung in Application Composer erstellen, indem Sie weitere Ressourcen hinzufügen. AWS
Wenn Sie lieber mit einem AWS SAM AWS CloudFormation OR-Tutorial beginnen möchten, um zu lernen, wie Sie mit Vorlagen arbeiten können, ohne Application Composer zu verwenden, finden Sie im Nächste Schritte Abschnitt am Ende dieser Seite Links zu anderen Ressourcen.
Während Sie dieses Tutorial durchführen, lernen Sie einige grundlegende Konzepte kennen, z. B. wie AWS Ressourcen in spezifiziert werden AWS SAM. Außerdem erfahren Sie, wie Sie mit Application Composer eine serverlose 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 in AWS Application Composer und entwerfen Sie eine einfache serverlose Anwendung, die auf der Konfiguration Ihrer Funktion basiert
-
Speichern Sie eine aktualisierte AWS SAM Vorlage, die Sie als Grundlage für die Bereitstellung Ihrer serverlosen Anwendung verwenden können
In Nächste Schritte diesem Abschnitt finden Sie Ressourcen, mit denen Sie mehr über AWS SAM Application Composer erfahren können. Diese Ressourcen enthalten Links zu Tutorials für Fortgeschrittene, in denen Sie lernen, wie Sie eine serverlose Anwendung mithilfe von AWS SAM bereitstellen.
Voraussetzungen
In diesem Tutorial verwenden Sie die Funktion für die lokale Synchronisierung von Application 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 den Dateisystemzugriff unterstütztAPI, der es Webanwendungen ermöglicht, Dateien in Ihrem lokalen Dateisystem zu lesen, zu schreiben und zu speichern. Wir empfehlen, entweder Google Chrome oder Microsoft Edge zu verwenden. Weitere Informationen zum Dateisystemzugriff API finden Sie unter Was ist der DateisystemzugriffAPI?
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 Application 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 serverlosen Anwendung zu beginnen.
Um die AWS SAM Vorlage für Ihre Funktion anzuzeigen
-
Ö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, da AWS SAM Vorlagen hinter den Kulissen bereitgestellt werden AWS CloudFormation. 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 während 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, der für die Bereitstellung der Funktion verwendet werden AWS SAM soll, ist hier ebenfalls definiert. Weitere Informationen zu Lambda-Funktionsressourcen finden Sie unter AWS: :Serverless: :Function im Developer Guide. AWS SAMAWS SAM
Neben den Funktionseigenschaften und Konfigurationen gibt die Vorlage auch eine AWS Identity and Access Management (IAM) -Richtlinie für Ihre Funktion an. Diese Richtlinie gibt Ihrer Funktion die Erlaubnis, Protokolle in Amazon CloudWatch Logs zu schreiben. 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 entsprechenden policies
Eigenschaft auf der Seite AWS: :Serverless: :Function im AWS SAM Developer Guide.
Wird verwendet AWS Application Composer , um eine serverlose Anwendung zu entwerfen
Um mit der Erstellung einer einfachen serverlosen Anwendung zu beginnen, die die AWS SAM Vorlage Ihrer Funktion als Ausgangspunkt verwendet, exportieren Sie Ihre Funktionskonfiguration in Application Composer und aktivieren den lokalen Synchronisierungsmodus von Application Composer. Local Sync 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 Application Composer hinzufügen.
So exportieren Sie Ihre Funktion nach Application Composer
-
Wählen Sie im Bereich Funktionsübersicht die Option Nach Application Composer exportieren aus.
Um die Konfiguration und den Code Ihrer Funktion nach Application 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 Application 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 Application-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.
Um Ihre Funktion nach Application Composer zu exportieren, benötigen Sie die Erlaubnis, bestimmte API Aktionen zu verwenden. 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 Application Composer exportieren, gelten die Amazon-S3-Standardpreise
Folgen Sie den Anweisungen unter Löschen eines Buckets AWS-Konto, nachdem Sie Ihre Funktion nach Application Composer exportiert haben, um zu vermeiden, dass Ihrem Konto zusätzliche Gebühren hinzugefügt werden. Weitere Informationen zum Amazon-S3-Bucket-Namen, den Lamda erstellt, finden Sie unter Verwenden AWS Lambda mit AWS Application Composer.
So entwerfen Sie Ihre Serverless-Anwendung in Application Composer
Nach der Aktivierung der lokalen Synchronisierung werden die Änderungen, die Sie in Application Composer vornehmen, in der AWS SAM Vorlage wiedergegeben, die auf Ihrem lokalen Build-Computer gespeichert ist. Sie können jetzt zusätzliche AWS Ressourcen per Drag-and-Drop auf die Application Composer-Arbeitsfläche ziehen, um Ihre Anwendung zu erstellen. In diesem Beispiel fügen Sie eine SQS einfache Amazon-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 SQS Amazon-Trigger hinzu, indem Sie wie folgt vorgehen:
-
Geben Sie im Suchfeld in der Ressourcenpalette
SQS
ein. -
Ziehen Sie die SQSQueue-Ressource auf Ihre Leinwand 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.
-
Connect Sie Ihre Amazon SQS - und Lambda-Ressourcen, indem Sie auf der SQS Warteschlangenkarte auf den Abonnement-Port 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. Application 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 Application Composer erstellt hat.
Um Ihre aktualisierte AWS SAM Vorlage anzusehen
-
Wählen Sie auf der Application-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 SQS Amazon-Warteschlange mit der ID
LambdaIaCQueue
LambdaIaCQueue: Type: AWS::SQS::Queue Properties: MessageRetentionPeriod: 345600
Wenn Sie mit Application Composer eine SQS Amazon-Warteschlange hinzufügen, legt Application Composer die
MessageRetentionPeriod
Eigenschaft fest. 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 über die
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 SQS Amazon-Warteschlange als Auslöser 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 Konfigurationen, die AWS -Services Sie zum Auslösen einer Lambda-Funktion konfigurieren können, und zu den Eigenschaften, die Sie festlegen können, finden Sie EventSourceim AWS SAM Entwicklerhandbuch. -
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 Application 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. Application Composer legt auch Standardwerte für eine Reihe anderer Eigenschaften fest, darunter
BillingMode
undStreamViewType
.Weitere Informationen zu diesen und anderen Eigenschaften, die Sie zu Ihrer AWS SAM Vorlage hinzufügen können, finden Sie unter AWS: :DynamoDB: :Table im Benutzerhandbuch.AWS CloudFormation
-
Eine neue IAM Richtlinie, die Ihrer Funktion die Berechtigung erteilt, CRUD Operationen an der von Ihnen hinzugefügten DynamoDB-Tabelle auszuführen.
Policies: ... - DynamoDBCrudPolicy: TableName: !Ref LambdaIaCTable
Die vollständige endgültige AWS SAM Vorlage sollte wie folgt 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 serverlose Anwendung mithilfe von AWS SAM (optional) bereit
Wenn Sie eine serverlose Anwendung mithilfe der Vorlage bereitstellen AWS SAM möchten, die Sie gerade in Application Composer erstellt haben, müssen Sie zuerst die installieren. AWS SAM CLI Folgen Sie dazu den Anweisungen unter Installation von. AWS SAM CLI
Bevor Sie Ihre Anwendung bereitstellen, müssen Sie auch den Funktionscode aktualisieren, den Application Composer zusammen mit Ihrer Vorlage gespeichert hat. Derzeit enthält die von Application 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 Application Composer auf Ihrer lokalen Build-Maschine gespeichert hat. Sie haben das Verzeichnis, in dem Application Composer diese Datei speichern soll, beim Aktivieren des Modus „Lokale Synchronisation“ angegeben.
Dieser Code akzeptiert ein Schlüssel-Wert-Paar in einer Nachricht aus der SQS Amazon-Warteschlange, die Sie in Application 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 AWS SAM CLI, um Ihre Anwendung mithilfe von 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 Application 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-SQS, Amazon- und DynamoDB-Ressourcen zu erstellen.
sam deploy --guided
Wenn Sie die
--guided
Markierung verwenden, AWS SAM werden Ihnen 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 SQS Amazon-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, damit Ihre Lambda-Funktion Nachrichten aus der SQS Amazon-Warteschlange lesen und CRUD Operationen an der DynamoDB-Tabelle ausführen kann.
Weitere Informationen AWS SAM zur Bereitstellung serverloser Anwendungen finden Sie in den Ressourcen im Abschnitt. Nächste Schritte
Testen der bereitgestellten Anwendung (optional)
Um zu überprüfen, ob Ihre serverlose Anwendung korrekt bereitgestellt wurde, senden Sie eine Nachricht an Ihre SQS Amazon-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 SQS Amazon-Konsole und wählen Sie die Warteschlange aus, die anhand Ihrer Vorlage AWS SAM erstellt wurde. Der Name weist das Format sam-app-LambdaIaCQueue-
auf.xL87VeKsGiIo
-
Wählen Sie Nachrichten senden und empfangen und fügen Sie Folgendes 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.
Nächste Schritte
Um mehr über die Verwendung von Application Composer mit AWS SAM und zu erfahren AWS CloudFormation, beginnen Sie mit Application Composer mit AWS CloudFormation und verwenden AWS SAM.
Für ein Tutorial mit Anleitung AWS SAM zur Bereitstellung einer in Application Composer entwickelten serverlosen Anwendung empfehlen wir Ihnen außerdem, das AWS Application Composer Tutorial
AWS SAM bietet eine Befehlszeilenschnittstelle (CLI), die Sie zusammen mit AWS SAM Vorlagen und unterstützten Integrationen von Drittanbietern verwenden können, um Ihre serverlosen Anwendungen zu erstellen und auszuführen. Mit dem können Sie Ihre Anwendung erstellen und bereitstellen AWS SAM CLI, lokale Tests und Debugging durchführen, CI/CD-Pipelines konfigurieren und vieles mehr. Weitere Informationen zur Verwendung von finden Sie unter Erste Schritte mit AWS SAM im Entwicklerhandbuch. AWS SAM CLIAWS Serverless Application Model
Um zu erfahren, wie Sie mithilfe der AWS CloudFormation Konsole eine serverlose Anwendung mit einer AWS SAM Vorlage bereitstellen, beginnen Sie im AWS CloudFormation Benutzerhandbuch mit der AWS CloudFormation Konsole verwenden.
Unterstützte Regionen für die Lambda-Integration mit Application Composer
Die Lambda-Integration mit Application Composer wird in den folgenden AWS-Regionen Bereichen unterstützt:
-
USA Ost (Nord-Virginia)
-
USA Ost (Ohio)
-
USA West (Nordkalifornien)
-
USA West (Oregon)
-
Africa (Cape Town)
-
Asien-Pazifik (Hongkong)
-
Asien-Pazifik (Hyderabad)
-
Asien-Pazifik (Jakarta)
-
Asien-Pazifik (Melbourne)
-
Asien-Pazifik (Mumbai)
-
Asia Pacific (Osaka)
-
Asia Pacific (Seoul)
-
Asien-Pazifik (Singapur)
-
Asien-Pazifik (Sydney)
-
Asien-Pazifik (Tokio)
-
Canada (Central)
-
Europa (Frankfurt)
-
Europa (Zürich)
-
Europa (Irland)
-
Europe (London)
-
Europa (Stockholm)
-
Naher Osten () UAE