Crea y administra carpetas

Las carpetas son nodos en la jerarquía de recursos de Cloud Platform. Una carpeta puede contener proyectos, otras carpetas o una combinación de ambos. Los recursos de la organización pueden usar carpetas para agrupar proyectos del nodo de recursos de la organización en una jerarquía. Por ejemplo, el recurso de tu organización puede contener varios departamentos, cada uno con su propio conjunto de recursos de Google Cloud. Las carpetas te permiten agrupar estos recursos por departamento. Estas carpetas se usan para agrupar los recursos que comparten políticas de IAM. Mientras que una carpeta puede contener varias carpetas o recursos, una carpeta o recurso determinados pueden tener solo un superior.

En el siguiente diagrama, el recurso de organización, “Empresa”, tiene carpetas que representan dos departamentos, “Departamento X” y “Departamento Y”, y una carpeta, “Infraestructura compartida”, para los elementos que pueden ser comunes a ambos departamentos. En el “Departamento Y” (Dept Y), se organizaron en dos equipos y, dentro de las carpetas de los equipos, se organizaron por productos. La carpeta del “Producto 1” contiene, además, tres proyectos, cada uno con los recursos necesarios para el proyecto. Esto les proporciona un alto grado de flexibilidad en la asignación de políticas de IAM y de la organización en el nivel de detalle correcto.

Ejemplo de la jerarquía de carpetas

Puedes usar las políticas de IAM a nivel de la carpeta para controlar el acceso a los recursos que contiene la carpeta. Por ejemplo, si a un usuario se le otorga la función Administrador de instancias de procesamiento en una carpeta, ese usuario tiene la función Administrador de instancias de Compute en todos los proyectos de la carpeta.

Antes de comenzar

La funcionalidad de la carpeta solo está disponible para los clientes Google Workspace y Cloud Identity que tengan un recurso de la organización. Para obtener más información sobre la adquisición de recursos de una organización, consulta la página cómo crear y administrar organizaciones.

Si exploras cómo usar mejor las carpetas, te recomendamos que sigas estos pasos:

  1. Revisa el control de acceso de las carpetas que usan IAM. El tema describe cómo puedes controlar quién tiene acceso a las carpetas y los recursos que contienen.
  2. Obtén información sobre cómo configurar permisos de carpeta. Las carpetas admiten varias funciones de IAM. Si deseas configurar en general los permisos para que los usuarios puedan ver la estructura de sus proyectos, otorga a todo el dominio las funciones de Visualizador de la organización y Visualizador de carpetas a nivel de los recursos de la organización. Para restringir la visibilidad de las ramas de la jerarquía de carpetas, otorga la función Visualizador de carpetas en la carpeta o carpetas que deseas que vean los usuarios.
  3. Crea carpetas. A medida que planificas cómo organizar tus recursos de Cloud, te recomendamos que comiences con una sola carpeta como zona de pruebas en la que puedas experimentar qué jerarquía tiene más sentido para tu recurso de organización. Piensa en las carpetas en términos de los límites de aislamiento entre los recursos y los puntos de vinculación de las políticas de acceso y configuración. Puedes optar por crear carpetas que contengan los recursos que pertenecen a distintos departamentos y asignar las funciones de administrador en las carpetas para delegar privilegios de administrador. Las carpetas también se pueden usar para agrupar recursos que pertenezcan a aplicaciones o entornos diferentes, como el desarrollo, la producción o la prueba. Usa carpetas anidadas para modelar estos diferentes casos.

Un caso común es crear carpetas que, a su vez, contengan carpetas o proyectos adicionales, como se muestra en la imagen anterior. Esta estructura se denomina jerarquía de carpetas. Cuando creas una jerarquía de carpetas, ten en cuenta lo siguiente:

  • Puedes anidar carpetas de hasta 10 (diez) niveles de profundidad.
  • Una carpeta superior no puede contener más de 300 carpetas. Esto se refiere solo a carpetas secundarias directas. Esas carpetas secundarias pueden, a su vez, contener carpetas o proyectos adicionales.
  • Los nombres de visualización de la carpeta deben ser únicos dentro del mismo nivel de la jerarquía.

