Este documento descreve um script que permite o processamento de eventos de estado de funcionamento do serviço para cada projeto numa organização ou pasta. Concede ao principal de gestão de identidade e de acesso (IAM) especificado a função de leitor do Service Health, que lhe permite ver eventos e ativar a API Service Health.
Antes de começar
Verify that billing is enabled for your Google Cloud project.
Certifique-se de que tem as seguintes autorizações para executar o script:
- Autorização para listar projetos na organização principal:
resourcemanager.projects.list
. - Autorização para adicionar o IAM (função de visualizador do estado do serviço) para o principal do IAM especificado:
resourcemanager.projects.setIamPolicy
. - Autorização para ativar os Google Cloud serviços:
serviceusage.services.enable
.
Uma forma de obter estas autorizações é pedir a um administrador que lhe conceda uma função adequada. Pesquise as autorizações na secção Funções predefinidas da página de referência de funções básicas e predefinidas do IAM. São apresentadas as funções que têm as autorizações.
Execute o script
O script aceita os seguintes parâmetros:
PARENT_ID
: ID do elemento principal dos projetos. O ID pode ser de uma organização ou de uma pasta. Todos os projetos na organização principal têm o estado de saúde do serviço personalizado ativado.(opcional)
IAM_PRINCIPAL
: um identificador para o principal ou o membro ao qual vai ser concedida a função de leitor do estado de funcionamento do serviço. Normalmente, tem o seguinte formato:PRINCIPAL_TYPE:ID
. Exemplo:user:my-user@example.com
.Para ver a lista completa de valores suportados, consulte a secção Conceda uma única função da página Faça a gestão do acesso a projetos, pastas e organizações.
Para executar o script:
- Decida sobre a API VERSION:
v1
ouv1beta
. Cole o seguinte script num ficheiro:
#!/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
Execute o script. Os exemplos seguintes pressupõem que o script está num ficheiro com o nome
activateProjects.sh
:Para ativar todos os projetos no ID da organização
345678901
e conceder ao utilizadoruser:test-user@gmail.com
a função deroles/servicehealth.viewer
: execute o seguinte:bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Para ativar todos os projetos no ID da organização
345678901
e conceder à conta de serviçoserviceAccount:test-proj1@example.domain.com
a função deroles/servicehealth.viewer
, execute o seguinte comando:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
O Personalized Service Health demora até 24 horas a começar a processar eventos de estado de funcionamento do serviço.