조직 또는 폴더의 모든 프로젝트에 대해 맞춤 서비스 상태 사용 설정

이 문서에서는 서비스 상태 이벤트 처리를 위해 조직 또는 폴더의 각 프로젝트를 사용 설정하는 스크립트를 설명합니다. 지정된 Identity and Access Management (IAM) 주 구성원에게 이벤트를 보고 Service Health API를 사용 설정할 수 있는 Service Health Viewer 역할을 부여합니다.

시작하기 전에

Make sure that billing is enabled for your Google Cloud project.

스크립트를 실행할 수 있는 다음 권한이 있는지 확인합니다.

  • 상위 요소 아래에 프로젝트를 나열할 수 있는 권한: resourcemanager.projects.list
  • 지정된 IAM 주 구성원(resourcemanager.projects.setIamPolicy)에 IAM(서비스 상태 보기 역할)을 추가할 권한입니다.
  • Google Cloud 서비스를 사용 설정할 권한: serviceusage.services.enable

이러한 권한을 얻는 한 가지 방법은 관리자에게 적절한 역할을 부여해 달라고 요청하는 것입니다. IAM 기본 및 사전 정의된 역할 참조 페이지의 사전 정의된 역할 섹션에서 권한을 검색합니다. 권한이 있는 역할이 표시됩니다.

스크립트 실행

스크립트는 다음 매개변수를 허용합니다.

  • PARENT_ID: 프로젝트의 상위 요소 ID입니다. ID는 조직 또는 폴더의 ID일 수 있습니다. 상위 프로젝트의 모든 프로젝트에 맞춤 서비스 상태가 사용 설정됩니다.
  • (선택사항) IAM_PRINCIPAL: 서비스 상태 보기 권한이 부여될 주 구성원 또는 구성원의 식별자입니다. 일반적으로 PRINCIPAL_TYPE:ID 형식입니다. 예:user:my-user@example.com.

    지원되는 값의 전체 목록은 프로젝트, 폴더, 조직에 대한 액세스 관리 페이지의 단일 역할 부여 섹션을 참고하세요.

스크립트를 실행하려면 다음 안내를 따르세요.

  1. API VERSION(v1 또는 v1beta)를 결정합니다.
  2. 다음 스크립트를 파일에 붙여넣습니다.

    #!/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. 스크립트를 실행합니다. 다음 예에서는 스크립트가 activateProjects.sh라는 파일에 있다고 가정합니다.

    • 조직 ID 345678901의 모든 프로젝트를 활성화하고 사용자 user:test-user@gmail.com에게 roles/servicehealth.viewer 역할을 부여하려면 다음을 실행합니다.

      bash activateProjects.sh 345678901 "user:test-user@gmail.com"
      
    • 조직 ID 345678901의 모든 프로젝트를 활성화하고 서비스 계정 serviceAccount:test-proj1@example.domain.comroles/servicehealth.viewer 역할을 부여하려면 다음을 실행합니다.

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

Personalized Service Health에서 서비스 상태 이벤트 처리를 시작하는 데 최대 24시간이 걸립니다.