Establece permisos para administrar carpetas

Para acceder a las carpetas y administrarlas, debes asignarles funciones de IAM específicas de las carpetas a grupos de usuarios específicos. Para obtener más información sobre estas funciones, consulta el control de acceso a las carpetas que usan IAM. También te recomendamos que revises nuestras prácticas recomendadas a fin de ayudarte a identificar la configuración óptima para los permisos de tu carpeta.

En un principio, solo el administrador de la organización puede asignar la función Administrador de carpetas para el recurso de la organización. Las cuentas posteriores a las que se les asigna esta función pueden otorgárselo a otras cuentas.

Para configurar los permisos de la carpeta, sigue estos pasos:

Console

  1. En la consola de Google Cloud, abre la página Administrar recursos.

    Abrir la página Administrar recursos

  2. Haz clic en la lista desplegable Organización en la esquina superior izquierda y, luego, selecciona tu organización en la lista de recursos.

  3. En el campo Agregar miembros, ingresa tu dirección de correo electrónico.

  4. En el cuadro de lista desplegable Seleccionar una función, ve a la categoría Administrador de recursos y selecciona la función Administrador de carpetas.

  5. Haz clic en Agregar para otorgar la función nueva.

gcloud

Las carpetas se pueden crear de manera programática con Google Cloud CLI. Para ello, ejecuta el siguiente comando:

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member=user:USER_ID \
    --role=roles/resourcemanager.folderAdmin

API

El JSON de la solicitud luce así:

request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [   "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'

La solicitud curl luce así:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/ORGANIZATION_NAME:setIamPolicy

Reemplaza ORGANIZATION_NAME por el nombre de la organización cuya política de IAM se está estableciendo, por ejemplo, organizations/123.

Crea carpetas

Para crear carpetas, debes tener la función Administrador de carpetas o Creador de carpetas a nivel del superior. Por ejemplo, para crear carpetas a nivel de la organización, debes tener una de estas funciones a nivel de la organización.

Como parte de la creación de una carpeta, debes asignarle un nombre. Los nombres de las carpetas deben cumplir los siguientes requisitos:

  • El nombre puede contener letras, dígitos, espacios, guiones y guiones bajos.
  • El nombre visible de la carpeta debe comenzar y terminar con una letra o un dígito.
  • El nombre debe tener entre 3 y 30 caracteres.
  • El nombre debe ser distinto al de todas las demás carpetas que comparten el superior.

Para crear una carpeta, haz lo siguiente:

Console

Las carpetas se pueden crear en la IU a través de la sección “Administra proyectos y carpetas”.

  1. Ve a la página Administrar recursos en la consola de Google Cloud:

    Abrir la página Administrar recursos

  2. Asegúrate de que el nombre del recurso de tu organización esté seleccionado en la lista desplegable de la organización, en la parte superior de la página.

  3. Haz clic en Crear carpeta y selecciona una de las siguientes opciones:

    • Carpeta estándar: Es un recurso de carpeta estándar.
    • Carpeta de Assured Workloads: Es una carpeta de Assured Workloads, que proporciona controles regulatorios, regionales o soberanos adicionales para los recursos de Google Cloud. Si seleccionas esta opción, accederás a Assured Workloads para crear una carpeta.
  4. En el cuadro Nombre de la carpeta, ingresa el nombre de la carpeta nueva.

  5. En Destino, haz clic en Explorar y, luego, selecciona el recurso o la carpeta de la organización en la que deseas crear la carpeta nueva.

    1. Haz clic en Crear.

gcloud

Las carpetas se pueden crear de manera programática con Google Cloud CLI.

Para crear una carpeta en el recurso de la organización con la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando.

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --organization=[ORGANIZATION_ID]

Para crear una carpeta cuya carpeta superior sea otra, sigue estos pasos:

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --folder=[FOLDER_ID]

Aquí:

  • [DISPLAY_NAME] es el nombre visible de la carpeta. Dos carpetas con la misma carpeta superior no pueden compartir un nombre visible. El nombre visible debe comenzar y terminar con una letra o un dígito, puede contener letras, dígitos, espacios, guiones y guiones bajos, y no puede tener más de 30 caracteres.
  • [ORGANIZATION_ID] es el ID del recurso superior de la organización si este es un recurso de la organización.
  • [FOLDER_ID] es el ID de la carpeta superior, si el superior es una carpeta.

API

Se pueden crear carpetas con una solicitud a la API.

El JSON de la solicitud luce así:

request_json= '{
  display_name: DISPLAY_NAME,
  parent: ORGANIZATION_NAME
}'

