Questo tutorial mostra come eseguire il deployment di un'applicazione containerizzata utilizzando un servizio Cloud Run autenticato che riceve eventi tramite Eventarc.
Specificando i filtri per un trigger Eventarc, puoi configurare il routing degli eventi, inclusi l'origine e la destinazione dell'evento. In questo caso, un aggiornamento a un bucket Cloud Storage attiva l'evento e una richiesta viene inviata al tuo servizio Cloud Run sotto forma di richiesta HTTP.
Crea un repository standard Artifact Registry
Crea un repository standard di Artifact Registry per archiviare l'immagine container:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Sostituisci REPOSITORY
con un nome univoco per il repository.
Crea un bucket Cloud Storage
Crea un bucket Cloud Storage da utilizzare come origine evento:
gcloud storage buckets create gs://PROJECT_ID-bucket/ --location=us-central1
Dopo aver creato l'origine evento, puoi eseguire il deployment del servizio di ricezione di eventi su Cloud Run.
Esegui il deployment di un ricevitore di eventi in Cloud Run
Esegui il deployment di un servizio Cloud Run che riceve e registra gli eventi.
Clona il repository GitHub:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
In alternativa, puoi scaricare il campione come file ZIP ed estrarlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
In alternativa, puoi scaricare il campione come file ZIP ed estrarlo.
Vai
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
In alternativa, puoi scaricare il campione come file ZIP ed estrarlo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
In alternativa, puoi scaricare il campione come file ZIP ed estrarlo.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
In alternativa, puoi scaricare il campione come file ZIP ed estrarlo.
Passa alla directory che contiene il codice campione di Cloud Run:
Node.js
cd nodejs-docs-samples/eventarc/audit-storage/
Python
cd python-docs-samples/eventarc/audit-storage/
Vai
cd golang-samples/eventarc/audit_storage/
Java
cd java-docs-samples/eventarc/audit-storage/
C#
cd dotnet-docs-samples/eventarc/audit-storage/
Crea il container per il servizio Cloud Run:
export PROJECT_ID=$(gcloud config get-value project) export SERVICE_NAME=helloworld-events gcloud builds submit --tag $REGION-docker.pkg.dev/${PROJECT_ID}/REPOSITORY/${SERVICE_NAME}:v1
Esegui il deployment dell'immagine container su Cloud Run:
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/${PROJECT_ID}/REPOSITORY/${SERVICE_NAME}:v1
Al prompt Allow public access to helloworld-events (y/N)?, rispondi
n
per "No".
Quando viene visualizzato l'URL del servizio Cloud Run, il deployment è completato.
Crea un trigger Eventarc
Il trigger Eventarc invia eventi dal bucket Cloud Storage al servizio Cloud Run helloworld-events
. Il servizio richiede l'autenticazione e l'evento deve essere attivato da un chiamante che dispone di un account di servizio con i ruoli e le autorizzazioni IAM richiesti per utilizzare la risorsa.
Crea un trigger che filtra gli eventi Cloud Storage:
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=PROJECT_ID-bucket" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Viene creato un trigger denominato
helloworld-events
.Tieni presente che quando crei un trigger Eventarc per la prima volta in un progetto Google Cloud , potrebbe verificarsi un ritardo nel provisioning dell'agente di servizio Eventarc. Questo problema può essere risolto di solito provando a creare di nuovo il trigger. Per saperne di più, vedi Errori di autorizzazione negata.
Verifica che il trigger sia stato creato correttamente. Tieni presente che, anche se il trigger viene creato immediatamente, potrebbero essere necessari fino a due minuti prima che sia completamente funzionale.
gcloud eventarc triggers list --location=${REGION}
L'output dovrebbe essere simile al seguente:
NAME: helloworld-events TYPE: google.cloud.storage.object.v1.finalized DESTINATION: Cloud Run service: helloworld-events ACTIVE: Yes
Generare e visualizzare un evento
Carica un file di testo nel bucket Cloud Storage per generare un evento che viene indirizzato al servizio Cloud Run. Il servizio Cloud Run registra l'evento nei log del servizio.
Per generare un evento:
Carica un file di testo su Cloud Storage:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://PROJECT_ID-bucket/random.txt
Il caricamento genera un evento e il servizio Cloud Run registra il messaggio dell'evento.
Per visualizzare la voce di log:
Filtra le voci di log e restituisci l'output in formato JSON:
gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
Cerca una voce di log simile alla seguente:
"textPayload": "Detected change in Cloud Storage bucket: objects/random.txt"
La visualizzazione dei log potrebbe richiedere alcuni istanti. Se non li vedi immediatamente, ricontrolla dopo un minuto.