Meistern Sie den Zugriff auf Google Cloud Platform (GCP)-Dienste mit der Python-Clientbibliothek. Erlernen Sie Authentifizierung, Serviceinteraktion und Best Practices für den globalen Aufbau skalierbarer Cloud-Anwendungen.
Google Cloud Platform mit Python erschließen: Ein umfassender Leitfaden zum GCP-Dienstzugriff
Die Google Cloud Platform (GCP) bietet eine riesige Palette von Diensten zum Erstellen und Bereitstellen skalierbarer und zuverlässiger Anwendungen. Python ist mit seiner klaren Syntax und seinen umfangreichen Bibliotheken eine beliebte Wahl für die Interaktion mit GCP. Dieser Leitfaden bietet einen umfassenden Überblick darüber, wie Sie die Python-Clientbibliothek für den Zugriff auf und die Verwaltung von GCP-Diensten verwenden können, und richtet sich an ein globales Publikum mit unterschiedlichen technischen Hintergründen.
Warum Python mit GCP verwenden?
Python bietet mehrere Vorteile für die Interaktion mit GCP:
- Benutzerfreundlichkeit: Pythons lesbare Syntax vereinfacht die Entwicklung und erleichtert das Erlernen und Pflegen von GCP-Anwendungen.
- Umfassende Bibliotheken: Google bietet eine gut gepflegte Python-Clientbibliothek, die speziell für GCP-Dienste entwickelt wurde.
- Starke Community-Unterstützung: Eine große und aktive Python-Community bietet zahlreiche Ressourcen, Tutorials und Unterstützung für die GCP-Entwicklung.
- Automatisierung und Skripting: Python eignet sich hervorragend zur Automatisierung von Aufgaben und zum Skripten der Infrastrukturverwaltung, was für Cloud-Umgebungen unerlässlich ist.
- Data Science und maschinelles Lernen: Python ist die bevorzugte Sprache für Data Science und maschinelles Lernen, die sich nahtlos in die KI/ML-Dienste von GCP integriert.
Einrichtung Ihrer Umgebung
Bevor Sie beginnen, müssen Sie Ihre Python-Umgebung einrichten und die erforderlichen Bibliotheken installieren.
1. Python und Pip installieren
Wenn Sie Python noch nicht installiert haben, laden Sie die neueste Version von der offiziellen Python-Website (https://www.python.org/downloads/) herunter und installieren Sie sie. Pip, der Python-Paketinstallationsprogramm, ist normalerweise in Python-Installationen enthalten.
Überprüfung: Öffnen Sie Ihr Terminal oder Ihre Eingabeaufforderung und führen Sie die folgenden Befehle aus:
python --version
pip --version
Diese Befehle sollten die installierten Python- und Pip-Versionen anzeigen.
2. Die Google Cloud Clientbibliothek für Python installieren
Die Bibliothek `google-cloud-python` bietet Zugriff auf alle GCP-Dienste. Installieren Sie sie mit Pip:
pip install google-cloud-storage google-cloud-compute google-cloud-pubsub # Beispiel - Installieren Sie die Pakete für Storage, Compute und Pubsub
Installieren Sie nur die spezifischen Clientbibliotheken für die GCP-Dienste, die Sie nutzen möchten. Dies reduziert die Größe der Abhängigkeiten Ihrer Anwendung.
Beispiel (Cloud Storage): Um die Cloud Storage-Clientbibliothek zu installieren:
pip install google-cloud-storage
3. Authentifizierung konfigurieren
Die Authentifizierung ist entscheidend, um Ihrer Python-Anwendung die Berechtigung zum Zugriff auf GCP-Ressourcen zu erteilen. Es stehen mehrere Authentifizierungsmethoden zur Verfügung:
- Servicekonten: Empfohlen für Anwendungen, die auf GCP laufen (z. B. Compute Engine, Cloud Functions, Cloud Run).
- Benutzeranmeldeinformationen: Geeignet für die lokale Entwicklung und Tests.
Verwendung von Servicekonten (empfohlen für die Produktion)
Servicekonten sind nicht-menschliche Konten, die zur Authentifizierung von Anwendungen und Diensten verwendet werden können. Sie bieten eine sichere und kontrollierte Möglichkeit, Zugriff auf GCP-Ressourcen zu gewähren.
- Servicekonto erstellen: Navigieren Sie in der Google Cloud Console zu IAM & Admin > Servicekonten und klicken Sie auf Dienstkonto erstellen. Geben Sie einen Namen und eine Beschreibung für Ihr Dienstkonto an.
- Berechtigungen zuweisen: Weisen Sie Ihrem Dienstkonto entsprechende Rollen zu, basierend auf den GCP-Ressourcen, auf die Ihre Anwendung zugreifen muss (z. B. `roles/storage.objectAdmin` für die volle Kontrolle über Cloud Storage-Objekte).
- Servicekonto-Schlüssel herunterladen: Erstellen Sie eine JSON-Schlüsseldatei für Ihr Dienstkonto und laden Sie sie herunter. Behandeln Sie diese Schlüsseldatei mit äußerster Vorsicht, da sie Zugriff auf Ihre GCP-Ressourcen gewährt. Speichern Sie sie sicher und committen Sie sie niemals in die Versionskontrolle.
- Umgebungsvariable `GOOGLE_APPLICATION_CREDENTIALS` festlegen: Legen Sie die Umgebungsvariable `GOOGLE_APPLICATION_CREDENTIALS` auf den Pfad der heruntergeladenen JSON-Schlüsseldatei fest.
Beispiel (Linux/macOS):
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
Beispiel (Windows):
set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-key.json
Wichtiger Sicherheitshinweis: Vermeiden Sie es, Ihren Servicekonto-Schlüssel direkt in Ihren Code einzubetten. Die Verwendung der Umgebungsvariable `GOOGLE_APPLICATION_CREDENTIALS` ist der empfohlene Ansatz für Sicherheit und Wartbarkeit.
Verwendung von Benutzeranmeldeinformationen (für lokale Entwicklung)
Für die lokale Entwicklung und Tests können Sie Ihre eigenen Google Cloud-Benutzeranmeldeinformationen verwenden.
- Google Cloud SDK (gcloud) installieren: Laden Sie das Google Cloud SDK von der offiziellen Website herunter und installieren Sie es (https://cloud.google.com/sdk/docs/install).
- Mit gcloud authentifizieren: Führen Sie den folgenden Befehl in Ihrem Terminal oder Ihrer Eingabeaufforderung aus:
gcloud auth application-default login
Dieser Befehl öffnet ein Browserfenster, in dem Sie sich bei Ihrem Google Cloud-Konto anmelden und dem Google Cloud SDK die erforderlichen Berechtigungen erteilen können.
Zugriff auf GCP-Dienste mit Python
Nachdem Sie Ihre Umgebung eingerichtet und die Authentifizierung konfiguriert haben, können Sie mit dem Zugriff auf GCP-Dienste über die Python-Clientbibliothek beginnen. Hier sind einige Beispiele:
1. Cloud Storage
Cloud Storage bietet skalierbaren und dauerhaften Objektspeicher. Sie können die Python-Clientbibliothek verwenden, um Objekte in Ihren Cloud Storage-Buckets hochzuladen, herunterzuladen und zu verwalten.
Beispiel: Hochladen einer Datei nach Cloud Storage
from google.cloud import storage
# Ersetzen Sie dies durch Ihren Bucket-Namen und Dateipfad
BUCKET_NAME = "your-bucket-name"
FILE_PATH = "/path/to/your/local/file.txt"
OBJECT_NAME = "remote/file.txt" # Der Name, den die Datei in Cloud Storage haben soll
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.upload_from_filename(FILE_PATH)
print(f"Datei {FILE_PATH} wurde nach gs://{BUCKET_NAME}/{OBJECT_NAME} hochgeladen.")
Erläuterung:
- `from google.cloud import storage`: Importiert das Cloud Storage-Modul.
- `storage.Client()`: Erstellt ein Cloud Storage-Clientobjekt unter Verwendung der zuvor festgelegten Authentifizierungsdaten.
- `client.bucket(BUCKET_NAME)`: Ruft eine Referenz auf den angegebenen Cloud Storage-Bucket ab.
- `bucket.blob(OBJECT_NAME)`: Erstellt ein Blob (Objekt) innerhalb des Buckets mit dem angegebenen Namen.
- `blob.upload_from_filename(FILE_PATH)`: Lädt die Datei vom lokalen Dateipfad in das Cloud Storage-Blob hoch.
Beispiel: Herunterladen einer Datei aus Cloud Storage
from google.cloud import storage
# Ersetzen Sie dies durch Ihren Bucket-Namen, Objektnamen und lokalen Dateipfad
BUCKET_NAME = "your-bucket-name"
OBJECT_NAME = "remote/file.txt"
FILE_PATH = "/path/to/your/local/downloaded_file.txt"
client = storage.Client()
bucket = client.bucket(BUCKET_NAME)
blob = bucket.blob(OBJECT_NAME)
blob.download_to_filename(FILE_PATH)
print(f"Datei gs://{BUCKET_NAME}/{OBJECT_NAME} wurde nach {FILE_PATH} heruntergeladen.")
2. Compute Engine
Compute Engine stellt virtuelle Maschinen (VMs) auf GCP bereit. Sie können die Python-Clientbibliothek verwenden, um Compute Engine-Instanzen zu verwalten, einschließlich der Erstellung, des Starts, des Stoppens und des Löschens.
Beispiel: Compute Engine-Instanzen auflisten
from google.cloud import compute_v1
# Ersetzen Sie dies durch Ihre Projekt-ID und Zone
PROJECT_ID = "your-project-id"
ZONE = "us-central1-a"
client = compute_v1.InstancesClient()
request = compute_v1.ListInstancesRequest(
project=PROJECT_ID,
zone=ZONE
)
# Anfrage ausführen
pager = client.list(request=request)
print("Instanzen im Projekt und in der Zone:")
# Antwort verarbeiten
for response in pager:
print(response)
Erläuterung:
- `from google.cloud import compute_v1`: Importiert das Compute Engine-Modul (Version 1). Ziehen Sie bei Verfügbarkeit eine aktuellere Version in Betracht.
- `compute_v1.InstancesClient()`: Erstellt ein Compute Engine-Clientobjekt.
- `compute_v1.ListInstancesRequest()`: Erstellt eine Anfrage zum Auflisten von Instanzen im angegebenen Projekt und in der angegebenen Zone.
- `client.list(request=request)`: Sendet die Anfrage an die Compute Engine API.
- Der Code durchläuft dann die Antwort (ein Pager-Objekt) und druckt Informationen über jede Instanz.
3. Cloud Functions
Cloud Functions bietet serverlose Ausführungsumgebungen. Sie können die Python-Clientbibliothek verwenden, um Cloud Functions bereitzustellen und zu verwalten.
Beispiel: Bereitstellen einer Cloud Function (erfordert Google Cloud SDK)
Die Bereitstellung einer Cloud Function erfordert oft die direkte Verwendung des Google Cloud SDK (gcloud), obwohl die Cloud Functions API für komplexere Szenarien über die Python-Clientbibliothek aufgerufen werden kann. Dieses Beispiel demonstriert einen grundlegenden gcloud-Bereitstellungsbefehl. Erstellen Sie zuerst main.py und requirements.txt:
main.py (Beispiel)
def hello_world(request):
return 'Hello, World!'
requirements.txt (Beispiel)
functions-framework
Bereitstellungsbefehl:
gcloud functions deploy your-function-name --runtime python310 --trigger-http --entry-point hello_world
Erläuterung:
- `gcloud functions deploy your-function-name`: Stellt eine Cloud Function mit dem angegebenen Namen bereit. Ersetzen Sie `your-function-name` durch den gewünschten Namen für Ihre Funktion.
- `--runtime python310`: Gibt die Python-Runtime-Umgebung an (z. B. python310, python311). Wählen Sie eine unterstützte Laufzeitumgebung.
- `--trigger-http`: Konfiguriert die Funktion so, dass sie durch HTTP-Anfragen ausgelöst wird.
- `--entry-point hello_world`: Gibt die auszuführende Funktion an, wenn die Funktion ausgelöst wird. Dies entspricht der Funktion `hello_world`, die in `main.py` definiert ist.
4. Cloud Run
Cloud Run ermöglicht die Bereitstellung von containerisierten Anwendungen in einer serverlosen Umgebung. Sie können Cloud Run-Dienste über die Python-Clientbibliothek verwalten, die Bereitstellung erfolgt jedoch oft mit dem Google Cloud SDK oder Infrastructure-as-Code-Tools wie Terraform.
Beispiel: Bereitstellen eines Cloud Run-Dienstes (erfordert Google Cloud SDK und Docker)
Cloud Run-Bereitstellungen beginnen oft mit einer Dockerfile.
Dockerfile (Beispiel):
FROM python:3.10
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "main:app"]
main.py (Beispiel) - Minimale Flask-App
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello from Cloud Run!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8080)
requirements.txt (Beispiel):
flask
gunicorn
Bereitstellungsbefehle:
# Docker-Image erstellen
docker build -t gcr.io/your-project-id/cloud-run-image .
# Image nach Google Container Registry pushen
docker push gcr.io/your-project-id/cloud-run-image
# Cloud Run-Dienst bereitstellen
gcloud run deploy your-cloud-run-service \
--image gcr.io/your-project-id/cloud-run-image \
--platform managed \
--region us-central1 \
--allow-unauthenticated
Erläuterung:
- `docker build`: Erstellt ein Docker-Image aus der Dockerfile. Ersetzen Sie `gcr.io/your-project-id/cloud-run-image` durch Ihren gewünschten Image-Namen und Pfad zur Google Container Registry.
- `docker push`: Pusht das Docker-Image in die Google Container Registry (GCR). Sie müssen Docker zur Authentifizierung bei GCR konfiguriert haben.
- `gcloud run deploy`: Stellt einen Cloud Run-Dienst bereit.
- `--image`: Gibt das zu verwendende Docker-Image für den Dienst an.
- `--platform managed`: Gibt an, dass der Dienst auf der vollständig verwalteten Cloud Run-Plattform bereitgestellt werden soll.
- `--region`: Gibt die Region an, in der der Dienst bereitgestellt werden soll.
- `--allow-unauthenticated`: Erlaubt unauthentifizierten Zugriff auf den Dienst (zu Testzwecken). In einer Produktionsumgebung sollten Sie eine ordnungsgemäße Authentifizierung konfigurieren.
5. Cloud SQL
Cloud SQL bietet verwaltete relationale Datenbanken auf GCP. Sie können die Python-Clientbibliothek (zusammen mit datenbankspezifischen Bibliotheken wie `psycopg2` für PostgreSQL oder `pymysql` für MySQL) verwenden, um sich mit Cloud SQL-Instanzen zu verbinden und diese zu verwalten.
Beispiel: Verbindung zu einer Cloud SQL PostgreSQL-Instanz
import psycopg2
# Ersetzen Sie dies durch Ihren Cloud SQL-Instanzverbindungsnamen, Datenbanknamen, Benutzernamen und Passwort
INSTANCE_CONNECTION_NAME = "your-project-id:your-region:your-instance-name"
DB_NAME = "your_database_name"
DB_USER = "your_username"
DB_PASS = "your_password"
try:
conn = psycopg2.connect(
f"host=/cloudsql/{INSTANCE_CONNECTION_NAME} dbname={DB_NAME} user={DB_USER} password={DB_PASS}"
)
print("Erfolgreich mit Cloud SQL verbunden!")
# Datenbankoperationen hier durchführen (z.B. Abfragen ausführen)
cur = conn.cursor()
cur.execute("SELECT version();")
db_version = cur.fetchone()
print(f"Datenbankversion: {db_version}")
except Exception as e:
print(f"Fehler bei der Verbindung zu Cloud SQL: {e}")
finally:
if conn:
cur.close()
conn.close()
print("Verbindung geschlossen.")
Erläuterung:
- `import psycopg2`: Importiert die `psycopg2`-Bibliothek, einen PostgreSQL-Adapter für Python. Sie müssen sie mit `pip install psycopg2-binary` installieren.
- `INSTANCE_CONNECTION_NAME`: Dies ist ein entscheidender Identifikator, der angibt, wie die Verbindung zu Ihrer Cloud SQL-Instanz hergestellt wird. Sie finden diesen Wert in der Google Cloud Console unter den Details Ihrer Cloud SQL-Instanz.
- Die Funktion `psycopg2.connect()` stellt eine Verbindung zur Datenbank her, indem die angegebenen Parameter verwendet werden.
- Der Code führt dann eine einfache Abfrage aus, um die Datenbankversion abzurufen und sie in der Konsole auszugeben.
- Ein `finally`-Block stellt sicher, dass die Datenbankverbindung ordnungsgemäß geschlossen wird, auch wenn Fehler auftreten.
Best Practices für die Verwendung von Python mit GCP
Hier sind einige Best Practices, die Sie bei der Entwicklung von GCP-Anwendungen mit Python befolgen sollten:
- Verwenden Sie Servicekonten: Verwenden Sie für die Authentifizierung immer Servicekonten, insbesondere in Produktionsumgebungen. Weisen Sie ihnen nur die erforderlichen Berechtigungen zu (Prinzip der geringsten Rechte).
- Abhängigkeiten verwalten: Verwenden Sie eine `requirements.txt`-Datei zur Verwaltung der Abhängigkeiten Ihrer Anwendung. Dies gewährleistet konsistente Bereitstellungen und vereinfacht die Abhängigkeitsverwaltung.
- Fehler behandeln: Implementieren Sie eine ordnungsgemäße Fehlerbehandlung, um Ausnahmen abzufangen und Anwendungsabstürze zu verhindern. Verwenden Sie try-except-Blöcke, um potenzielle Fehler abzufangen und sie zur Fehlerbehebung zu protokollieren.
- Effektiv protokollieren: Verwenden Sie den Cloud Logging-Dienst von GCP, um Anwendungsereignisse und Fehler zu protokollieren. Dies liefert wertvolle Einblicke in das Verhalten Ihrer Anwendung und hilft bei der Fehlerbehebung.
- Umgebungsvariablen verwenden: Speichern Sie sensible Informationen wie API-Schlüssel und Datenbankanmeldeinformationen in Umgebungsvariablen. Dies verhindert, dass sie in Ihren Code eingebettet werden, und verbessert die Sicherheit.
- Für Leistung optimieren: Verwenden Sie Caching, asynchrone Operationen und andere Optimierungstechniken, um die Leistung Ihrer GCP-Anwendungen zu verbessern. Erwägen Sie die Verwendung von GCP-Diensten wie Cloud CDN für die Inhaltsbereitstellung.
- Anwendungen überwachen: Verwenden Sie den Cloud Monitoring-Dienst von GCP, um den Zustand und die Leistung Ihrer Anwendungen zu überwachen. Richten Sie Benachrichtigungen ein, um über Probleme informiert zu werden.
- Bereitstellungen automatisieren: Verwenden Sie Infrastructure-as-Code-Tools wie Terraform oder Bereitstellungspipelines, um den Bereitstellungsprozess zu automatisieren. Dies gewährleistet konsistente und wiederholbare Bereitstellungen.
- Den richtigen GCP-Dienst auswählen: Wählen Sie den geeigneten GCP-Dienst für die Bedürfnisse Ihrer Anwendung. Berücksichtigen Sie Faktoren wie Skalierbarkeit, Kosten und betriebliche Komplexität. Cloud Functions eignen sich beispielsweise gut für ereignisgesteuerte Aufgaben, während Cloud Run ideal für die Bereitstellung containerisierter Anwendungen ist.
- Ressourcen bereinigen: Denken Sie daran, nicht verwendete GCP-Ressourcen zu bereinigen, um unnötige Kosten zu vermeiden.
- Bibliotheken aktuell halten: Aktualisieren Sie Ihre Python-Bibliotheken regelmäßig, um von Fehlerbehebungen, Sicherheitspatches und neuen Funktionen zu profitieren. Verwenden Sie `pip`, um Ihre Pakete zu aktualisieren: `pip install --upgrade
`. - Virtuelle Umgebungen verwenden: Erstellen Sie virtuelle Umgebungen für jedes Projekt, um Abhängigkeiten zu isolieren und Konflikte zwischen verschiedenen Projekten zu vermeiden.
Globale Überlegungen
Berücksichtigen Sie beim Entwickeln von GCP-Anwendungen für ein globales Publikum Folgendes:
- Datenresidenz: Verstehen Sie die Anforderungen an die Datenresidenz für Ihre Zielregionen. Wählen Sie GCP-Regionen, die diesen Anforderungen entsprechen.
- Latenz: Minimieren Sie die Latenz, indem Sie Ihre Anwendungen in Regionen bereitstellen, die geografisch nahe an Ihren Benutzern liegen.
- Lokalisierung: Lokalisieren Sie die Benutzeroberfläche und die Inhalte Ihrer Anwendung für verschiedene Sprachen und Regionen.
- Währung und Zahlungsabwicklung: Wenn Ihre Anwendung finanzielle Transaktionen beinhaltet, stellen Sie sicher, dass Sie die in Ihren Zielregionen verwendeten Währungen und Zahlungsmethoden unterstützen.
- Rechtliche und behördliche Konformität: Beachten Sie die rechtlichen und behördlichen Anforderungen in Ihren Zielregionen, wie z. B. Datenschutzgesetze (z. B. DSGVO) und Exportkontrollen.
- Zeitzonen: Behandeln Sie Zeitzonen korrekt, um sicherzustellen, dass Ihre Anwendung Daten und Uhrzeiten für Benutzer an verschiedenen Standorten genau anzeigt. Verwenden Sie Bibliotheken wie `pytz` zur Verwaltung von Zeitzonenkonvertierungen.
- Kulturelle Sensibilität: Achten Sie auf kulturelle Unterschiede bei der Gestaltung der Benutzeroberfläche und der Inhalte Ihrer Anwendung.
Häufige Probleme beheben
Hier sind einige häufige Probleme, auf die Sie bei der Verwendung von Python mit GCP stoßen könnten, und wie Sie sie beheben:
- Authentifizierungsfehler: Überprüfen Sie, ob Ihre Servicekonto-Schlüsseldatei gültig ist und ob die Umgebungsvariable `GOOGLE_APPLICATION_CREDENTIALS` korrekt festgelegt ist. Stellen Sie außerdem sicher, dass das Servicekonto über die erforderlichen Berechtigungen für den Zugriff auf die GCP-Ressourcen verfügt.
- Zugriff verweigert-Fehler: Überprüfen Sie die IAM-Rollen, die Ihrem Servicekonto oder Benutzerkonto zugewiesen sind. Stellen Sie sicher, dass sie über die erforderlichen Berechtigungen für den Vorgang verfügen, den Sie ausführen möchten.
- Importfehler: Überprüfen Sie, ob Sie die erforderlichen Python-Bibliotheken mit `pip` installiert haben. Stellen Sie sicher, dass die Bibliotheksnamen korrekt sind und dass Sie die richtige Version verwenden.
- Netzwerkverbindungsprobleme: Wenn Sie Ihre Anwendung auf einer VM-Instanz ausführen, stellen Sie sicher, dass die VM über eine Netzwerkverbindung zum Internet und zu den GCP-Diensten verfügt, auf die Sie zugreifen möchten. Überprüfen Sie Ihre Firewall-Regeln und Netzwerkkonfiguration.
- API-Ratenbegrenzungen: GCP-APIs haben Ratenbegrenzungen, um Missbrauch zu verhindern. Wenn Sie die Ratenbegrenzungen überschreiten, können Fehler auftreten. Implementieren Sie exponentielles Backoff oder Caching, um die Anzahl der API-Aufrufe zu reduzieren.
Fazit
Python und die Google Cloud Platform bieten eine leistungsstarke Kombination für die Erstellung und Bereitstellung skalierbarer, zuverlässiger und global zugänglicher Anwendungen. Indem Sie die in diesem Leitfaden beschriebenen Richtlinien und Best Practices befolgen, können Sie die Python-Clientbibliothek effektiv nutzen, um auf GCP-Dienste zuzugreifen und diese zu verwalten, und so innovative Lösungen für ein globales Publikum entwickeln.
Denken Sie daran, stets die Sicherheit zu priorisieren, für Leistung zu optimieren und die globalen Auswirkungen Ihrer Anwendungen zu berücksichtigen. Kontinuierliches Lernen und Experimentieren sind der Schlüssel zur Beherrschung der Cloud-Entwicklung mit Python auf GCP.