La solicitud de curl para crear carpetas luce así:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders

Aquí:

  • [DISPLAY_NAME] es el nombre visible de la carpeta nueva, por ejemplo, “Mi carpeta genial”.
  • [ORGANIZATION_NAME] es el nombre del recurso de la organización en el que creas la carpeta, por ejemplo, organizations/123.

La respuesta para crear carpetas luce así:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  }
}

La solicitud de curl para obtener operaciones luce así:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fc.123456789

La respuesta para obtener operaciones luce así:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

Agrega etiquetas durante la creación de carpetas

Las etiquetas proporcionan una forma de crear anotaciones para los recursos. Puedes agregar etiquetas cuando creas las carpetas. Para ello, debes otorgar el rol Usuario de etiquetas. Para obtener más información sobre los permisos que contiene este rol, consulta Administra etiquetas en los recursos. Solo puedes agregar el espacio de nombres para los pares clave-valor de la etiqueta de una de las siguientes maneras:

gcloud

Para agregar etiquetas durante la creación de carpetas, ejecuta el siguiente comando:

  gcloud resource-manager folders create \
  --display-name=DISPLAY_NAME \
  --organization=ORGANIZATION_ID
  --tags=KEY_VALUE_PAIRS

Reemplaza lo siguiente:

  • DISPLAY_NAME es el nombre visible de la carpeta.
  • ORGANIZATION_ID es el identificador único del recurso de la organización superior.
  • KEY_VALUE_PAIRS es una lista separada por comas de pares clave-valor que puedes asignar a tu recurso. Un ejemplo de pares clave-valor separados por comas es 123/environment=production, 456/create=testresource.

API

El siguiente fragmento es una solicitud JSON que crea una carpeta y le agrega etiquetas.

  POST https://cloudresourcemanager.googleapis.com/v3/projects/
  Authorization: *************
  Content-Type: application/json

  {
    "display_name": "our-folder-456",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
    }
  }

Configura el acceso a las carpetas

Para configurar el acceso a las carpetas, debes tener la función Administrador de carpetas de IAM o Administrador de carpetas a nivel del superior.

Console

  1. En la consola de Google Cloud, abre la página Administrar recursos.

    Abrir la página de administración de recursos

  2. Haz clic en la lista desplegable Organización en la esquina superior izquierda y, luego, selecciona el recurso de tu organización.

  3. Selecciona la casilla de verificación junto al proyecto para el que deseas cambiar los permisos.

    1. En el panel de información del lado derecho, en Permisos, ingresa las direcciones de correo electrónico de los miembros que deseas agregar.

    2. En la lista desplegable Seleccionar una función, selecciona la función que deseas otorgar a esos miembros.

    3. Haz clic en Agregar. Aparecerá una notificación para confirmar la adición o actualización del nuevo rol de los miembros.

gcloud

Puedes configurar el acceso a las carpetas de manera programática con Google Cloud CLI o la API.

gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderEditor
gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderViewer

O, como alternativa:

