Mengaktifkan Personalized Service Health untuk semua project di organisasi atau folder

Dokumen ini menjelaskan skrip yang memungkinkan setiap project di organisasi atau folder untuk pemrosesan peristiwa kesehatan layanan. Tindakan ini memberikan peran Service Health Viewer yang ditentukan oleh akun utama Identity and Access Management (IAM), yang memungkinkan Anda melihat peristiwa dan mengaktifkan Service Health API.

Sebelum memulai

Pastikan Anda memiliki izin berikut:

  • Izin untuk mencantumkan project di bagian induk: resourcemanager.projects.list.
  • Izin untuk menambahkan IAM (peran Service Health Viewer) untuk akun utama IAM yang ditentukan: resourcemanager.projects.setIamPolicy.
  • Izin untuk mengaktifkan layanan Google Cloud : serviceusage.services.enable.

Untuk memeriksa peran yang dapat Anda gunakan untuk menjalankan skrip:

  1. Buka bagian Peran bawaan di halaman referensi peran dasar dan bawaan IAM.
  2. Telusuri izin yang diinginkan. Peran yang memiliki izin akan muncul.

Jalankan skrip:

Skrip ini menerima parameter berikut:

  • PARENT_ID: ID induk ke project. ID dapat berupa ID organisasi atau folder. Semua project dalam induk akan mengaktifkan Kesehatan Layanan yang Dipersonalisasi.
  • (opsional) IAM_PRINCIPAL: ID untuk akun utama, atau anggota, yang akan diberi peran Service Health Viewer. ID ini biasanya memiliki bentuk berikut: PRINCIPAL_TYPE:ID. Contoh:user:my-user@example.com.

    Untuk mengetahui daftar lengkap nilai yang didukung, lihat bagian Memberikan satu peran di halaman Mengelola akses ke project, folder, dan organisasi.

Untuk menjalankan skrip:

  1. Tentukan API VERSION: v1 atau v1beta.
  2. Tempel skrip berikut ke 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
    
  3. Jalankan skrip. Contoh berikut mengasumsikan bahwa skrip berada dalam file bernama activateProjects.sh:

    • Untuk mengaktifkan semua project di ID organisasi 1111111111 dan memberikan peranroles/servicehealth.viewer kepada penggunauser:test-user@gmail.com, jalankan:

      bash activateProjects.sh 1111111111 "user:test-user@gmail.com"
      
    • Untuk mengaktifkan semua project di ID organisasi 1111111111 dan memberikan peran roles/servicehealth.viewer kepada akun layanan serviceAccount:test-proj1@example.domain.com, jalankan:

      bash activateProjects.sh 1111111111 "serviceAccount:test-proj1@example.domain.com"
      

Personalized Service Health akan memerlukan waktu hingga 24 jam untuk mulai memproses peristiwa kondisi layanan.