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.
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 methodund des- URLdes Ziels.
- Einstellen der - Content-Typeheader to- application/jsonDownstream-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 - scheduleTimehinzufügen.
E-Mail erstellen
Dieser Code erstellt die Cloud Run-Funktion, 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 - SENDGRID_API_KEYdurch Ihren API-Schlüssel.- Dieser Befehl verwendet Flags: - --trigger-http, um den Cloud Run-Funktions-Triggertyp anzugeben.
- --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 Functions-Benutzeroberfläche die Funktion - sendEmailaus.
- Wenn Sie keine Informationen zu Berechtigungen für - sendEmailsehen, klicken Sie rechts oben auf Infofeld ansehen.
- Klicken Sie oben auf die Schaltfläche Hauptkonten hinzufügen. 
- Legen Sie Neue Hauptkonten auf - allAuthenticatedUsersfest.
- Legen Sie die Rolle fest. - Funktionen der 1. Generation:Legen Sie die Rolle auf Cloud Function Invokerfest.
- Funktionen der 2. Generation:Legen Sie die Rolle auf Cloud Run Invokerfest.
 
- Funktionen der 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 - LOCATIONdurch den gewünschten Standort für die Warteschlange, z. B.- us-west2. Wenn Sie den Standort nicht angeben, wird der Standardwert der gcloud CLI verwendet.
- Prüfen Sie, ob sie erfolgreich erstellt wurde: - gcloud tasks queues describe my-queue --location=LOCATION - Ersetzen Sie - LOCATIONdurch den Speicherort der Warteschlange.
Dienstkonto erstellen
Die Cloud Tasks-Anfrage muss Anmeldedaten im Authorization-Header 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 in 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 Invokerfest.
- Funktionen der 2. Generation:Legen Sie die Rolle auf Cloud Run Invokerfest.
 
- 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.yamlmit Ihren Werten:- Verwenden Sie den folgenden Befehl, um den Speicherort Ihrer Warteschlange zu ermitteln: - gcloud tasks queues describe my-queue --location=LOCATION - Ersetzen Sie - LOCATIONdurch 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