Questo documento descrive uno script che consente l'elaborazione degli eventi di integrità del servizio per ogni progetto in un'organizzazione o cartella. Concede al principal Identity and Access Management (IAM) specificato il ruolo Visualizzatore Service Health, che 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 secondari:
resourcemanager.projects.list
. - Autorizzazione per aggiungere IAM
(ruolo Visualizzatore stato del servizio) per l'entità IAM
specificata:
resourcemanager.projects.setIamPolicy
. - Autorizzazione per attivare i servizi Google Cloud :
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 per i 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. Tutti i progetti secondari avranno abilitato Personalized Service Health.(facoltativo)
IAM_PRINCIPAL
: un identificatore per l'entità o il membro a cui verrà concesso il ruolo Visualizzatore stato del servizio. In genere ha la seguente forma: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:
- Decidi il 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 si trovi in un file denominato
activateProjects.sh
:Per attivare tutti i progetti nell'ID organizzazione
345678901
e concedere all'utenteuser:test-user@gmail.com
il ruolo diroles/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 ruolo diroles/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 di integrità del servizio.