arrow_back

PDFs mit Go und Cloud Run erstellen

Anmelden Teilnehmen
Zugriff auf über 700 Labs und Kurse nutzen

PDFs mit Go und Cloud Run erstellen

Lab 1 Stunde universal_currency_alt 5 Guthabenpunkte show_chart Mittelstufe
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Zugriff auf über 700 Labs und Kurse nutzen

GSP762

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

In diesem Lab erstellen Sie eine Webanwendung für die PDF-Konvertierung in Cloud Run. Mit diesem serverlosen Dienst werden in Google Drive gespeicherte Dateien automatisch in das PDF-Format konvertiert und in separaten Google Drive-Ordnern gespeichert.

Szenario

Sie unterstützen die Tierarztpraxis Pet Theory dabei, Rechnungen automatisch in PDFs zu konvertieren, damit Kunden sie ganz einfach öffnen können.

Architekturdiagramm

Für dieses Lab müssen Sie Google APIs verwenden. Diese APIs wurden für Sie aktiviert:

Name API
Cloud Build cloudbuild.googleapis.com
Cloud Storage storage-component.googleapis.com
Cloud Run Admin run.googleapis.com

Ziele

Aufgaben in diesem Lab:

  • Quellcode für das Lab herunterladen
  • Go-Anwendung in einen Container umwandeln
  • Container mit Google Cloud Build erstellen
  • Cloud Run-Dienst erstellen, durch den in der Cloud Dateien in PDFs konvertiert werden
  • Dienstkonto erstellen und Berechtigungen hinzufügen
  • Trigger für Cloud Storage-Benachrichtigungen initiieren
  • Ereignisverarbeitung mit Cloud Storage anwenden

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:

    • Schaltfläche „Google Cloud Console öffnen“
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich „Details zum Lab“.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein. Symbol für das Navigationsmenü und Suchfeld

Cloud Shell aktivieren

Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

  2. Klicken Sie sich durch die folgenden Fenster:

    • Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
    • Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.

Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:

Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. Klicken Sie auf Autorisieren.

Ausgabe:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Um das aktive Konto festzulegen, führen Sie diesen Befehl aus: $ gcloud config set account `ACCOUNT`
  1. (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project

Ausgabe:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.

Aufgabe 1: Quellcode abrufen

In dieser Aufgabe laden Sie zuerst den Code herunter, der für dieses Lab benötigt wird.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um Ihr Lab-Konto zu aktivieren:

    gcloud auth list --filter=status:ACTIVE --format="value(account)"
  2. Führen Sie den folgenden Befehl aus, um das Pet Theory-Repository zu klonen:

    git clone https://github.com/Deleplace/pet-theory.git
  3. Führen Sie den folgenden Befehl aus, um in das richtige Verzeichnis zu wechseln:

    cd pet-theory/lab03

Gemini Code Assist in der Cloud Shell-IDE aktivieren

Sie können Gemini Code Assist in einer integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) wie Cloud Shell verwenden, um Unterstützung beim Programmieren zu erhalten oder Probleme mit Ihrem Code zu lösen. Bevor Sie Gemini Code Assist verwenden können, müssen Sie das Tool aktivieren.

  1. Aktivieren Sie in Cloud Shell die Gemini for Google Cloud API mit dem folgenden Befehl:
gcloud services enable cloudaicompanion.googleapis.com
  1. Klicken Sie in der Cloud Shell-Symbolleiste auf Editor öffnen.
Hinweis: Klicken Sie zum Öffnen des Cloud Shell-Editors in der Cloud Shell-Symbolleiste auf Editor öffnen. Sie können zwischen Cloud Shell und dem Code-Editor wechseln. Klicken Sie dazu entsprechend auf Editor öffnen oder Terminal öffnen.
  1. Klicken Sie im linken Bereich auf das Symbol Einstellungen und suchen Sie unter Einstellungen nach Gemini Code Assist.

  2. Suchen Sie nach Gemini Code Assist: Aktivieren und prüfen Sie, ob das Kästchen ausgewählt ist. Schließen Sie dann die Einstellungen.

  3. Klicken Sie in der Statusleiste unten auf dem Bildschirm auf Cloud Code – kein Projekt.

  4. Autorisieren Sie das Plug-in wie beschrieben. Wenn kein Projekt automatisch ausgewählt wurde, klicken Sie auf Google Cloud-Projekt auswählen und wählen Sie aus.

  5. Prüfen Sie, ob Ihr Google Cloud-Projekt () in der Cloud Code-Statusmeldung in der Statusleiste angezeigt wird.

