Erstellen der AWS Lambda-Funktion - 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 der AWS Lambda-Funktion

Konfigurieren des SDKs

In derlibsVerzeichnis erstellen Sie eine Datei mit dem NamensnsClient.jsundlambdaClient.jsund fügen Sie den Inhalt unten in sie ein.

const { SNSClient } = require("@aws-sdk/client-sns"); // Set the AWS Region. const REGION = "REGION"; // e.g. "us-east-1" // Create an Amazon Simple Notification Service client object. const snsClient = new SNSClient({region:REGION}); module.exports = { snsClient };

ErsetzenREGIONmit demAWSRegion : Dieser Code ist verfügbarhier auf GitHubaus.

const { LambadaClient } = require( "@aws-sdk/client-lambda" ); // Set the AWS Region. const REGION = "eu-west-1"; // e.g. "us-east-1" // Create an Amazon Lambda service client object. const lambdaClient = new LambdaClient({region:REGION}); module.exports = { lambdaClient };

ErsetzenREGIONmit demAWSRegion : Dieser Code ist verfügbarhier auf GitHubaus.

Importieren Sie zuerst das erforderlicheAWS SDK for JavaScript(v3) Module und Befehle. Berechnen Sie dann das heutige Datum und weisen Sie es einem Parameter zu. Erstellen Sie dann die Parameter für denScanCommand.ErsetzenTABLE_NAMEmit dem Namen der Tabelle, die Sie imErstellen derAWSRessourcen Abschnitt dieses Beispiels.

Der folgende Codeausschnitt veranschaulicht diesen Schritt. (Das vollständige Beispiel finden Sie unter Bündeln der Lambda-Funktion.)

"use strict"; // Load the required clients and commands. const { ScanCommand } = require ( "@aws-sdk/client-dynamodb" ); const { PublishCommand } = require ( "@aws-sdk/client-sns" ); const {lambdaClient} = require ( "./libs/lambdaClient" ); const {snsClient} = require ( "./libs/snsClient" ); // Get today's date. const today = new Date(); const dd = String(today.getDate()).padStart(2, "0"); const mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0! const yyyy = today.getFullYear(); const date = yyyy + "-" + mm + "-" + dd; // Set the parameters for the ScanCommand method. const params = { // Specify which items in the results are returned. FilterExpression: "startDate = :topic", // Define the expression attribute value, which are substitutes for the values you want to compare. ExpressionAttributeValues: { ":topic": { S: date }, }, // Set the projection expression, which the the attributes that you want. ProjectionExpression: "firstName, phone", TableName: "TABLE_NAME", };

Scannen der DynamoDB-Tabelle

Erstellen Sie zuerst eine Async/await-Funktion namenssendTextum eine SMS mit dem Amazon SNS zu veröffentlichenPublishCommandaus. Fügen Sie dann eine hinzutryBlockmuster, das die DynamoDB-Tabelle nach Mitarbeitern mit ihrem Arbeitstag heute scannt und dann diesendTextFunktion, um diesen Mitarbeitern eine SMS zu senden. Wenn es zu einem Fehler kommt, wird diecatchblock heißt.

Der folgende Codeausschnitt veranschaulicht diesen Schritt. (Das vollständige Beispiel finden Sie unter Bündeln der Lambda-Funktion.)

exports.handler = async (event, context, callback) => { // Helper function to send message using Amazon SNS. async function sendText(textParams) { try { const data = await snsClient.send(new PublishCommand(textParams)); console.log("Message sent"); } catch (err) { console.log("Error, message not sent ", err); } } try { // Scan the table to check identify employees with work anniversary today. const data = await dynamoClient.send(new ScanCommand(params)); data.Items.forEach(function (element, index, array) { const textParams = { PhoneNumber: element.phone.N, Message: "Hi " + element.firstName.S + "; congratulations on your work anniversary!", }; // Send message using Amazon SNS. sendText(textParams); }); } catch (err) { console.log("Error, could not scan table ", err); } };

Bündeln der Lambda-Funktion

In diesem Thema wird beschrieben, wie Sie diemylambdafunction.tsund das ErforderlicheAWS SDK for JavaScriptModule für dieses Beispiel in eine gebündelte Datei namensindex.jsaus.

  1. Wenn Sie es noch nicht getan haben, folgen Sie derErforderliche Aufgabenfür dieses Beispiel um Webpack zu installieren.

    Anmerkung

    Weitere Informationen zuWebpack, finden Sie unterAnwendungsbündelung mit Webpackaus.

  2. Führen Sie Folgendes in der Befehlszeile aus, um das JavaScript für dieses Beispiel in eine Datei namens<index.js>:

    webpack mylambdafunction.ts --mode development --target node --devtool false --output-library-target umd -o index.js
    Wichtig

    Beachten Sie, dass die Ausgabe heißtindex.jsaus. Dies liegt daran, dass Lambda-Funktionen eine haben müssenindex.jsHandler zur Arbeit.

  3. Komprimiert die gebündelte Ausgabedatei,index.js, in eine ZIP-Datei namensmylambdafunction.zipaus.

  4. Hochladenmylambdafunction.zipzum Amazon S3 S3-Bucket, den Sie imErstellen derAWSRessourcen Thema dieses Tutorials.