In dieser Anleitung erfahren Sie, wie Sie mit Cloud Tasks in einer App Engine-Anwendung eine Cloud Run-Funktion auslösen und eine geplante E-Mail senden.
Lernziele
- Machen Sie sich mit dem Code der einzelnen Komponenten vertraut.
- Ein SendGrid-Konto erstellen
- Herunterladen des Quellcodes
- Stellen Sie eine Cloud Run-Funktion bereit, um Cloud Tasks-Anfragen zu empfangen und eine E-Mail über die SendGrid API zu senden.
- Erstellen Sie eine Cloud Tasks-Warteschlange.
- Erstellen Sie ein Dienstkonto, um Ihre Cloud Tasks-Anfragen zu authentifizieren.
- Stellen Sie den Clientcode bereit, mit dem ein Nutzer eine E-Mail senden kann.
Kosten
Cloud Tasks, Cloud Run-Funktionen und App Engine haben eine kostenlose Stufe. Solange Sie die Anleitung innerhalb der kostenlosen Stufe der angegebenen Produkte ausführen, sollten keine zusätzlichen Kosten anfallen. Weitere Informationen finden Sie unter Preise.
Hinweise
Wählen Sie ein Google Cloud-Projekt aus oder erstellen Sie eines.
Initialisieren Sie eine App Engine-Anwendung in Ihrem Projekt:
Klicken Sie auf der Seite Willkommen bei App Engine auf Anwendung erstellen.
Wählen Sie eine Region für Ihre Anwendung aus. Notieren Sie diesen Standort. Er wird als
LOCATION_ID
-Parameter für Ihre Cloud Tasks-Anfragen verwendet. Die zwei Standorte der App Engine-Befehle europe-west und us-central werden in den Cloud Tasks-Befehlen europe-west1 und us-central1 genannt.Wählen Sie Node.js als Sprache und Standard als Umgebung aus.
Falls das Pop-up-Fenster Abrechnung aktivieren angezeigt wird, wählen Sie Ihr Rechnungskonto aus. Wenn Sie noch kein Rechnungskonto haben, klicken Sie auf Rechnungskonto erstellen und folgen Sie den Anweisungen des Assistenten.
Klicken Sie auf der Seite Erste Schritte auf Nächste. Sie werden sich später darum kümmern.
Aktivieren Sie die Cloud Run Functions und Cloud Tasks APIs.
Installieren und initialisieren Sie die gcloud CLI.
Code verstehen
In diesem Abschnitt werden der App-Code und dessen Funktionsweise erläutert.
Aufgabe erstellen
Die Indexseite wird mithilfe von Handlern in app.yaml
bereitgestellt. Die für die Aufgabenerstellung erforderlichen Variablen werden als Umgebungsvariablen übergeben.
Dieser Code erstellt den Endpunkt /send-email
. Dieser Endpunkt verarbeitet Formularübermittlungen von der Indexseite und leitet diese Daten an den Aufgabenerstellungscode weiter.
Dieser Code erstellt die Aufgabe und sendet sie an die Cloud Tasks-Warteschlange. So erstellt der Code die Aufgabe:
Angabe des Zieltyps als
HTTP Request
.Angabe des zu verwendenden
HTTP method
und desURL
des Ziels.Einstellen der
Content-Type
header toapplication/json
Downstream-Anwendungen kann die strukturierte Nutzlast parsen.E-Mail-Konto für Dienstkonto hinzufügen, damit Cloud Tasks Anmeldedaten für das Anforderungsziel bereitstellen kann, für das eine Authentifizierung erforderlich ist. Das Dienstkonto wird separat erstellt.
Prüfen, ob die Nutzereingabe für das Datum innerhalb der maximalen 30 Tage liegt, und der Anfrage als Feld
scheduleTime
hinzufügen.
E-Mail erstellen
Mit diesem Code wird die Cloud Run-Funktion erstellt, die das Ziel für die Cloud Tasks-Anfrage ist. Es verwendet den Anfragetext, um eine E-Mail zu erstellen und über die SendGrid API zu senden.
Anwendung vorbereiten
SendGrid einrichten
Ein SendGrid-Konto erstellen
- Das können Sie entweder über die SendGrid-Website tun
- oder mit dem Google Cloud Launcher, der für Sie ein Konto erstellt und die Abrechnung übernimmt. Weitere Informationen finden Sie unter Ein SendGrid-Konto mit Cloud Launcher erstellen.
Erstellen Sie einen SendGrid API-Schlüssel:
Melden Sie sich bei Ihrem SendGrid-Konto an.
Öffnen Sie im linken Navigationsbereich Einstellungen und klicken Sie auf API-Schlüssel.
Klicken Sie auf API-Schlüssel erstellen und wählen Sie den eingeschränkten Zugriff aus. Wählen Sie unter dem Header E-Mail senden Vollständiger Zugriff aus.
Kopieren Sie den API-Schlüssel (er wird nur einmal angezeigt) in ein Dokument, um am Ende der Anleitung, wenn Sie die Cloud Functions-Funktionen aufrufen, darauf zurückgreifen zu können.
Quellcode herunterladen
Klonen Sie das Repository der Beispiel-App auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Wechseln Sie zu dem Verzeichnis, das den Beispielcode enthält:
cd cloud-tasks/
Cloud Run-Funktion bereitstellen
Rufen Sie das Verzeichnis
function/
auf:cd function/
Die Funktion bereitstellen:
gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \
Ersetzen Sie dabei
SENDGRID_API_KEY
durch Ihren eigenen API-Schlüssel.Dieser Befehl verwendet Flags:
--trigger-http
zum Angeben des Triggertyps für Cloud Run-Funktionen.--no-allow-unauthenticated
, um anzugeben, dass für den Funktionsaufruf eine Authentifizierung erforderlich ist.--set-env-var
, um Ihre SendGrid-Anmeldedaten festzulegen
Legen Sie die Zugriffssteuerung für die Funktion so fest, dass nur authentifizierte Nutzer zugelassen werden.
Wählen Sie in der Cloud Run-Funktions-Benutzeroberfläche die Funktion
sendEmail
aus.Wenn Sie keine Informationen zu Berechtigungen für
sendEmail
sehen, klicken Sie rechts oben auf Infofeld ansehen.Klicken Sie oben auf die Schaltfläche Hauptkonten hinzufügen.
Legen Sie Neue Hauptkonten auf
allAuthenticatedUsers
fest.Legen Sie die Rolle fest.
- Funktionen der ersten Generation (1. Generation): Legen Sie die Rolle auf
Cloud Function Invoker
fest. - Funktionen der zweiten Generation (2. Generation): Legen Sie die Rolle auf
Cloud Run Invoker
fest.
- Funktionen der ersten Generation (1. Generation): Legen Sie die Rolle auf
Klicken Sie auf SPEICHERN.
Cloud Tasks-Warteschlange erstellen
Erstellen Sie eine Warteschlange mit dem folgenden Befehl
gcloud
:gcloud tasks queues create my-queue --location=LOCATION
Ersetzen Sie
LOCATION
durch den gewünschten Speicherort für die Warteschlange, z. B.us-west2
. Wenn Sie den Speicherort nicht angeben, wird der Standardspeicherort der gcloud CLI verwendet.Prüfen Sie, ob sie erfolgreich erstellt wurde:
gcloud tasks queues describe my-queue --location=LOCATION
Ersetzen Sie
LOCATION
durch den Speicherort der Warteschlange.
Dienstkonto erstellen
Die Cloud Tasks-Anfrage muss im Authorization
-Header Anmeldedaten angeben, damit die Cloud Run-Funktion die Anfrage authentifizieren kann. Mit diesem Dienstkonto kann Cloud Tasks zu diesem Zweck ein OIDC-Token erstellen und hinzufügen.
Klicken Sie auf der Benutzeroberfläche für Dienstkonten auf + DIENSTKONTO ERSTELLEN.
Fügen Sie einen Dienstkontonamen(Anzeigename) hinzu und wählen Sie Erstellen aus.
Legen Sie die Rolle fest und klicken Sie auf Weiter.
- Funktionen der 1. Generation: Legen Sie die Rolle auf
Cloud Function Invoker
fest. - Funktionen der zweiten Generation (2. Generation): Legen Sie die Rolle auf
Cloud Run Invoker
fest.
- Funktionen der 1. Generation: Legen Sie die Rolle auf
Wählen Sie Fertig aus.
Endpunkt und Aufgabenersteller in App Engine bereitstellen
Gehen Sie zum Verzeichnis
app/
:cd ../app/
Aktualisieren Sie Variablen in
app.yaml
mit Ihren Werten:Verwenden Sie den folgenden Befehl, um den Speicherort Ihrer Warteschlange zu ermitteln:
gcloud tasks queues describe my-queue --location=LOCATION
Ersetzen Sie
LOCATION
durch den Speicherort der Warteschlange.Verwenden Sie den folgenden Befehl, um die Funktions-URL zu ermitteln:
gcloud functions describe sendEmail
Stellen Sie die Anwendung mit dem folgenden Befehl in der App Engine-Standardumgebung bereit:
gcloud app deploy
Öffnen Sie die Anwendung, um eine Postkarte als E-Mail zu senden:
gcloud app browse
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Ressourcen löschen
Sie können die Ressourcen bereinigen, die Sie in Google Cloud erstellt haben, damit sie kein Kontingent verbrauchen und Ihnen in Zukunft nicht in Rechnung gestellt werden. In den folgenden Abschnitten wird erläutert, wie Sie diese Ressourcen löschen oder deaktivieren.
Cloud Run-Funktion löschen
Rufen Sie in der Google Cloud Console die Seite Cloud Run-Funktionen auf.
Klicken Sie die Kästchen neben Ihren Funktionen an.
Klicken Sie oben auf der Seite auf Löschen und bestätigen Sie den Löschvorgang.
Cloud Tasks-Warteschlange löschen
Öffnen Sie in der Console die Seite mit den Cloud Tasks-Warteschlangen.
Wählen Sie den Namen der Warteschlange aus, die Sie löschen möchten, und klicken Sie auf Warteschlange löschen.
Bestätigen Sie die Aktion.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Weitere Informationen zum Erstellen von HTTP-Zielaufgaben
- Weitere Informationen zum Konfigurieren Ihrer Cloud Tasks-Warteschlange