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

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

시작하기 전에

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

다음과 같은 권한이 있는지 확인합니다.

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

스크립트를 실행하는 데 사용할 수 있는 역할을 확인하려면 다음 단계를 따르세요.

  1. IAM 기본 및 사전 정의된 역할 참조 페이지의 사전 정의된 역할 섹션으로 이동합니다.
  2. 원하는 권한을 검색합니다. 권한이 있는 역할이 표시됩니다.

스크립트 실행

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

  • 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 1111111111의 모든 프로젝트를 활성화하고 사용자 user:test-user@gmail.com에게 roles/servicehealth.viewer 역할을 부여하려면 다음을 실행합니다.

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

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

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