gcloud resource-manager folders \
  set-iam-policy [FOLDER_ID] [POLICY_FILE]

Aquí:

  • [FOLDER_ID] es el ID de la carpeta nueva.
  • [POLICY_FILE] es la ruta a un archivo de la política de la carpeta.

API

El método setIamPolicy establece la política de control de acceso en una carpeta y reemplaza cualquier política existente. El campo resource debe ser el nombre del recurso de la carpeta, por ejemplo, folders/1234.

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

La solicitud curl luce así:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]:setIamPolicy

Aquí:

  • [FOLDER_NAME] es el nombre de la carpeta de la que configuras la política de IAM, por ejemplo, carpetas/123.

Crea un proyecto en una carpeta

Para crear un proyecto en una carpeta, debes tener la función creador de proyectos (roles/resourcemanager.projectCreator) en la carpeta. Esta función se puede heredar de una carpeta superior.

Console

  1. En la consola de Google Cloud, abre la página Administrar recursos.

    Abrir la consola de Google Cloud

  2. Ve a la página Administrar recursos.
  3. Selecciona tu recurso de organización en el menú desplegable Organización en la parte superior izquierda de la página.
  4. Haz clic en Crear proyecto.
  5. Ingresa un Nombre de proyecto (Project name).
  6. En el cuadro Destino, haz clic en Explorar para seleccionar la carpeta en la que deseas crear el proyecto.

  7. Haz clic en Crear.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

Reemplaza lo siguiente:

  • PROJECT_ID es el ID del proyecto que se creará.
  • FOLDER_ID es el ID de la carpeta en la que se debe crear el proyecto.

API

El JSON de la solicitud luce así:

   request_json= '{
      name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
   }'

La solicitud curl luce así:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/projects

Reemplaza lo siguiente:

  • PROJECT_ID es el identificador único del proyecto que se crea. Por ejemplo, my-awesome-proj-123
  • DISPLAY_NAME es el nombre visible del proyecto que se crea.
  • PARENT_ID es el identificador único del elemento superior en el que se crea. Por ejemplo, 123
  • PARENT_TYPE es el tipo de elemento superior, como folder o organization.

No incluyas información sensible en el nombre de tu carpeta ni en otros nombres de recursos. Cualquier referencia a la carpeta o a los recursos relacionados expone el nombre de la carpeta y el nombre del recurso.

Mueve un proyecto a una carpeta

Debes considerar con cuidado cualquier implicación de la política antes de mover un proyecto a una carpeta o fuera de ella. Las políticas de Identity and Access Management que definas a nivel de proyecto se moverán con el proyecto, pero las políticas heredadas de un recurso superior no lo harán.

Cuando muevas un proyecto, se moverán con él todas las políticas de la organización o de Identity and Access Management que estén vinculadas directamente. Sin embargo, un proyecto de tu jerarquía de recursos también se ve afectado por las políticas que hereda de recursos superiores. Si un proyecto hereda una función de IAM que otorga permiso a los usuarios para usar un servicio en particular, los usuarios no tendrán acceso a ese servicio en el destino, a menos que también hereden el permiso en el destino.

Por ejemplo, considera que una cuenta de servicio tiene la función de creador de objetos de almacenamiento vinculada a un usuario en la carpeta A. La cuenta de servicio tiene permisos para subir datos a Cloud Storage en cualquier proyecto de la Carpeta A. Si moviste uno de estos proyectos a la carpeta B, que no tiene los mismos permisos heredados, la cuenta de servicio de ese proyecto pierde la capacidad de subir datos, lo que provoca una interrupción del servicio.

Estas mismas consideraciones se aplican si las políticas de la organización se definen en las carpetas de origen y destino. Al igual que las políticas de IAM, las políticas de la organización se heredan. Por lo tanto, debes asegurarte de que las políticas de la organización sean coherentes entre las carpetas de origen y de destino.

Para obtener más información sobre las políticas de la organización, consulta Introducción al servicio de las políticas de la organización.

