Demobereitstellung
Die Demobereitstellung bietet eine optimierte Erfahrung mit einem vordefinierten Rohdaten- Beispieldataset. Sie bietet einen End-to-End-Workflow zum Bereitstellen der Cortex Framework Dataform-Pipelines für die Orchestrierung und zum Initialisieren der entsprechenden BigQuery-Datasets mit Beispieldaten.
Hinweis
Prüfen Sie, ob die auf der Voraussetzungen Seite beschriebenen Voraussetzungen erfüllt sind, bevor Sie mit der Demobereitstellung fortfahren.
Erforderliche IAM-Rollen und ‑Berechtigungen abrufen
Rufen Sie die erforderlichen IAM-Berechtigungen (Identity and Access Management) ab, um Cortex Framework -Inhalte im Ziel Google Cloud projekt bereitzustellen.
Rollen für das Zielprojekt
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Zielprojekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen von Cortex Framework benötigen:
- BigQuery-Jobnutzer (
roles/bigquery.jobUser) - BigQuery-Datenbearbeiter (
roles/bigquery.dataEditor) - Dataform-Administrator (
roles/dataform.admin) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Mit dem folgenden Skript können Sie einem Nutzer die angeforderten Rollen zuweisen:
# Grant BigQuery JobUser to the user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_EMAIL" \
--role="roles/bigquery.jobUser"
# Grant BigQuery DataEditor to the user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_EMAIL" \
--role="roles/bigquery.dataEditor"
# Grant BigQuery Dataform admin to the user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_EMAIL" \
--role="roles/dataform.admin"
# Grant Service Usage Consumer to the user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_EMAIL" \
--role="roles/serviceusage.serviceUsageConsumer"
Optional: Erforderliche IAM-Rollen für eine Demobereitstellung mit einem Dienstkonto abrufen
Die folgenden Rollen sind nur für eine Demobereitstellung mit dem optionalen Parameter --service_account erforderlich. Wenn Sie ein Dienstkonto angeben, werden Aufgaben nach der Bereitstellung vereinfacht, da die Planung der Datenpipelines eingerichtet wird. Sie können diese Workflowkonfiguration in Dataform auf dem Tab Release und Planung über das Dreipunkt-Menü manuell auslösen.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dienstkonto-Token-Ersteller (roles/iam.serviceAccountTokenCreator) für das Quell- und Zielprojekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen der Demo von Cortex Framework benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Mit dem folgenden Skript können Sie das Dienstkonto erstellen und die erforderlichen Rollen zuweisen:
# Create the service account
gcloud iam service-accounts create cortex-dataform \
--description="Service account for Cortex Dataform execution" \
--display-name="Cortex Dataform Service Account" \
--project=PROJECT_ID
# Wait for the service account to propagate (IAM eventual consistency)
sleep 10
# Grant BigQuery DataEditor to the service account
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:cortex-dataform@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/bigquery.dataEditor"
# Grant BigQuery jobUser to the service account
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:cortex-dataform@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/bigquery.jobUser"
# Grant Dataform Editor to the service account
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:cortex-dataform@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/dataform.editor"
# Grant the user Service Account Token Creator role on the Cortex service account
gcloud iam service-accounts add-iam-policy-binding \
cortex-dataform@PROJECT_ID.iam.gserviceaccount.com \
--member="user:USER_EMAIL" \
--role="roles/iam.serviceAccountTokenCreator" \
--project=PROJECT_ID
PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
## Note: In case the commands below should fail with message:
# "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com" not found
# the default dataform service accounts hasn't been yet provisioned for given project.
# In such case, please execute the commands after initial run of `uv run cortex-*`
# Grant the Dataform Service Account the Token Creator role on the Cortex service account
gcloud iam service-accounts add-iam-policy-binding \
cortex-dataform@PROJECT_ID.iam.gserviceaccount.com \
--member="serviceAccount:service-$PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountTokenCreator" \
--project=PROJECT_ID
# Grant the Dataform Service Account the Service Account User role on the Cortex service account
gcloud iam service-accounts add-iam-policy-binding \
cortex-dataform@PROJECT_ID.iam.gserviceaccount.com \
--member="serviceAccount:service-$PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser" \
--project=PROJECT_ID
Bereitstellung
Führen Sie die folgenden Schritte aus, um eine virtuelle Python-Umgebung zu erstellen, die Abhängigkeiten zu synchronisieren und die Datenpipelines auszulösen. Verwenden Sie
die uvSkripts von Cortex Framework, um Ihre Daten
assets zu erstellen und in Ihr Google Cloud Projekt zu übertragen. So wandeln Sie Ihre lokalen Konfigurationen
in eine aktive, skalierbare Datenarchitektur um. Weitere Informationen finden Sie unter der
uv Installation
im Abschnitt Voraussetzungen.
Demobereitstellung ausführen
Führen Sie den folgenden Befehl aus, um die Bereitstellung auszulösen. Bei diesem Vorgang werden die folgenden Aktionen ausgeführt:
- Prüfen, ob alle Voraussetzungen erfüllt sind.
- Beispieldaten in ein BigQuery-Dataset laden, das zu Demonstrationszwecken als Rohdatenebene dient.
- Dataform-Pipelines zum Verarbeiten der Beispieldaten über die Cortex Framework-Datenebenen erstellen.
- Dataform-Repository und ‑Arbeitsbereich erstellen und dann die kompilierten Artefakte mit dem Repository synchronisieren.
*Optional: Wenn ein Dienstkonto mit
--service_accountangegeben wurde, Workflowzeitplan erstellen und die erste Dataform Workflowausführung auslösen.
Führen Sie für die Demobereitstellung mit Standardwerten den folgenden Befehl aus:
uv run cortex-demo --project_id=PROJECT_ID --sap_version s4
Führen Sie für die Demobereitstellung mit einem Dienstkonto den folgenden Befehl aus:
uv run cortex-demo --project_id=PROJECT_ID \
--service_account="cortex-dataform@PROJECT_ID.iam.gserviceaccount.com" \
--create_workflow_configs
Überprüfung
Nach Abschluss der Bereitstellung:
Öffnen Sie Dataform, um den neuen Code im Repository zu prüfen:
- Erstelltes Dataform-Repository:
cortex-framework-demo - Entwicklungsarbeitsbereich im Dataform-Repository:
demo - Kompilierter und synchronisierter Code (die Grafik sehen Sie, wenn Sie auf
Compiled graphklicken).
- Erstelltes Dataform-Repository:
Manuelle Ausführung von Dataform-Aktionen:
- Öffnen Sie den Dataform-Arbeitsbereich „demo“ aus dem Repository cortex-framework-demo in der Google Cloud Dataform-Konsole.
- Klicken Sie auf Ausführung starten.
- Klicken Sie auf Aktionen ausführen.
- Klicken Sie auf Alle Aktionen.
Klicken Sie auf Ausführung starten.
Überwachen Sie die erfolgreiche Ausführung aller Aktionen in Ihrem Dataform-Repository auf dem Tab Workflow-Ausführungsprotokolle.
Geplante Ausführung von Dataform-Aktionen
Gilt nur, wenn Sie bei der Bereitstellung die Parameter --service_account und --create_workflow_configs verwendet haben:
- Öffnen Sie das Dataform-Repository cortex-framework-demo in der Google Cloud Dataform-Konsole.
- Klicken Sie auf Releases und Planung.
Klicken Sie im Abschnitt Workflowkonfigurationen auf das Dreipunkt-Menü für die Aktion, die Sie ausführen möchten, und dann auf Jetzt starten.
Überwachen Sie die erfolgreiche Ausführung aller Aktionen in Ihrem Dataform-Repository auf dem Tab Workflow-Ausführungsprotokolle.
Rufen Sie die BigQuery-Konsole auf und klicken Sie auf
Datasets, um die neu erstellten Datasets anzusehen und das Schema und die Daten zu prüfen. Erstellte Datasets:cortex_demo_sap_s4_raw: Dieses Dataset enthält die Rohdaten aus dem Quellsystem (in diesem Beispiel SAP S/4HANA).cortex_demo_sap_s4_data_foundation: Dieses Dataset stellt die Datengrundlagenebene dar, auf der Rohdaten aus der Rohdatenebene mit CDC verarbeitet werden.cortex_demo_data_product: Dieses Dataset enthält die Demodatenprodukte – verfeinerte, leistungsstarke Ansichten oder Tabellen, die für Endnutzer konzipiert sind.cortex_demo_samples: Dieses Dataset enthält die Demodaten für Beispieldatenprodukte.
Ressourcen der Demobereitstellung bereinigen
Nach einer erfolgreichen Demobereitstellung können Sie die verwendeten Google Cloud Ressourcen entfernen, um laufende Kosten zu vermeiden. Mit dem folgenden Skript werden die erstellten BigQuery-Datasets, der Dataform-Arbeitsbereich und das Dataform-Repository gelöscht:
#!/bin/bash
# Define variables using names from uv-run-cortex-demo.md
PROJECT_ID="PROJECT_ID"
SAP_VERSION="s4"
DATAFORM_REGION="us-central1"
SOURCE_SAP_RAW_DATASET_ID="cortex_demo_sap_s4_raw"
TARGET_SAP_FOUNDATION_DATASET_ID="cortex_demo_sap_s4_data_foundation"
if [[ "$SAP_VERSION" == "ecc" ]]; then
SOURCE_SAP_RAW_DATASET_ID="cortex_demo_sap_ecc_raw"
TARGET_SAP_FOUNDATION_DATASET_ID="cortex_demo_sap_ecc_data_foundation"
fi
TARGET_DP_DATASET_ID="cortex_demo_data_product"
TARGET_SAMPLES_DATASET_ID="cortex_demo_samples"
REPOSITORY_NAME="cortex-framework-demo"
WORKSPACE_NAME="demo"
SERVICE_ACCOUNT_NAME="cortex-dataform"
# Color codes for formatting status output
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Helper function to delete a resource and report status
delete_resource() {
local label=$1
local url=$2
local resource_type=$3
echo -n "${label}... "
local temp_file=$(mktemp)
local code=$(curl -s -o "${temp_file}" -w "%{http_code}" -X DELETE \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
"${url}")
if [ "$code" -eq 200 ] || [ "$code" -eq 204 ]; then
echo -e "${GREEN}ok${NC}"
elif [ "$code" -eq 404 ]; then
echo -e "${YELLOW}skipped, ${resource_type} not found${NC}"
else
echo -e "${RED}failed (HTTP ${code})${NC}"
if [ -s "${temp_file}" ]; then
echo " Error details:"
sed 's/^/ /' "${temp_file}"
fi
fi
rm -f "${temp_file}"
}
echo "Deleting BigQuery datasets..."
for DATASET_ID in "${SOURCE_SAP_RAW_DATASET_ID}" \
"${TARGET_SAP_FOUNDATION_DATASET_ID}" \
"${TARGET_DP_DATASET_ID}" \
"${TARGET_SAMPLES_DATASET_ID}"; do
echo "deleting ${PROJECT_ID}:${DATASET_ID}"
bq rm -r -f "${PROJECT_ID}:${DATASET_ID}"
done
ACCESS_TOKEN=$(gcloud auth print-access-token)
delete_resource "Deleting Dataform workspace ${WORKSPACE_NAME}" \
"https://dataform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${DATAFORM_REGION}/repositories/${REPOSITORY_NAME}/workspaces/${WORKSPACE_NAME}" \
"workspace"
echo "Deleting Dataform workflow configurations..."
WORKFLOW_CONFIGS_JSON=$(curl -s -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://dataform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${DATAFORM_REGION}/repositories/${REPOSITORY_NAME}/workflowConfigs")
WORKFLOW_CONFIGS=$(echo "${WORKFLOW_CONFIGS_JSON}" | grep '"name":' | sed -E 's/.*"name": "([^"]+)".*/\1/')
if [ -z "${WORKFLOW_CONFIGS}" ]; then
echo -e " No workflow configurations found. ${YELLOW}skipped${NC}"
else
for config in ${WORKFLOW_CONFIGS}; do
delete_resource " Deleting workflow config: ${config##*/}" \
"https://dataform.googleapis.com/v1beta1/${config}" \
"workflow config"
done
fi
echo "Deleting Dataform release configurations..."
RELEASE_CONFIGS_JSON=$(curl -s -H "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://dataform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${DATAFORM_REGION}/repositories/${REPOSITORY_NAME}/releaseConfigs")
RELEASE_CONFIGS=$(echo "${RELEASE_CONFIGS_JSON}" | grep '"name":' | sed -E 's/.*"name": "([^"]+)".*/\1/')
if [ -z "${RELEASE_CONFIGS}" ]; then
echo -e " No release configurations found. ${YELLOW}skipped${NC}"
else
for config in ${RELEASE_CONFIGS}; do
delete_resource " Deleting release config: ${config##*/}" \
"https://dataform.googleapis.com/v1beta1/${config}" \
"release config"
done
fi
delete_resource "Deleting Dataform repository ${REPOSITORY_NAME}" \
"https://dataform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${DATAFORM_REGION}/repositories/${REPOSITORY_NAME}?force=true" \
"repository"
if gcloud iam service-accounts describe "${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" --project="${PROJECT_ID}" >/dev/null 2>&1; then
read -p "Do you want to delete the service account ${SERVICE_ACCOUNT_NAME}? (y/N): " -r
if [[ "$REPLY" =~ ^[Yy]$ ]]; then
echo -n "Deleting service account ${SERVICE_ACCOUNT_NAME}... "
ERROR_MSG=$(gcloud iam service-accounts delete "${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" --project="${PROJECT_ID}" --quiet 2>&1)
EXIT_CODE=$?
if [ ${EXIT_CODE} -eq 0 ]; then
echo -e "${GREEN}ok${NC}"
else
echo -e "${RED}failed${NC}"
echo " Error details:"
echo "${ERROR_MSG}" | sed 's/^/ /'
fi
else
echo -e "Deleting service account ${SERVICE_ACCOUNT_NAME}... ${YELLOW}skipped (user cancelled)${NC}"
fi
else
echo -e "Deleting service account ${SERVICE_ACCOUNT_NAME}... ${YELLOW}skipped, service account not found${NC}"
fi
echo "Cortex Framework demo deployment cleanup complete."
Nächste Schritte
Folgen Sie der Anleitung zur Produktionsbereitstellung , um zu erfahren, wie Sie Google Cloud Cortex Framework in Produktionsumgebungen bereitstellen.
Lesen Sie den Artikel zur Quellsystemintegration , um zu erfahren, wie Sie Ihre Produktionssysteme verbinden.