Aufgabe 2: Mikrodienst für Rechnungen erstellen

In dieser Aufgabe erstellen Sie eine Go-Anwendung zum Verarbeiten von Anfragen. Wie im Architekturdiagramm dargestellt, soll Cloud Storage in die Lösung eingebunden werden.

  1. Gehen Sie im Datei-Explorer des Cloud Shell-Editors zu pet-theory > lab03 > server.go.

  2. Öffnen Sie die Datei server.go. Dadurch wird Gemini Code Assist aktiviert. Dies lässt sich am Symbol Gemini Code Assist: Intelligente Aktionen rechts oben im Editor ablesen.

  3. Rufen Sie den Quellcode von server.go auf und bearbeiten Sie ihn so:

    package main import ( "fmt" "log" "net/http" "os" "os/exec" "regexp" "strings" ) func main() { http.HandleFunc("/", process) port := os.Getenv("PORT") if port == "" { port = "8080" log.Printf("Defaulting to port %s", port) } log.Printf("Listening on port %s", port) err := http.ListenAndServe(fmt.Sprintf(":%s", port), nil) log.Fatal(err) } func process(w http.ResponseWriter, r *http.Request) { log.Println("Serving request") if r.Method == "GET" { fmt.Fprintln(w, "Ready to process POST requests from Cloud Storage trigger") return } // // Read request body containing Cloud Storage object metadata // gcsInputFile, err1 := readBody(r) if err1 != nil { log.Printf("Error reading POST data: %v", err1) w.WriteHeader(http.StatusBadRequest) fmt.Fprintf(w, "Problem with POST data: %v \n", err1) return } // // Working directory (concurrency-safe) localDir, err := os.MkdirTemp("", "") if err != nil { log.Printf("Error creating local temp dir: %v", err) w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Could not create a temp directory on server. \n") return } defer os.RemoveAll(localDir) // // Download input file from Cloud Storage // localInputFile, err2 := download(gcsInputFile, localDir) if err2 != nil { log.Printf("Error downloading Cloud Storage file [%s] from bucket [%s]: %v", gcsInputFile.Name, gcsInputFile.Bucket, err2) w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Error downloading Cloud Storage file [%s] from bucket [%s]", gcsInputFile.Name, gcsInputFile.Bucket) return } // // Use LibreOffice to convert local input file to local PDF file. // localPDFFilePath, err3 := convertToPDF(localInputFile.Name(), localDir) if err3 != nil { log.Printf("Error converting to PDF: %v", err3) w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Error converting to PDF.") return } // // Upload the freshly generated PDF to Cloud Storage // targetBucket := os.Getenv("PDF_BUCKET") err4 := upload(localPDFFilePath, targetBucket) if err4 != nil { log.Printf("Error uploading PDF file to bucket [%s]: %v", targetBucket, err4) w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, "Error downloading Cloud Storage file [%s] from bucket [%s]", gcsInputFile.Name, gcsInputFile.Bucket) return } // // Delete the original input file from Cloud Storage. // err5 := deleteGCSFile(gcsInputFile.Bucket, gcsInputFile.Name) if err5 != nil { log.Printf("Error deleting file [%s] from bucket [%s]: %v", gcsInputFile.Name, gcsInputFile.Bucket, err5) // This is not a blocking error. // The PDF was successfully generated and uploaded. } log.Println("Successfully produced PDF") fmt.Fprintln(w, "Successfully produced PDF") } func convertToPDF(localFilePath string, localDir string) (resultFilePath string, err error) { log.Printf("Converting [%s] to PDF", localFilePath) cmd := exec.Command("libreoffice", "--headless", "--convert-to", "pdf", "--outdir", localDir, localFilePath) cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr log.Println(cmd) err = cmd.Run() if err != nil { return "", err } pdfFilePath := regexp.MustCompile(`\.\w+$`).ReplaceAllString(localFilePath, ".pdf") if !strings.HasSuffix(pdfFilePath, ".pdf") { pdfFilePath += ".pdf" } log.Printf("Converted %s to %s", localFilePath, pdfFilePath) return pdfFilePath, nil }
  4. Klicken Sie auf das Symbol für Gemini Code Assist: Intelligente Aktionen Gemini Code Assist: Intelligente Aktionen und wählen Sie Erkläre mir das aus.

  5. Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:

You are an expert Go developer at Cymbal AI. A new team member is unfamiliar with this server implementation. Explain this "server.go" file in detail, breaking down its key components used in the code. For the suggested improvements, don't update this file.

Die Erklärung für den Code in der Datei server.go wird im Gemini Code Assist-Chat angezeigt.

  1. Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus, um die Anwendung zu erstellen:

    go build -o server

    Die von diesem Code aufgerufenen Funktionen befinden sich in den folgenden Quelldateien:

    • server.go
    • notification.go
    • gcs.go

Nach der Anwendung können Sie nun den Dienst für die Konvertierung in das PDF-Format erstellen.

Aufgabe 3: PDF-Konvertierungsdienst entwickeln

Der PDF-Dienst nutzt Cloud Run und Cloud Storage, um einen Prozess zu starten, wenn eine Datei in den entsprechenden Speicher hochgeladen wird.

Dazu verwenden Sie ein gängiges Muster an Ereignisbenachrichtigungen kombiniert mit Cloud Pub/Sub. Die Anwendung dient ausschließlich dem Verarbeiten von Informationen. Das Weiterleiten und Übergeben von Informationen übernehmen andere Dienste. Daher können Sie diese Anwendung sehr einfach halten.

Zum Erstellen des Rechnungsmoduls müssen zwei Komponenten eingebunden werden:

Container mit zwei Komponenten: Server und LibreOffice

Wenn Sie das LibreOffice-Paket hinzufügen, können Sie es in Ihrer Anwendung nutzen.

  1. Öffnen Sie unter Editor öffnen das vorhandene Dockerfile-Manifest und aktualisieren Sie die Datei so:

    FROM amd64/debian RUN apt-get update -y \ && apt-get install -y libreoffice \ && apt-get clean WORKDIR /usr/src/app COPY server . CMD [ "./server" ]
  2. Speichern Sie die aktualisierte Dockerfile-Datei.

  3. Klicken Sie auf das Symbol für Gemini Code Assist: Intelligente Aktionen Gemini Code Assist: Intelligente Aktionen und wählen Sie Erkläre mir das aus.

  4. Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:

You are a Senior DevOps Engineer at Cymbal AI. A new team member has asked you to explain the Dockerfile. Provide a comprehensive explanation of the contents and structure of this Dockerfile, including key instructions and best practices. For the suggested improvements, don't update this Dockerfile.

Die Erklärung des Codes in der Dockerfile-Datei wird im Gemini Code Assist-Chat angezeigt.

  1. Lassen Sie das pdf-converter-Image mit Cloud Build neu erstellen:

    gcloud builds submit \ --tag gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter

    Klicken Sie auf Fortschritt prüfen.

    Image mit Cloud Build erstellen
  2. Stellen Sie den aktualisierten PDF-Konvertierungsdienst bereit.

    Hinweis: Sie sollten LibreOffice 2 GB RAM zur Verfügung stellen (siehe die Zeile mit der --memory-Option).
  3. Führen Sie die folgenden Befehle aus, um den Container zu erstellen und bereitzustellen:

    gcloud run deploy pdf-converter \ --image gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter \ --platform managed \ --region {{{ project_0.default_region | "REGION" }}} \ --memory=2Gi \ --no-allow-unauthenticated \ --set-env-vars PDF_BUCKET=$GOOGLE_CLOUD_PROJECT-processed \ --max-instances=3

    Klicken Sie auf Fortschritt prüfen.

    PDF-Konvertierungsdienst bereitstellen

Sie haben den Cloud Run-Dienst erfolgreich bereitgestellt. Allerdings benötigt die Anwendung noch Berechtigungen, um darauf zuzugreifen.

Aufgabe 4: Dienstkonto erstellen

Ein Dienstkonto ist ein besonderer Kontotyp mit Zugriff auf Google APIs.

In diesem Lab wird ein Dienstkonto verwendet, um auf Cloud Run zuzugreifen, wenn ein Cloud Storage-Ereignis verarbeitet wird. Cloud Storage unterstützt eine Vielzahl von Benachrichtigungen, die eingesetzt werden können, um Ereignisse auszulösen.

In dieser Aufgabe aktualisieren Sie den Code, damit die Anwendung benachrichtigt wird, wenn eine Datei hochgeladen wurde.

  1. Klicken Sie auf Navigationsmenü > Cloud Storage und prüfen Sie, ob zwei Buckets erstellt wurden. Hier sollten Sie dies sehen:

    • -processed
    • -upload
  2. Erstellen Sie eine Pub/Sub-Benachrichtigung mit der Information, dass eine neue Datei in den Dokument-Bucket hochgeladen wurde. Die Benachrichtigung ist mit dem Thema „new-doc“ gelabelt:

    gsutil notification create -t new-doc -f json -e OBJECT_FINALIZE gs://$GOOGLE_CLOUD_PROJECT-upload

    Erwartete Ausgabe:

    Created Cloud Pub/Sub topic projects/{{{project_0.project_id | "PROJECT_ID"}}}/topics/new-doc Created notification config projects/_/buckets/{{{project_0.project_id | "PROJECT_ID"}}}-upload/notificationConfigs/1
  3. Erstellen Sie ein neues Dienstkonto, um die Cloud Run-Dienste auszulösen:

    gcloud iam service-accounts create pubsub-cloud-run-invoker --display-name "PubSub Cloud Run Invoker"

    Erwartete Ausgabe:

    Created service account [pubsub-cloud-run-invoker].
  4. Gewähren Sie dem Dienstkonto die Berechtigung zum Aufrufen des PDF-Konvertierungsdiensts:

    gcloud run services add-iam-policy-binding pdf-converter \ --member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \ --role=roles/run.invoker \ --region {{{ project_0.default_region | "REGION" }}} \ --platform managed

    Erwartete Ausgabe:

    Updated IAM policy for service [pdf-converter]. bindings: - members: - serviceAccount:pubsub-cloud-run-invoker@{{{project_0.project_id | "PROJECT_ID"}}}.iam.gserviceaccount.com role: roles/run.invoker etag: BwYYfbXS240= version: 1
  5. Ermitteln Sie Ihre Projektnummer mit folgendem Befehl:

    PROJECT_NUMBER=$(gcloud projects list \ --format="value(PROJECT_NUMBER)" \ --filter="$GOOGLE_CLOUD_PROJECT")
  6. Aktivieren Sie Ihr Projekt, um Cloud Pub/Sub-Tokens zur Authentifizierung zu erstellen:

    gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \ --member=serviceAccount:{{{ project_0.project_id | "PROJECT_ID" }}}@{{{ project_0.project_id | "PROJECT_ID" }}}.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator

    Klicken Sie auf Fortschritt prüfen.

    Dienstkonto erstellen

Das erstellte Dienstkonto kann nun dazu verwendet werden, den Cloud Run-Dienst aufzurufen.

Aufgabe 5: Cloud Run-Dienst testen

Testen Sie den Dienst, bevor Sie fortfahren. Da der Dienst eine Authentifizierung erfordert, sollten Sie sicherstellen, dass er tatsächlich privat ist.

  1. Speichern Sie die URL des Dienstes in der Umgebungsvariablen $SERVICE_URL:

    SERVICE_URL=$(gcloud run services describe pdf-converter \ --platform managed \ --region {{{ project_0.default_region | "REGION" }}} \ --format "value(status.url)")
  2. Lassen Sie die Dienst-URL anzeigen:

    echo $SERVICE_URL
  3. Senden Sie eine anonyme GET-Anfrage an den neuen Dienst:

    curl -X GET $SERVICE_URL

    Erwartete Ausgabe:

    <html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>403 Forbidden</title> </head> <body text=#000000 bgcolor=#ffffff> <h1>Error: Forbidden</h1> <h2>Your client does not have permission to get URL <code>/</code> from this server.</h2> <h2></h2> Hinweis: Auf die anonyme GET-Anfrage erhalten Sie diese Fehlermeldung: Your client does not have permission to get URL. Das ist richtig so, denn Sie möchten ja nicht, dass der Dienst von anonymen Nutzern aufgerufen werden kann.
  4. Rufen Sie den Dienst jetzt als autorisierter Nutzer auf:

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-identity-token)" $SERVICE_URL

    Erwartete Ausgabe:

    Ready to process POST requests from Cloud Storage trigger

