Deployment demo
Il deployment demo offre un'esperienza semplificata utilizzando un set di dati di esempio non elaborati predefinito. Fornisce un workflow end-to-end per eseguire il deployment delle pipeline Dataform di Cortex Framework per l'orchestrazione e per inizializzare i set di dati BigQuery corrispondenti con dati di esempio.
Prima di iniziare
Prima di continuare con il deployment demo, assicurati di aver completato i prerequisiti descritti nella pagina Prerequisiti.
Ottenere i ruoli e le autorizzazioni IAM richiesti
Ottieni le autorizzazioni IAM (Identity and Access Management) richieste per eseguire il deployment dei contenuti di Cortex Framework all'interno del progetto di destinazione Google Cloud .
Ruoli per il progetto di destinazione
Per ottenere le autorizzazioni necessarie per eseguire il deployment di Cortex Framework, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto di destinazione:
- Utente job BigQuery (
roles/bigquery.jobUser) - Editor dati BigQuery (
roles/bigquery.dataEditor) - Amministratore Dataform (
roles/dataform.admin) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per concedere i ruoli richiesti a un utente, puoi utilizzare lo script:
# 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"
(Facoltativo) Ottenere i ruoli IAM richiesti per un deployment demo utilizzando un account di servizio
I seguenti ruoli sono richiesti solo per un deployment demo con il parametro facoltativo --service_account abilitato. Fornire un account di servizio semplifica le attività post-deployment configurando la pianificazione delle pipeline di dati. Puoi attivare manualmente questa configurazione del flusso di lavoro in Dataform nella scheda Release e pianificazione utilizzando il menu con tre puntini.
Per ottenere le autorizzazioni necessarie per eseguire il deployment della demo di Cortex Framework, chiedi all'amministratore di concederti il ruolo IAM Service Account Token Creator (roles/iam.serviceAccountTokenCreator) nel progetto di origine e di destinazione.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per creare il account di servizio e concedere i ruoli necessari, puoi utilizzare il seguente script:
# 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
Deployment
Segui questi passaggi per creare un ambiente Python virtuale, sincronizzare le dipendenze e attivare le pipeline di dati. Ricorda di utilizzare
gli script uvdi Cortex Framework per creare e inviare gli asset di dati
al tuo progetto Google Cloud , trasformando le configurazioni locali
in un'architettura di dati live e scalabile. Per saperne di più, consulta l'installazione di
uv
nella sezione Prerequisiti.
Eseguire il deployment demo
Esegui il seguente comando per attivare il deployment. Questa procedura eseguirà le seguenti azioni:
- Verifica che tutti i prerequisiti siano stati completati.
- Carica i dati di esempio in un set di dati BigQuery per fungere da livello non elaborato a scopo dimostrativo.
- Crea pipeline Dataform per l'elaborazione dei dati di esempio tramite i livelli di dati di Cortex Framework.
- Crea il repository e l'area di lavoro Dataform, quindi sincronizza gli artefatti compilati con il repository.
*(Facoltativo) Se il service account è stato fornito con
--service_account, crea la pianificazione del flusso di lavoro e attiva l'esecuzione iniziale del flusso di lavoro Dataform.
Per il deployment demo con i valori predefiniti, esegui il seguente comando:
uv run cortex-demo --project_id=PROJECT_ID --sap_version s4
Per il deployment demo con un account di servizio, esegui il seguente comando:
uv run cortex-demo --project_id=PROJECT_ID \
--service_account="cortex-dataform@PROJECT_ID.iam.gserviceaccount.com" \
--create_workflow_configs
Verifica
Al termine del deployment:
Apri Dataform per esaminare il nuovo codice creato nel repository:
- Repository Dataform creato:
cortex-framework-demo - All'interno del repository Dataform, l'area di lavoro di sviluppo:
demo - Codice compilato e sincronizzato (puoi visualizzare il grafico facendo clic su
Compiled graph).
- Repository Dataform creato:
Esecuzione manuale delle azioni Dataform:
- Apri l'area di lavoro Dataform "demo" dal repository cortex-framework-demo nella console Dataform Google Cloud .
- Fai clic su Avvia esecuzione.
- Fai clic su Esegui azioni.
- Fai clic su Tutte le azioni.
Fai clic su Avvia esecuzione.
Monitora l'esecuzione corretta di tutte le azioni nel repository Dataform utilizzando la scheda Log di esecuzione del flusso di lavoro.
Esecuzione delle azioni Dataform pianificate
Si applica solo se hai utilizzato i parametri --service_account e --create_workflow_configs durante il deployment:
- Apri il repository Dataform cortex-framework-demo nella Google Cloud console Dataform.
- Fai clic su Release e pianificazione.
Nella sezione Configurazioni del flusso di lavoro , fai clic sul menu con tre puntini per l'azione che ti interessa eseguire e fai clic su Avvia ora.
Monitora l'esecuzione corretta di tutte le azioni nel repository Dataform utilizzando la scheda Log di esecuzione del flusso di lavoro.
Vai alla console BigQuery e fai clic su
Datasetsper visualizzare i set di dati appena creati e verificare lo schema e i dati. Set di dati creati:cortex_demo_sap_s4_raw: questo set di dati contiene i dati non elaborati del sistema di origine (in questo esempio, SAP S/4HANA).cortex_demo_sap_s4_data_foundation: questo set di dati rappresenta il livello di base dei dati, in cui i dati non elaborati del livello non elaborato vengono elaborati con CDC.cortex_demo_data_product: questo set di dati contiene i prodotti di dati demo: visualizzazioni o tabelle perfezionate e ad alte prestazioni progettate per il consumo da parte degli utenti finali.cortex_demo_samples: questo set di dati contiene i dati demo per i prodotti di dati di consumo di esempio.
Eseguire la pulizia delle risorse di deployment demo
Dopo un deployment demo riuscito, puoi rimuovere le risorse utilizzate Google Cloud per evitare addebiti continui. Il seguente script elimina i set di dati BigQuery creati, l'area di lavoro Dataform e il repository Dataform:
#!/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."
Passaggi successivi
Segui il deployment di produzione per scoprire come eseguire il deployment di Google Cloud Cortex Framework negli ambienti di produzione.
Leggi l'articolo sull'integrazione del sistema di origine per scoprire come connettere i tuoi sistemi di produzione.