So erstellen Sie die Lambda-Funktionen - AWS SDK for JavaScript

Hilf uns, das zu verbessernAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation, indem Sie Feedback mithilfe derFeedbackverlinken, oder erstellen Sie ein Issue oder Pull Request aufGitHub.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-APIbeschreibt ausführlich alle API-Operationen für denAWS SDK for JavaScriptVersion 3 (V3).

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.

So erstellen Sie die Lambda-Funktionen

Dieses Thema ist Teil einer Anleitung, die veranschaulicht, Lambda-Funktionen mitAWS Step Functionsaus. Um am Anfang des Tutorials zu beginnen, lesen Sie ErstellenAWSserverlose Workflows mitAWS SDK for JavaScript.

Verwenden Sie die Lambda-Laufzeit-API, um die Lambda-Funktionen zu erstellen. In diesem Beispiel gibt es drei Workflow-Schritte, die jeweils jeder Lambda-Funktion entsprechen.

So erstellen Sie diese Lambda-Funktion wie in den folgenden Abschnitten beschrieben:

  • GetId Lambda-Funktion- Wird als erster Schritt im Workflow verwendet, der den Ticket-ID-Wert verarbeitet.

  • AddItem Lambda-Klasse- Wird als zweiter Schritt im Workflow verwendet, der das Ticket einem Mitarbeiter zuweist und die Daten in einer DynamoDB-Datenbank speichert.

  • Sendemail Lambda-Klasse- Wird als dritter Schritt im Workflow verwendet, der den Amazon SES verwendet, um eine E-Mail-Nachricht an den Mitarbeiter zu senden, um ihn über das Ticket zu informieren.

GetId Lambda-Funktion

Erstellen Sie eine Lambda-Funktion, die den Ticket-ID-Wert zurückgibt, der an den zweiten Schritt im Workflow übergeben wird.