Damit haben Sie einen authentifizierten Cloud Run-Dienst bereitgestellt.

Aufgabe 6: Cloud Storage-Trigger konfigurieren

Fügen Sie dem bestehenden Pub/Sub-Thema ein Abo hinzu, um eine Benachrichtigung auszulösen, wenn neue Inhalte in Cloud Storage hochgeladen werden.

Hinweis: Durch Cloud Storage-Benachrichtigungen wird beim Hochladen neuer Inhalte automatisch eine Nachricht an die Themawarteschlange gesendet. Benachrichtigungen ermöglichen es Ihnen, leistungsfähige Anwendungen zu entwickeln, die auf Ereignisse reagieren, ohne dass Sie zusätzlichen Code schreiben müssen.
  • Erstellen Sie ein Pub/Sub-Abo, damit der PDF-Konvertierungsdienst ausgeführt wird, wenn eine Nachricht im Thema new-doc veröffentlicht wird:

    gcloud pubsub subscriptions create pdf-conv-sub \ --topic new-doc \ --push-endpoint=$SERVICE_URL \ --push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com

    Erwartete Ausgabe:

    Created subscription [projects/{{{ project_0.project_id| "PROJECT_ID" }}}/subscriptions/pdf-conv-sub].

    Klicken Sie auf Fortschritt prüfen.

    Pub/Sub-Abo prüfen

