Erstellen Sie die Lambda-Funktionen - AWS SDK for JavaScript

Helfen Sie uns, dasAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation durch Feedback unter Verwendung derFeedbackLink oder erstellen Sie ein Problem oder ziehen Sie eine Anfrage anGitHubaus.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-API-Referenzbeschreibt ausführlich alle API-Operationen für dieAWS 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.

Erstellen Sie die Lambda-Funktionen

Dieses Thema ist Teil einer Anleitung, die zeigt, Lambda-Funktionen mitAWS Step Functionsaus. Um am Anfang des Tutorials zu beginnen, lesen Sie ErstellenAWSserverlose Workflows mithilfe vonAWS 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.

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 desZIPDatei 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 desZIPDatei 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"; var 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 desZIPDatei in den Amazon S3 S3-Bucket, den Sie im Thema dieses Beispiels erstellt haben.

Dieses Codebeispiel ist verfügbarhier auf GitHubaus.

Bereitstellen der Lambda-Funktionen

So stellen Sie die bereitgetidLambda-Funktion:

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

  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 dann wählen Sielambda-unterstützung(Die IAM-Rolle, die Sie in 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).

  11. Wiederholen Sie diesen Vorgang füradditem.js.zipundsendemail.js.zipzu neuen Lambda-Funktionen. Wenn Sie fertig sind, haben Sie drei Lambda-Funktionen, auf die Sie im Dokument „Amazon States Language“ verweisen können.