exports.handler = async (event) => { // Create a support case using the input as the case ID, then return a confirmation message try{ const myCaseID = event.inputCaseID; var myMessage = "Case " + myCaseID + ": opened..."; var result = { Case: myCaseID, Message: myMessage }; } catch(err){ console.log('Error', err); } };

Geben Sie in die Befehlszeile Folgendes ein, um die Datei mit dem Webpack in eine Datei mit dem Namen zu bündelnindex.jsaus.

webpack getid.js --mode development --target node --devtool false --output-library-target umd -o index.js

Dann komprimierenindex.jsin einZIPDateinamegetid.js.zip.Hochladen desZIP-Datei in den Amazon S3 S3-Bucket, den Sie im Thema dieses Beispiels erstellt haben.

Dieses Codebeispiel ist verfügbarhier auf GitHubaus.

AddItem Lambda-Klasse

Erstellen Sie eine Lambda-Funktion, die einen Mitarbeiter auswählt, um das Ticket zuzuweisen, und speichert dann die Ticketdaten in einer DynamoDB-Tabelle namensFallaus.

"use strict"; // Load the required clients and commands. const { DynamoDBClient, PutItemCommand } = require("@aws-sdk/client-dynamodb"); const REGION = "eu-west-1"; //e.g. "us-east-1" // Create the client service objects. const dbclient = new DynamoDBClient({ region: REGION }); exports.handler = async (event) => { try{ // Helper function to send message using Amazon SNS. const val = event; //PersistCase adds an item to a DynamoDB table const tmp = (Math.random() <= 0.5) ? 1 : 2; console.log(tmp); if (tmp == 1) { const params = { TableName: "Case", Item: { id: {N: val.Case}, empEmail: {S: "brmur@amazon.com"}, name: {S: "Tom Blue"} }, } console.log('adding item for tom'); try { const data = await dbclient.send(new PutItemCommand(params)); console.log(data); } catch (err) { console.error(err); } var result = { Email: params.Item.empEmail }; return result; } else { const params = { TableName: "Case", Item: { id: {N: val.Case}, empEmail: {S: "brmur@amazon.com"}, name: {S: "Sarah White"} }, } console.log('adding item for sarah'); try { const data = await dbclient.send(new PutItemCommand(params)); console.log(data); } catch (err) { console.error(err); } return params.Item.empEmail; var result = { Email: params.Item.empEmail }; } } catch(err){ console.log("Error" , err) } }

Geben Sie in die Befehlszeile Folgendes ein, um die Datei mit dem Webpack in eine Datei mit dem Namen zu bündelnindex.jsaus.

webpack additem.js --mode development --target node --devtool false --output-library-target umd -o index.js

Dann komprimierenindex.jsin einZIPDateinameadditem.js.zip.Hochladen desZIP-Datei in den Amazon S3 S3-Bucket, den Sie im Thema dieses Beispiels erstellt haben.

Dieses Codebeispiel ist verfügbarhier auf GitHubaus.

Sendemail Lambda-Klasse

Erstellen Sie eine Lambda-Funktion, die eine E-Mail sendet, um sie über das neue Ticket zu informieren. Die E-Mail-Adresse, die ab dem zweiten Schritt übergeben wird, wird verwendet.

// Load the required clients and commands. const { SESClient, SendEmailCommand } = require("@aws-sdk/client-ses"); // Set the AWS Region. const REGION = "eu-west-1"; //e.g. "us-east-1" // Create the client service objects. const sesclient = new SESClient({ region: REGION }); exports.handler = async (event) => { // Enter a sender email address. This address must be verified. const sender = "Sender Name <briangermurray@gmail.com>"; // AWS Step Functions passes the employee's email to the event. // This address must be verified. const recepient = event.S; // The subject line for the email. const subject = "New case"; // The email body for recipients with non-HTML email clients. const body_text = "Hello,\r\n" + "Please check the database for new ticket assigned to you."; // The HTML body of the email. const body_html = `<html><head></head><body><h1>Hello!</h1><p>Please check the database for new ticket assigned to you.</p></body></html>`; // The character encoding for the email. const charset = "UTF-8"; const params = { Source: sender, Destination: { ToAddresses: [ recepient ], }, Message: { Subject: { Data: subject, Charset: charset }, Body: { Text: { Data: body_text, Charset: charset }, Html: { Data: body_html, Charset: charset } } } }; try { const data = await sesclient.send(new SendEmailCommand(params)); console.log(data); } catch (err) { console.error(err); } };

Geben Sie in die Befehlszeile Folgendes ein, um die Datei mit dem Webpack in eine Datei mit dem Namen zu bündelnindex.jsaus.

webpack sendemail.js --mode development --target node --devtool false --output-library-target umd -o index.js

Dann komprimierenindex.jsin einZIPDateinamesendemail.js.zip.Hochladen desZIP-Datei in den Amazon S3 S3-Bucket, den Sie im Thema dieses Beispiels erstellt haben.

Dieses Codebeispiel ist verfügbarhier auf GitHubaus.

Stellen Sie die Lambda-Funktionen bereit

So stellen Sie die bereitgetidLambda Lambda-Funktion:

  1. Öffnen Sie die Lambda-Konsole unterAmazon Web Services Serviceskonsoleaus.

  2. Wählen Sie Create Function.

  3. Wählen Sie Author from scratch aus.

  4. In derBasicInformationsbereich, geben SieGetidwie der Name.

  5. In derLaufzeit, wählenNode.js 14xaus.

  6. Klicken Sie aufVerwenden einer vorhandenen Rolleund danach auflambda-unterstützung(Die IAM-Rolle, die Sie in der erstellt haben).

  7. Wählen Sie Create function (Funktion erstellen).

  8. wählenHochladen von-Amazon S3 S3-Speicherortaus.

  9. Klicken Sie aufHochladen, wählenHochladen von-Amazon S3 S3-Speicherort, und geben Sie dieAmazon S3-Link-URLaus.

  10. Wählen Sie Save (Speichern) aus.

  11. Wiederholen Sie diesen Vorgang für dasadditem.js.zipundsendemail.js.zipauf neue Lambda-Funktionen. Wenn Sie fertig sind, haben Sie drei Lambda-Funktionen, auf die Sie im Dokument der Amazon States Language verweisen können.