ARC100

Übersicht
In einem Challenge-Lab geht es um ein bestimmtes Szenario mit mehreren Aufgaben. Anders als bei einem normalen Lab erhalten Sie jedoch keine Schritt-für-Schritt-Anleitung, sondern nutzen die in den Labs des jeweiligen Kurses erlernten Fähigkeiten, um die Aufgaben selbst zu lösen. Ihre Lösungen werden automatisch bewertet. Die erzielten Punkte finden Sie rechts oben auf dieser Seite.
In Challenge-Labs werden keine neuen Grundlagen zu Google Cloud vermittelt. Sie sollen dabei Ihr Wissen erweitern und es wird erwartet, dass Sie beispielsweise Standardwerte ändern und Fehlermeldungen lesen und recherchieren, um Ihre eigenen Fehler zu beheben.
Die volle Punktzahl erreichen Sie nur, wenn Sie alle Aufgaben innerhalb der vorgegebenen Zeit lösen.
Einrichtung
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.
Das Szenario
Sie haben gerade Ihre neue Stelle als Junior Data Engineer angetreten. Bisher haben Sie Teams beim Erstellen und Verwalten von Google Cloud-Ressourcen unterstützt.
Das Know-how für diese Aufgaben wird vorausgesetzt.
Die Aufgabe
Sie werden nun gebeten, einem neu gebildeten Entwicklungsteam bei der anfänglichen Arbeit am Projekt Memories zu helfen, bei dem es um das Speichern und Organisieren von Fotos geht. Sie sollen das Memories-Team bei der Erstkonfiguration der Entwicklungsumgebung einer Anwendung unterstützen und dazu folgende Aufgaben ausführen:
- Bucket zum Speichern der Fotos erstellen
- Pub/Sub-Thema erstellen, das von einer Cloud Run-Funktion verwendet wird, die Sie erstellen.
- Cloud Run-Funktion erstellen
Folgende Vorgaben sind zu beachten:
- Alle Ressourcen werden in der Region erstellt, sofern nicht anders angegeben.
- Es werden die VPCs des Projekts verwendet.
- Die Ressourcenbenennung erfolgt im Format team-resource, eine Instanz könnte beispielsweise kraken-webserver1 heißen.
- Die Ressourcendimensionierung muss kosteneffektiv sein. Die Projekte werden überwacht und ein übermäßiger Ressourcenverbrauch bedeutet das Ende des betreffenden Projekts. Umsicht ist also angebracht. Sofern nicht anders angegeben, wird Maschinentyp f1-micro für kleine Linux-VMs genutzt, während n1-standard-1 für Windows oder Anwendungen wie Kubernetes-Knoten eingesetzt wird.
Die einzelnen Aufgaben sind nachfolgend genauer beschrieben. Viel Erfolg!
Aufgabe 1: Bucket erstellen
Erstellen Sie einen Bucket mit dem Namen zum Speichern der Fotos.
Die Ressource muss in der Region eingerichtet werden.
Klicken Sie auf Fortschritt prüfen.
Bucket mit dem Namen erstellen
Aufgabe 2: Pub/Sub-Thema erstellen
Erstellen Sie ein Pub/Sub-Thema mit dem Namen , über das die Cloud Run-Funktion Nachrichten sendet.
Klicken Sie auf Fortschritt prüfen.
Pub/Sub-Thema mit dem Namen erstellen
Aufgabe 3: Cloud Run-Funktion für Miniaturansichten einrichten
Sie erstellen eine Cloud Run-Funktion zum Generieren von Miniaturansichten für Bilder, die dem Bucket hinzugefügt werden.
Achten Sie darauf, dass die Cloud Run-Funktion die Umgebung für Cloud Run-Funktionen (2. Generation) nutzt.
Die Ressource muss in der Region und der Zone eingerichtet werden.
- Erstellen Sie mit
Node.js 22 eine Cloud Run-Funktion (2. Generation) mit dem Namen und legen Sie Cloud Storage als Trigger fest.
Hinweis:
Die Cloud Run-Funktion muss immer dann ausgeführt werden, wenn ein Objekt in dem in Aufgabe 1 eingerichteten Bucket erstellt wird.
Während des Vorgangs fordert die Cloud Run-Funktion möglicherweise die Berechtigung für das Aktivieren von APIs oder für die Rollenzuweisung an Dienstkonten an.
Bitte aktivieren Sie alle erforderlichen APIs und gewähren Sie die angeforderten Rollen.
Nachdem Sie die Berechtigungen gewährt haben, warten Sie einige Minuten, bevor Sie auf „Funktion erstellen“ klicken, damit die Berechtigungen aktualisiert werden können.
Hinweis zur Erstellung der Funktion über die Console: Nachdem Sie die Funktionserstellung initiiert haben, warten Sie, bis das grüne Häkchen für Eventarc-Trigger erstellen (oben auf der Seite unter Dienst erstellen) angezeigt wird, bevor Sie den Code im nächsten Schritt aktualisieren.
Wenn Sie nicht warten, bis das grüne Häkchen für Eventarc-Trigger erstellen angezeigt wird, wird der Trigger möglicherweise nicht erstellt und erscheint nicht auf dem Tab Trigger der Funktion.
-
Setzen Sie den Einstiegspunkt (auszuführende Funktion) auf .
-
Fügen Sie folgenden Code in die Datei index.js ein:
const functions = require('@google-cloud/functions-framework');
const { Storage } = require('@google-cloud/storage');
const { PubSub } = require('@google-cloud/pubsub');
const sharp = require('sharp');
functions.cloudEvent('{{{ project_0.startup_script.function }}}', async cloudEvent => {
const event = cloudEvent.data;
console.log(`Event: ${JSON.stringify(event)}`);
console.log(`Hello ${event.bucket}`);
const fileName = event.name;
const bucketName = event.bucket;
const size = "64x64";
const bucket = new Storage().bucket(bucketName);
const topicName = "{{{ project_0.startup_script.topic }}}";
const pubsub = new PubSub();
if (fileName.search("64x64_thumbnail") === -1) {
// doesn't have a thumbnail, get the filename extension
const filename_split = fileName.split('.');
const filename_ext = filename_split[filename_split.length - 1].toLowerCase();
const filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length - 1); // fix sub string to remove the dot
if (filename_ext === 'png' || filename_ext === 'jpg' || filename_ext === 'jpeg') {
// only support png and jpg at this point
console.log(`Processing Original: gs://${bucketName}/${fileName}`);
const gcsObject = bucket.file(fileName);
const newFilename = `${filename_without_ext}_64x64_thumbnail.${filename_ext}`;
const gcsNewObject = bucket.file(newFilename);
try {
const [buffer] = await gcsObject.download();
const resizedBuffer = await sharp(buffer)
.resize(64, 64, {
fit: 'inside',
withoutEnlargement: true,
})
.toFormat(filename_ext)
.toBuffer();
await gcsNewObject.save(resizedBuffer, {
metadata: {
contentType: `image/${filename_ext}`,
},
});
console.log(`Success: ${fileName} → ${newFilename}`);
await pubsub
.topic(topicName)
.publishMessage({ data: Buffer.from(newFilename) });
console.log(`Message published to ${topicName}`);
} catch (err) {
console.error(`Error: ${err}`);
}
} else {
console.log(`gs://${bucketName}/${fileName} is not an image I can handle`);
}
} else {
console.log(`gs://${bucketName}/${fileName} already has a thumbnail`);
}
});
- Fügen Sie folgenden Code in die Datei
package.json ein:
{
"name": "thumbnails",
"version": "1.0.0",
"description": "Create Thumbnail of uploaded image",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0",
"@google-cloud/pubsub": "^2.0.0",
"@google-cloud/storage": "^6.11.0",
"sharp": "^0.32.1"
},
"devDependencies": {},
"engines": {
"node": ">=4.3.2"
}
}
Hinweis: Wenn Sie den Fehler „Berechtigung verweigert“ erhalten, laut dem es einige Minuten dauern kann, bis alle erforderlichen Berechtigungen an den Dienst-Agenten weitergegeben werden, warten Sie einige Minuten und versuchen Sie es noch einmal. Die entsprechenden Rollen (Eventarc Service Agent, Eventarc Event Receiver, Service Account Token Creator und Pub/Sub Publisher) müssen dabei den richtigen Dienstkonten zugewiesen sein.
Aufgabe 4: Infrastruktur testen
Laden Sie zum Testen der Funktion ein Bild im JPG- oder PNG-Format in den Bucket hoch.
- Laden Sie ein Bild im JPG- oder PNG-Format in den Bucket hoch.
Hinweis:
Nachdem Sie die Funktion erstellt haben, laden Sie ein Bild im JPG- oder PNG-Format in den Bucket hoch, um zu prüfen, ob die Miniaturansicht erstellt wurde. Verwenden Sie eine beliebige JPG- oder PNG-Datei oder das Bild unter https://storage.googleapis.com/cloud-training/arc101/travel.jpg. Laden Sie es auf Ihren Computer herunter und anschließend in den Bucket hoch.
- Kurz darauf sehen Sie ein Miniaturbild. Klicken Sie in den Bucket-Details auf AKTUALISIEREN.
Nachdem Sie die Bilddatei hochgeladen haben, können Sie unten auf „Fortschritt prüfen“ klicken. Sie müssen nicht warten, bis das Miniaturbild fertig erstellt ist.
Hinweis: Wenn die Funktion erfolgreich bereitgestellt wurde und das Miniaturbild nicht im Bucket angezeigt wird, können Sie prüfen, ob auf dem Tab Trigger die Triggerinformationen angezeigt werden, die Sie zuvor für die Funktion angegeben haben. Falls Sie zuvor Fehlermeldungen erhalten haben, wurden diese Informationen möglicherweise nicht richtig gespeichert.
Wenn der Cloud Storage-Trigger auf dem Tab Trigger der Funktion nicht angezeigt wird, können Sie ihn neu erstellen (siehe die Dokumentationsseite Trigger mit Ereignissen) und dann noch einmal eine neue Datei hochladen, um den Test zu wiederholen. Aktualisieren Sie die Seite nach dem Hinzufügen der neuen Datei.
Klicken Sie auf Fortschritt prüfen.
Prüfen, ob die Miniaturansicht von der Cloud Run-Funktion erfolgreich erstellt wurde
Glückwunsch!
Glückwunsch! In diesem Lab haben Sie einen Bucket, ein Pub/Sub-Thema und eine Cloud Run-Funktion erstellt. Diese erstellt eine Miniaturansicht eines Bildes, das dem Bucket hinzugefügt wurde.

Nächstes Skill-Logo erwerben
Dieses Lab zum selbstbestimmten Lernen ist Teil des Kurses Daten über die Console in Google Cloud speichern, verarbeiten und verwalten. Wenn Sie diesen Kurs abschließen, erhalten Sie das oben gezeigte Skill-Logo, das Sie in Ihren Lebenslauf oder Ihre Social-Media-Profile einfügen können. Teilen Sie Ihre Leistung mit #GoogleCloudBadge.
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 4. April 2025 aktualisiert
Lab zuletzt am 4. April 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.