Personalized Service Health für alle Projekte in einer Organisation oder einem Ordner aktivieren

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:

  1. Legen Sie die API VERSION fest: v1 oder v1beta.
  2. 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
    
  3. 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 Nutzer user:test-user@gmail.com die Rolle roles/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 Dienstkonto serviceAccount:test-proj1@example.domain.com die Rolle roles/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.