Para trasladar un proyecto, necesitas la función de IAM de Migrador de proyectos (roles/resourcemanager.projectMover) en la carpeta de origen y en la de destino. Si el recurso no está en una carpeta, necesitas esta función en el recurso de la organización.

Estos roles te otorgan los siguientes permisos necesarios:

  • resourcemanager.projects.update en el proyecto
  • Si el recurso está en una carpeta: resourcemanager.projects.move en la carpeta de origen y el destino
  • Si el recurso no está en una carpeta: resourcemanager.projects.move en el recurso de la organización

También puedes obtener estos permisos con funciones personalizadas, o bien otras funciones predefinidas.

Console

Para mover un proyecto, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. Selecciona tu organización en el menú desplegable Organización en la parte superior izquierda de la página.

  3. Haz clic en la fila de tu proyecto para seleccionarlo de la lista de recursos. Ten en cuenta que no debes hacer clic en el nombre del proyecto, que te lleva a la página de IAM del proyecto.

  4. Haz clic en el menú de opciones (los puntos suspensivos verticales) de la fila y haz clic en Mover.

  5. Haz clic en Explorar para seleccionar la carpeta a la que deseas mover el proyecto.

  6. Haz clic en Mover.

gcloud

Para mover un proyecto, ejecuta el comando gcloud beta projects move:

gcloud beta projects move PROJECT_ID \
--DESTINATION_TYPE DESTINATION_ID

Aquí:

  • PROJECT_ID es el ID o el número del proyecto que deseas mover.

  • DESTINATION_TYPE es organization o folder.

  • DESTINATION_ID es el ID de la carpeta o el recurso de la organización a la que deseas mover el proyecto. Solo puedes especificar un destino.

API

Puedes usar el método projects.move de la versión 3 para mover un proyecto.

Solicitud:

POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
  "destinationParent": DESTINATION_PARENT
}

Aquí:

  • PROJECT_NAME es el nombre del proyecto que deseas actualizar. Por ejemplo, projects/415104041262

  • DESTINATION_PARENT es el nuevo recurso o carpeta de la organización superior dentro del cual deseas mover el proyecto. Por ejemplo: organizations/12345678901

Si se ejecuta correctamente, la solicitud mostrará una Operación que se puede usar para hacer un seguimiento del traslado del proyecto.

Mueve una carpeta a otra

A fin de mover una carpeta a otra, debes tener el permiso resourcemanager.folders.move para las carpetas de origen y de destino.

Console

El proceso de mover carpetas a otras carpetas en Console es similar al de mover proyectos.

  1. En la consola de Google Cloud, abre la página Administrar recursos.

    Abrir la consola de Google Cloud

  2. Selecciona tu recurso de organización en el menú desplegable Organización en la parte superior izquierda de la página.
  3. Haz clic en la fila de tu carpeta para seleccionarla de la lista de proyectos y carpetas.
  4. Haz clic en el menú de opciones (los puntos suspensivos verticales) de la fila y haz clic en Mover.
  5. Haz clic en Explorar para seleccionar la carpeta a la que deseas moverla.
  6. Haz clic en Mover.

gcloud

Para mover una carpeta dentro del recurso de la organización, ejecuta el siguiente comando en Google Cloud CLI:

gcloud resource-manager folders move [FOLDER_ID] \
  --organization=[PARENT_ID]

Para mover una carpeta dentro de otra carpeta, ejecuta el siguiente comando:

gcloud resource-manager folders move [FOLDER_ID] \
  --folder=[PARENT_ID]

Reemplaza lo siguiente:

  • [FOLDER_ID] es el ID de la carpeta que deseas mover.
  • [PARENT_ID] es el ID del recurso de la organización o el ID de la carpeta del recurso o la carpeta de la organización superior.

API

El JSON de la solicitud luce así:

request_json= '{
   destinationParent: "folders/[DESTINATION_FOLDER_ID]"
}'