Wenn eine Datei hochgeladen wird, interagiert das Pub/Sub-Abo jetzt mit Ihrem Dienstkonto. Dieses startet dann den Cloud Run-Dienst zum Konvertieren von Dateien in PDFs.

Aufgabe 7: Cloud Storage-Benachrichtigung testen

Verwenden Sie die verfügbaren Beispieldateien, um den Cloud Run-Dienst zu testen.

  1. Kopieren Sie die Testdateien in den Upload-Bucket:

    gsutil -m cp -r gs://spls/gsp762/* gs://$GOOGLE_CLOUD_PROJECT-upload

    Erwartete Ausgabe:

    Copying gs://spls/gsp762/cat-and-mouse.jpg [Content-Type=image/jpeg]... Copying gs://spls/gsp762/file-sample_100kB.doc [Content-Type=application/msword]... Copying gs://spls/gsp762/file-sample_500kB.docx [Content-Type=application/vnd.openxmlformats-officedocument.wordprocessingml.document]... Copying gs://spls/gsp762/file_example_XLS_10.xls [Content-Type=application/vnd.ms-excel]... Copying gs://spls/gsp762/file-sample_1MB.docx [Content-Type=application/vnd.openxmlformats-officedocument.wordprocessingml.document]... Copying gs://spls/gsp762/file_example_XLSX_50.xlsx [Content-Type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet]... Copying gs://spls/gsp762/file_example_XLS_100.xls [Content-Type=application/vnd.ms-excel]... Copying gs://spls/gsp762/file_example_XLS_50.xls [Content-Type=application/vnd.ms-excel]... Copying gs://spls/gsp762//Copy of cat-and-mouse.jpg [Content-Type=image/jpeg]...
  2. Klicken Sie in der Cloud Console auf Cloud Storage > Buckets und dann auf den Bucket-Namen, der mit „-upload“ endet.

  3. Klicken Sie mehrmals auf Aktualisieren und beobachten Sie, wie die Dateien nacheinander gelöscht werden, nachdem sie in PDFs konvertiert wurden.

  4. Klicken Sie dann auf Buckets und auf den Bucket-Namen, der mit „-processed“ endet. Er sollte PDF-Versionen aller Dateien enthalten.

    Hinweis: Das Verarbeiten der Dateien kann einige Minuten dauern. Aktualisieren Sie die Anzeige des Buckets regelmäßig, um den Fortschritt der Verarbeitung zu prüfen.
  5. Sie können die PDF-Dateien öffnen, um zu sehen, ob sie erfolgreich konvertiert wurden.

  6. Klicken Sie nach Abschluss des Uploads auf Navigationsmenü > Cloud Run und dann auf den Dienst pdf-converter.

  7. Wechseln Sie zum Tab LOGS und fügen Sie den Filter „Wird konvertiert“ hinzu, um die konvertierten Dateien zu sehen.

  8. Klicken Sie auf Navigationsmenü > Cloud Storage und dann auf den Bucket-Namen, der mit „-upload“ endet, um zu prüfen, ob alle hochgeladenen Dateien verarbeitet wurden.

Sie haben einen neuen Dienst erstellt, der in Cloud Storage hochgeladene Dateien in das PDF-Format konvertiert.

Das wars! Sie haben das Lab erfolgreich abgeschlossen.

Sie haben gelernt, wie Sie eine Go-Anwendung in einen Container umwandeln und Container mit Google Cloud Build erstellen. Außerdem haben Sie einen Cloud Run-Dienst gestartet.

Sie können jetzt Berechtigungen über ein Dienstkonto zuweisen und die Ereignisverarbeitung in Cloud Storage nutzen. All dies ist entscheidend für den PDF-Konvertierungsdienst, der Dokumente in PDFs umwandelt und im „processed“-Bucket speichert.

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 18. August 2025 aktualisiert

Lab zuletzt am 11. August 2025 getestet

© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.