In diesem Dokument wird ein Skript beschrieben, mit dem die Verarbeitung von Service Health-Ereignissen für jedes Projekt in einer Organisation oder einem Ordner aktiviert wird. Dem angegebenen IAM-Hauptkonto (Identity and Access Management) wird die Rolle „Service Health Viewer“ zugewiesen, mit der Sie Ereignisse ansehen und die Service Health API aktivieren können.
Hinweise
Make sure that billing is enabled for your Google Cloud project.
Prüfen Sie, ob Sie die folgenden Berechtigungen zum Ausführen des Skripts haben:
- Berechtigung zum Auflisten von Projekten unter dem übergeordneten Element:
resourcemanager.projects.list
. - Berechtigung zum Hinzufügen von IAM (Rolle „Service Health Viewer“) für den angegebenen IAM-Principal:
resourcemanager.projects.setIamPolicy
. - Berechtigung zum Aktivieren von Google Cloud -Diensten:
serviceusage.services.enable
.
Eine Möglichkeit, diese Berechtigungen zu erhalten, besteht darin, einen Administrator zu bitten, Ihnen eine entsprechende Rolle zuzuweisen. Suchen Sie auf der Referenzseite zu einfachen und vordefinierten IAM-Rollen im Abschnitt Vordefinierte Rollen nach den Berechtigungen. Die Rollen mit den Berechtigungen werden angezeigt.
Skript ausführen
Das Skript akzeptiert die folgenden Parameter:
PARENT_ID
: ID des übergeordneten Elements für Projekte. Die ID kann für eine Organisation oder einen Ordner sein. Für alle Projekte unter dem übergeordneten Projekt ist der personalisierte Dienststatus aktiviert.(optional)
IAM_PRINCIPAL
: Eine Kennung für das Hauptkonto oder Mitglied, dem die Rolle „Service Health Viewer“ zugewiesen wird. Sie hat normalerweise das folgende Format:PRINCIPAL_TYPE:ID
. Beispiel:user:my-user@example.com
.Eine vollständige Liste der unterstützten Werte finden Sie auf der Seite „Zugriff auf Projekte, Ordner und Organisationen verwalten“ im Abschnitt Eine Rolle zuweisen.
So führen Sie das Skript aus:
- Legen Sie die API VERSION fest:
v1
oderv1beta
. Fügen Sie das folgende Skript in eine Datei ein:
#!/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
Führen Sie das Skript aus. In den folgenden Beispielen wird davon ausgegangen, dass sich das Script in einer Datei namens
activateProjects.sh
befindet:Führen Sie Folgendes aus, um alle Projekte in der Organisations-ID
345678901
zu aktivieren und dem Nutzeruser:test-user@gmail.com
die Rolleroles/servicehealth.viewer
zuzuweisen:bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Führen Sie Folgendes aus, um alle Projekte in der Organisations-ID
345678901
zu aktivieren und dem DienstkontoserviceAccount:test-proj1@example.domain.com
die Rolleroles/servicehealth.viewer
zuzuweisen:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
Es kann bis zu 24 Stunden dauern, bis Personalized Service Health mit der Verarbeitung von Service Health-Ereignissen beginnt.