La solicitud de curl para mover carpetas:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/[DISPLAY_NAME]:move

Reemplaza lo siguiente:

  • [DESTINATION_FOLDER_ID] es el ID de la carpeta dentro de la que moverás otra carpeta, por ejemplo, 98765.
  • [DISPLAY_NAME] es el nombre visible de la carpeta que mueves, por ejemplo, “Mi carpeta genial”.

La respuesta para mover carpetas luce así:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "MOVE"
  }
}

La solicitud de curl para obtener operaciones luce así:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890

La respuesta para obtener operaciones luce así:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "MOVE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "folders/98765",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-20T00:54:44.295Z"
  }
}

Ve o enumera carpetas y proyectos

Para ver o enumerar carpetas, debes tener las funciones Visualizador de organizaciones y Visualizador de carpetas.

Para ver o enumerar carpetas y proyectos, sigue estos pasos:

Console

  1. En la consola de Google Cloud, abre la página Administrar recursos.

    Abrir la página Administrar recursos

  2. En el selector de proyectos en la parte superior de la página, selecciona el recurso de tu organización. Debes crear las carpetas para que aparezcan en esta lista.

  3. Selecciona cualquier fila del árbol para realizar operaciones específicas de la carpeta o el proyecto.

  4. Ingresa el nombre o el ID de la carpeta o del proyecto en la búsqueda para filtrar la lista.

gcloud

Para obtener detalles de una carpeta, usa el comando resource-manager folders describe.

gcloud resource-manager folders describe FOLDER_ID

Reemplaza FOLDER_ID por el ID de la carpeta que deseas ver.

Para mostrar las carpetas secundarias de un recurso de la organización, usa el comando resource-manager folders list.

gcloud resource-manager folders list \
  --organization ORGANIZATION_ID

Reemplaza ORGANIZATION_ID por el ID del recurso de la organización para el que deseas ver una lista de las carpetas secundarias.

Para mostrar las carpetas secundarias de un recurso de carpeta, usa el comando resource-manager folders list.

gcloud resource-manager folders list \
  --folder FOLDER_ID

Reemplaza FOLDER_ID por el ID del recurso de carpeta para el que deseas ver una lista de las carpetas secundarias.

Para enumerar los proyectos dentro de un recurso o una carpeta de organización o carpeta, usa el comando projects list con el argumento filter.

gcloud projects list \
  --filter=" parent.id: 'RESOURCE_ID' "

Reemplaza RESOURCE_ID por el ID del recurso de la organización o la carpeta para el que deseas ver una lista de los proyectos secundarios.

API

La solicitud de curl para obtener carpetas:

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]

Reemplaza FOLDER_NAME por el nombre de la carpeta, como folders/123.

La solicitud de curl para enumerar carpetas:

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/folders?parent=[PARENT_NAME]

Reemplaza PARENT_NAME por el nombre del recurso superior en el que estás creando la carpeta, como organizations/123 o folders/123.

Usa Google Cloud CLI

Los comandos para interactuar con la API de las carpetas mediante la herramienta de línea de comandos de gcloud están disponibles en el grupo de comandos gcloud resource-manager folders.

Crear

Para crear una carpeta nueva, usa gcloud resource-manager folders create con marcas que configuren el nombre de la carpeta y el ID del recurso o la carpeta de la organización en la que deseas crearla.

gcloud resource-manager folders create \
  --display-name="Super Fantastic Folder" \
  --organization=2518

Created Folder 245321.

Ver

Para ver una carpeta, usa gcloud resource-manager folders describe con el ID de la carpeta que deseas ver.

gcloud resource-manager folders describe 245321
name: folders/245321
parent: organizations/2518
display_name: Super Fantastic Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <timestamp info …>

Enumera

Para enumerar las carpetas dentro de una carpeta, usa gcloud resource-manager folders list y pasa el ID de la carpeta en la marca --folder. También puede enumerar las carpetas de nivel superior dentro de un recurso de organización mediante la marca --organization.

