En este documento, se describe una secuencia de comandos que habilita cada proyecto de una organización o carpeta para el procesamiento de eventos de estado del servicio. Otorga al principal de Identity and Access Management (IAM) especificado el rol de visualizador del estado del servicio, que te permite ver eventos y habilitar la API de Service Health.
Antes de comenzar
Make sure that billing is enabled for your Google Cloud project.
Asegúrate de tener los siguientes permisos para ejecutar la secuencia de comandos:
- Permiso para enumerar proyectos secundarios:
resourcemanager.projects.list
. - Permiso para agregar IAM (rol de visualizador del estado del servicio) para la entidad de IAM especificada:
resourcemanager.projects.setIamPolicy
. - Permiso para habilitar los servicios de Google Cloud :
serviceusage.services.enable
.
Una forma de obtener estos permisos es pedirle a un administrador que te otorgue un rol adecuado. Busca los permisos en la sección Roles predefinidos de la página de referencia de roles básicos y predefinidos de IAM. Aparecerán los roles que tienen los permisos.
Ejecuta la secuencia de comandos:
La secuencia de comandos acepta los siguientes parámetros:
PARENT_ID
: ID del elemento principal de los proyectos. El ID puede ser de una organización o una carpeta. Todos los proyectos secundarios tendrán habilitado el estado del servicio personalizado.(opcional)
IAM_PRINCIPAL
: Es un identificador de la principal o el miembro al que se le otorgará el rol de visualizador del estado del servicio. Suele tener el siguiente formato:PRINCIPAL_TYPE:ID
. Ejemplo:user:my-user@example.com
.Para obtener la lista completa de los valores admitidos, consulta la sección Otorga un rol único de la página Administra el acceso a proyectos, carpetas y organizaciones.
Para ejecutar la secuencia de comandos, sigue estos pasos:
- Decide el valor de API VERSION:
v1
ov1beta
. Pega la siguiente secuencia de comandos en un archivo:
#!/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
Ejecuta la secuencia de comandos. En los siguientes ejemplos, se supone que la secuencia de comandos se encuentra en un archivo llamado
activateProjects.sh
:Para activar todos los proyectos en el ID de organización
345678901
y otorgar al usuariouser:test-user@gmail.com
el rol deroles/servicehealth.viewer
, ejecuta el siguiente comando:bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Para activar todos los proyectos en el ID de organización
345678901
y otorgar a la cuenta de servicioserviceAccount:test-proj1@example.domain.com
el rol deroles/servicehealth.viewer
, ejecuta el siguiente comando:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
Personalized Service Health tardará hasta 24 horas en comenzar a procesar los eventos de estado del servicio.