이 문서에서는 조직 또는 폴더의 각 프로젝트에서 서비스 상태 이벤트 처리를 사용 설정하는 스크립트를 설명합니다. 지정된 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.
스크립트를 실행하는 데 사용할 수 있는 역할을 확인하려면 다음 단계를 따르세요.
- IAM 기본 및 사전 정의된 역할 참조 페이지의 사전 정의된 역할 섹션으로 이동합니다.
- 원하는 권한을 검색합니다. 권한이 있는 역할이 표시됩니다.
스크립트 실행
스크립트는 다음 매개변수를 허용합니다.
PARENT_ID
: 프로젝트의 상위 요소 ID입니다. ID는 조직 또는 폴더의 ID일 수 있습니다. 상위 프로젝트의 모든 프로젝트에 맞춤 서비스 상태가 사용 설정됩니다.(선택사항)
IAM_PRINCIPAL
: 서비스 상태 보기 권한이 부여될 주 구성원 또는 구성원의 식별자입니다. 일반적으로PRINCIPAL_TYPE:ID
형식입니다. 예:user:my-user@example.com
.지원되는 값의 전체 목록은 프로젝트, 폴더, 조직에 대한 액세스 관리 페이지의 단일 역할 부여 섹션을 참고하세요.
스크립트를 실행하려면 다음 안내를 따르세요.
- API VERSION(
v1
또는v1beta
)를 결정합니다. 다음 스크립트를 파일에 붙여넣습니다.
#!/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
스크립트를 실행합니다. 다음 예에서는 스크립트가
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.com
에roles/servicehealth.viewer
역할을 부여하려면 다음을 실행합니다.bash activateProjects.sh 1111111111 "serviceAccount:test-proj1@example.domain.com"
Personalized Service Health에서 서비스 상태 이벤트 처리를 시작하는 데 최대 24시간이 걸립니다.