gcloud resource-manager folders list --folder 245321
<table output showing the folders underneath the folder with the specified ID>

gcloud resource-manager folders list --organization 2518
<table output showing folders in this Organization but not in any folder>

Para incluir las carpetas para las que se solicita borrar en la lista, agrega la marca --show-deleted

gcloud beta resource-manager folders list --folder 245321 --show-deleted
<table output showing all the folders including the delete requested ones underneath the folder with the specified ID>

Puedes enumerar proyectos con el comando gcloud projects list y pasar la carpeta superior o el ID de recurso de la organización en la marca --filter.

gcloud projects list --filter=" parent.id: '245321' "
<table output showing the projects underneath the resource with the specified ID>

Para obtener más información sobre cómo los permisos y los filtros interactúan con los comandos de la lista, consulta la página Enumera todos los recursos en tu jerarquía.

Para buscar carpetas que coincidan con la consulta especificada, usa gcloud alpha resource-manager folders search y pasa la condición en la marca --query. El alcance de la búsqueda son todas las carpetas para las que el usuario tiene permiso de lectura.

gcloud alpha resource-manager folders search --query="name:vij*"
<table output showing the folders with names starting from vij eg. vijeta, vijay-folder>

gcloud alpha resource-manager folders search --query="state:DELETE_REQUESTED"
<table output showing folders for which delete has been requested>

Con el comando gcloud folders search, se pueden mostrar todas las carpetas en las que el usuario tiene permiso de lectura.

gcloud folders search
<table output showing all viewable folders>

Actualizar

Las carpetas se pueden actualizar con el comando gcloud resource-manager folders update. En la actualidad, solo se puede actualizar el campo display_name de una carpeta.

gcloud resource-manager folders update \
  --display-name="Mega Incredible Folder" 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

Borrar

Las carpetas se pueden borrar y recuperar desde la línea de comandos. Un usuario debe contar con la función de administrador o editor de carpetas si desea tener permiso para borrar una carpeta. Solo se puede borrar una carpeta si está vacía.

gcloud resource-manager folders delete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: DELETE_REQUESTED
create_time: <timestamp info …>
update_time: <recent timestamp info …>

gcloud resource-manager folders undelete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

Mueve proyectos

Los proyectos se pueden crear en carpetas y mover a carpetas con los comandos gcloud projects create y gcloud projects move existentes. Las carpetas también se pueden mover con gcloud resource-manager folders move.

gcloud projects create --folder=245321 fancy-folder-project
project_id: fancy-folder-project
project_number: 905283
parent:
  type: "folder"
  id: 245321
other fields …

gcloud projects move --folder=245321 soon-to-be-fancy-project
project_id: soon-to-be-fancy-project
project_number: 428714
parent:
  type: "folder"
  id: 245321
other fields …

Operaciones de larga duración

Algunas operaciones de carpetas, como la creación, pueden tomar mucho tiempo. Para facilitar la realización de varias tareas, algunos comandos de carpetas te permiten realizarlas de forma asíncrona. Estos comandos admiten una marca --async que habilite el comportamiento asíncrono, lo que hace que muestren una operación de larga duración de forma inmediata, en lugar de esperar a que la operación se complete. Puedes sondear esta operación con el comando gcloud beta resource-manager operations describe. En la actualidad, solo los comandos folders create y folders move permiten el uso asíncrono.

gcloud resource-manager folders create \
  --display-name="Awe-Inspiring Async Folder" \
  --organization=2518 \
  --async

name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: false

[wait for some time …]

gcloud beta resource-manager operations describe fc.8572
name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: true
response:
  name: folders/6428
  parent: organizations/2518
  display_name: Awe-Inspiring Async Folder
  lifecycle_state: ACTIVE
  create_time: <recent timestamp info …>
  update_time: <recent timestamp info …>