Questo documento descrive uno script che attiva ogni progetto in un'organizzazione o in una cartella per l'elaborazione degli eventi relativi allo stato del servizio. Concede al principale Identity and Access Management (IAM) specificato il ruolo Visualizzatore di Service Health, che ti consente di visualizzare gli eventi e abilitare l'API Service Health.
Prima di iniziare
Make sure that billing is enabled for your Google Cloud project.
Assicurati di disporre delle seguenti autorizzazioni per eseguire lo script:
- Autorizzazione per elencare i progetti nel progetto principale:
resourcemanager.projects.list
. - Autorizzazione per aggiungere IAM
(ruolo Visualizzatore stato servizio) per il principale IAM specificato:
resourcemanager.projects.setIamPolicy
. - Autorizzazione per attivare i Google Cloud servizi:
serviceusage.services.enable
.
Un modo per ottenere queste autorizzazioni è chiedere a un amministratore di concederti un ruolo appropriato. Cerca le autorizzazioni nella sezione Ruoli predefiniti della pagina di riferimento dei ruoli di base e predefiniti di IAM. Vengono visualizzati i ruoli che dispongono delle autorizzazioni.
Esegui lo script
Lo script accetta i seguenti parametri:
PARENT_ID
: ID del progetto principale. L'ID può essere per un'organizzazione o una cartella. Per tutti i progetti del progetto principale verrà attivata la funzionalità Stato del servizio personalizzato.(Facoltativo)
IAM_PRINCIPAL
: un identificatore per l'entità o il membro a cui verrà concesso il ruolo Visualizzatore stato del servizio. Di solito ha il seguente formato:PRINCIPAL_TYPE:ID
. Esempio:user:my-user@example.com
.Per l'elenco completo dei valori supportati, consulta la sezione Concedere un singolo ruolo della pagina Gestire l'accesso a progetti, cartelle e organizzazioni.
Per eseguire lo script:
- Scegli API VERSION:
v1
ov1beta
. Incolla il seguente script in un file:
#!/bin/bash PARENT_ID="$1" PRINCIPAL="$2" FAILED_PROJECTS=() for project in $(gcloud projects list --filter="parent.id: ${PARENT_ID}" --format="value(projectId)") do echo "Enabling PSH API for project $project" gcloud services enable servicehealth.googleapis.com --project="${project}" echo "Finished enabling PSH API for project $project" if [[ -n "$PRINCIPAL" ]]; then echo "Adding $PRINCIPAL as service health viewer to project $project" gcloud projects add-iam-policy-binding "${project}" --member "${PRINCIPAL}" --role roles/servicehealth.viewer echo "Finished adding $PRINCIPAL as service health viewer to project $project" sleep 5 else echo "PRINCIPAL not provided, will not grant service health viewer role. Please provide a PRINCIPAL value in order to view events." fi echo "Attempt to list events from Personalized Service Health for project $project" RESPONSE="$(curl -w "%{http_code}" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://servicehealth.googleapis.com/API VERSION/projects/"${project}"/locations/global/events)" HTTP_CODE=$(tail -n1 <<< "$RESPONSE") if [[ "$HTTP_CODE" -ne 200 ]] ; then echo "Failed to list events for project $project" echo "Response: $RESPONSE" FAILED_PROJECTS+=($project) else echo "Successfully listed events for project $project" fi done if [[ "${#FAILED_PROJECTS[@]}" -ne 0 ]]; then echo "Listing projects that failed to activate" for project in "${FAILED_PROJECTS[@]}" do echo "$project" done fi
Esegui lo script. Gli esempi seguenti presuppongono che lo script sia in un file denominato
activateProjects.sh
:Per attivare tutti i progetti nell'ID organizzazione
345678901
e assegnare all'utenteuser:test-user@gmail.com
il ruoloroles/servicehealth.viewer
, esegui:bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Per attivare tutti i progetti nell'ID organizzazione
345678901
e concedere all'account di servizioserviceAccount:test-proj1@example.domain.com
il ruoloroles/servicehealth.viewer
, esegui:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
Personalized Service Health impiegherà fino a 24 ore per iniziare a elaborare gli eventi relativi allo stato del servizio.