Habilita Personalized Service Health para todos los proyectos de una organización o carpeta
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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.
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 principal 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: Es el 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 o v1beta.
Pega la siguiente secuencia de comandos en un archivo:
#!/bin/bashPARENT_ID="$1"PRINCIPAL="$2"FAILED_PROJECTS=()forprojectin$(gcloudprojectslist--filter="parent.id: ${PARENT_ID}"--format="value(projectId)")doecho"Enabling PSH API for project $project"gcloudservicesenableservicehealth.googleapis.com--project="${project}"echo"Finished enabling PSH API for project $project"if[[-n"$PRINCIPAL"]];thenecho"Adding $PRINCIPAL as service health viewer to project $project"gcloudprojectsadd-iam-policy-binding"${project}"--member"${PRINCIPAL}"--roleroles/servicehealth.viewer
echo"Finished adding $PRINCIPAL as service health viewer to project $project"sleep5elseecho"PRINCIPAL not provided, will not grant service health viewer role. Please provide a PRINCIPAL value in order to view events."fiecho"Attempt to list events from Personalized Service Health for project $project"RESPONSE="$(curl-w"%{http_code}"-H"Authorization: Bearer $(gcloudauthprint-access-token)"-H"Content-Type: application/json"https://servicehealth.googleapis.com/APIVERSION/projects/"${project}"/locations/global/events)"HTTP_CODE=$(tail-n1 <<< "$RESPONSE")if[["$HTTP_CODE"-ne200]];thenecho"Failed to list events for project $project"echo"Response: $RESPONSE"FAILED_PROJECTS+=($project)elseecho"Successfully listed events for project $project"fidoneif[["${#FAILED_PROJECTS[@]}"-ne0]];thenecho"Listing projects that failed to activate"forprojectin"${FAILED_PROJECTS[@]}"doecho"$project"donefi
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:
Para activar todos los proyectos en el ID de organización 345678901 y otorgar a la cuenta de servicio serviceAccount:test-proj1@example.domain.com el rol de roles/servicehealth.viewer, ejecuta el siguiente comando:
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["# Enable Personalized Service Health for all projects in an organization or folder\n\nThis document describes a script that enables each project in an organization\nor folder for service health events processing. It grants the\n[Identity and Access Management (IAM) principal](/iam/docs/overview#how_cloud_iam_works)\nspecified the Service Health Viewer role, which lets you view events and\nenable the Service Health API.\n\nBefore you begin\n----------------\n\n\n[Verify that billing is enabled for your Google Cloud project](/billing/docs/how-to/verify-billing-enabled#confirm_billing_is_enabled_on_a_project).\n\nEnsure that you have the following permissions to run the script:\n\n- Permission to list projects under the parent: `resourcemanager.projects.list`.\n- Permission to add IAM (Service Health Viewer role) for the specified IAM principal: `resourcemanager.projects.setIamPolicy`.\n- Permission to enable Google Cloud services: `serviceusage.services.enable`.\n\nOne way to gain these permissions is to ask an administrator to grant you an\nappropriate role. Search for the permissions in the [Predefined roles](/iam/docs/understanding-roles#predefined)\nsection of the IAM basic and predefined roles reference page.\nThe roles that have the permissions appear.\n\nRun the script\n--------------\n\nThe script accepts the following parameters:\n\n- `PARENT_ID`: ID of the parent to projects. The ID can be for an organization or a folder. All projects under the parent will have Personalized Service Health enabled.\n- (optional) `IAM_PRINCIPAL`: An identifier for the principal, or member, which\n will be granted the Service Health Viewer role. It usually has the following\n form: `PRINCIPAL_TYPE:ID`. Example:`user:my-user@example.com`.\n\n For the full list of supported values, see the\n [Grant a single role](/iam/docs/granting-changing-revoking-access#grant-single-role)\n section of the Manage access to projects, folders, and organizations page.\n\nTo run the script:\n\n1. Decide on the \u003cvar class=\"readonly\" scope=\"API_VERSION\" translate=\"no\"\u003eAPI VERSION\u003c/var\u003e: `v1` or `v1beta`.\n2. Paste the following script to a file:\n\n #!/bin/bash\n\n PARENT_ID=\"$1\" PRINCIPAL=\"$2\"\n\n FAILED_PROJECTS=()\n\n for project in $(gcloud projects list --filter=\"parent.id: ${PARENT_ID}\" --format=\"value(projectId)\")\n do\n echo \"Enabling PSH API for project $project\"\n gcloud services enable servicehealth.googleapis.com --project=\"${project}\"\n echo \"Finished enabling PSH API for project $project\"\n\n if [[ -n \"$PRINCIPAL\" ]]; then\n echo \"Adding $PRINCIPAL as service health viewer to project $project\"\n gcloud projects add-iam-policy-binding \"${project}\" --member \"${PRINCIPAL}\" --role roles/servicehealth.viewer\n echo \"Finished adding $PRINCIPAL as service health viewer to project $project\"\n sleep 5\n else echo \"PRINCIPAL not provided, will not grant service health viewer role. Please provide a PRINCIPAL value in order to view events.\"\n fi\n\n echo \"Attempt to list events from Personalized Service Health for project $project\"\n RESPONSE=\"$(curl -w \"%{http_code}\" -H \"Authorization: Bearer $(gcloud auth print-access-token)\" -H \"Content-Type: application/json\" https://servicehealth.googleapis.com/\u003cvar scope=\"API_VERSION\" translate=\"no\"\u003eAPI\u003cspan class=\"devsite-syntax-w\"\u003e \u003c/span\u003eVERSION\u003c/var\u003e/projects/\"${project}\"/locations/global/events)\" HTTP_CODE=$(tail -n1 \u003c\u003c\u003c \"$RESPONSE\")\n\n if [[ \"$HTTP_CODE\" -ne 200 ]] ; then\n echo \"Failed to list events for project $project\"\n echo \"Response: $RESPONSE\"\n FAILED_PROJECTS+=($project)\n else\n echo \"Successfully listed events for project $project\"\n fi\n done\n\n if [[ \"${#FAILED_PROJECTS[@]}\" -ne 0 ]]; then\n echo \"Listing projects that failed to activate\"\n for project in \"${FAILED_PROJECTS[@]}\"\n do\n echo \"$project\"\n done\n fi\n\n3. Run the script. The following examples assume the script is in a file named\n `activateProjects.sh`:\n\n - To activate all projects in organization ID `345678901` and grant\n user`user:test-user@gmail.com` the role of`roles/servicehealth.viewer`,\n run:\n\n bash activateProjects.sh 345678901 \"user:test-user@gmail.com\"\n\n - To activate all projects in organization ID `345678901` and grant\n service account `serviceAccount:test-proj1@example.domain.com` the role\n of`roles/servicehealth.viewer`, run:\n\n bash activateProjects.sh 345678901 \"serviceAccount:test-proj1@example.domain.com\"\n\nPersonalized Service Health will take up to 24 hours to start processing service health\nevents."]]