In diesem Dokument wird ein Script beschrieben, mit dem jedes Projekt in einer Organisation oder einem Ordner für die Verarbeitung von Dienststatusereignissen aktiviert wird. Dem angegebenen IAM-Hauptkonto (Identity and Access Management) wird die Rolle „Betrachter für den Dienststatus“ zugewiesen. Damit können Sie Ereignisse ansehen und die Service Health API aktivieren.
Hinweise
Make sure that billing is enabled for your Google Cloud project.
Sie benötigen die folgenden Berechtigungen, um das Script auszuführen:
- Berechtigung, Projekte unter dem übergeordneten Element aufzulisten:
resourcemanager.projects.list
. - Berechtigung zum Hinzufügen einer IAM-Rolle (Rolle „Betrachter der Dienstbereitschaft“) für den angegebenen IAM-Subjekt:
resourcemanager.projects.setIamPolicy
. - Berechtigung zum Aktivieren von Google Cloud Diensten:
serviceusage.services.enable
Sie können einen Administrator bitten, Ihnen eine entsprechende Rolle zu gewähren. Suchen Sie auf der Seite „Referenz zu einfachen und vordefinierten IAM-Rollen“ im Abschnitt Vordefinierte Rollen nach den Berechtigungen. Die Rollen mit den Berechtigungen werden angezeigt.
Skript ausführen
Das Script akzeptiert die folgenden Parameter:
PARENT_ID
: ID des übergeordneten Projekts. Die ID kann für eine Organisation oder einen Ordner sein. Für alle Projekte unter dem übergeordneten Projekt ist die personalisierte Dienstgesundheit aktiviert.Optional:
IAM_PRINCIPAL
: Eine Kennung für das Hauptkonto oder Mitglied, dem die Rolle „Betrachter der Dienstbereitschaft“ gewährt 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 Script 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:Wenn Sie alle Projekte mit der Organisations-ID
345678901
aktivieren und dem Nutzeruser:test-user@gmail.com
die Rolleroles/servicehealth.viewer
zuweisen möchten, führen Sie Folgendes aus:bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Wenn Sie alle Projekte mit der Organisations-ID
345678901
aktivieren und dem DienstkontoserviceAccount:test-proj1@example.domain.com
die Rolleroles/servicehealth.viewer
zuweisen möchten, führen Sie Folgendes aus:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
Es kann bis zu 24 Stunden dauern, bis in Personalized Service Health Dienststatusereignisse verarbeitet werden.