Crear y gestionar carpetas

Las carpetas son nodos de la jerarquía de recursos de Cloud Platform. Una carpeta puede contener proyectos, otras carpetas o una combinación de ambos. Los recursos de organización pueden usar carpetas para agrupar proyectos en el nodo de recursos de 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 Google Cloud recursos. Las carpetas te permiten agrupar estos recursos por departamento. Las carpetas se usan para agrupar recursos que comparten políticas de permitir o denegar comunes. Aunque una carpeta puede contener varias carpetas o recursos, una carpeta o un recurso concretos solo pueden tener un elemento superior.

En el siguiente diagrama, el recurso de organización "Company" tiene carpetas que representan dos departamentos ("Dept X" y "Dept Y") y una carpeta ("Shared Infrastructure") para los elementos que pueden ser comunes a ambos departamentos. En "Departamento Y", se han organizado en dos equipos y, dentro de las carpetas de los equipos, se han organizado por productos. La carpeta "Producto 1" contiene tres proyectos, cada uno con los recursos necesarios. De esta forma, pueden asignar políticas de permitir, denegar u organización con un alto grado de flexibilidad y con la granularidad adecuada.

Ejemplo de jerarquía de carpetas

Puedes usar políticas de permitir y denegar a nivel de carpeta para controlar el acceso a los recursos que contiene la carpeta. Por ejemplo, si a un usuario se le asigna el rol Administrador de instancias de Compute en una carpeta, tendrá ese rol en todos los proyectos de la carpeta.

Antes de empezar

La función de carpetas solo está disponible para los clientes de Google Workspace y Cloud Identity que tengan un recurso de organización. Para obtener más información sobre cómo adquirir un recurso de organización, consulta el artículo Crear y gestionar organizaciones.

Si quieres saber cómo usar las carpetas de la mejor forma posible, te recomendamos que hagas lo siguiente:

  1. Consulta el artículo Control de acceso a carpetas con gestión de identidades y accesos. En este tema se describe cómo puedes controlar quién tiene acceso a las carpetas y a los recursos que contienen.
  2. Consulta cómo definir permisos de carpeta. Las carpetas admiten varios roles de gestión de identidades y accesos. Si quieres configurar los permisos de forma general para que los usuarios puedan ver la estructura de sus proyectos, asigna a todo el dominio los roles Lector de la organización y Lector de carpetas a nivel de recurso de organización. Para restringir la visibilidad a las ramas de tu jerarquía de carpetas, asigna el rol Lector de carpetas a la carpeta o carpetas que quieras que vean los usuarios.
  3. Crea carpetas. Cuando planifiques cómo organizar tus recursos de Cloud, te recomendamos que empieces con una sola carpeta como entorno de pruebas en el que puedas experimentar con la jerarquía que mejor se adapte a tu recurso de organización. Las carpetas son límites de aislamiento entre recursos y puntos de montaje para las políticas de acceso y configuración. Puedes crear carpetas para incluir recursos que pertenezcan a diferentes departamentos y asignar roles 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 a diferentes entornos, como desarrollo, producción o pruebas. Usa carpetas anidadas para modelar estas situaciones.

Lo habitual es crear carpetas que, a su vez, contengan otras carpetas o proyectos, como se muestra en la imagen de arriba. Esta estructura se denomina jerarquía de carpetas. Cuando crees una jerarquía de carpetas, ten en cuenta lo siguiente:

  • Puedes anidar carpetas hasta 10 (diez) niveles.
  • Una carpeta superior no puede contener más de 300 carpetas. Esto solo se refiere a las carpetas secundarias directas. A su vez, esas subcarpetas pueden contener otras carpetas o proyectos.
  • Los nombres visibles de las carpetas deben ser únicos en el mismo nivel de la jerarquía.

Configurar permisos para gestionar carpetas

Para acceder a las carpetas y gestionarlas, asigna roles de gestión de identidades y accesos específicos de las carpetas a grupos de usuarios concretos. Para obtener más información sobre estos roles, consulta el artículo Control de acceso a carpetas con gestión de identidades y accesos. También te recomendamos que consultes nuestras prácticas recomendadas para identificar la configuración óptima de los permisos de tus carpetas.

Para gestionar carpetas de todo el recurso de tu organización, debes tener el rol Administrador de carpetas. Este rol concede al usuario permiso para crear, editar, eliminar, mover y cambiar los permisos de gestión de identidades y accesos de las carpetas, así como permiso para mover proyectos entre carpetas.

Inicialmente, solo el administrador de la organización puede asignar el rol Administrador de carpetas al recurso de la organización. Las cuentas a las que se asigne este rol posteriormente podrán concederlo a otras cuentas.

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

consola

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

    Ir a Gestionar recursos

  2. Si el panel de información no está abierto, haz clic en Mostrar panel de información.
  3. En la tabla Recursos, despliega la organización que contiene la carpeta.
  4. En la lista de recursos de la organización, selecciona la carpeta que quieras gestionar.
  5. En el panel de información, haz clic en Añadir principal.
  6. En el campo Añadir principales, introduce la dirección de correo a la que quieras conceder permisos.
  7. En el menú Selecciona un rol, elige la categoría Administrador de recursos y, a continuación, el rol que quieras asignar, como Administrador de carpetas.
  8. Haz clic en Guardar para asignar el nuevo rol.

gcloud

Para asignar el rol Administrador de carpetas a una principal mediante la CLI de Google Cloud, ejecuta el siguiente comando:

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

API

JSON de la solicitud:

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", ] } , ] } }'

Solicitud curl:

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

Sustituye ORGANIZATION_NAME por el nombre de la organización cuya política de permiso se va a definir. Por ejemplo, organizations/123.

Crear carpetas

Para crear carpetas, debe tener el rol Administrador de carpetas o Creador de carpetas a nivel de elemento superior. Por ejemplo, para crear carpetas a nivel de organización, debes tener uno de estos roles a nivel de organización.

Para crear una carpeta, debes asignarle un nombre. Los nombres de las carpetas deben cumplir los siguientes requisitos:

  • El nombre puede contener letras, números, espacios, guiones y guiones bajos.
  • El nombre visible de la carpeta debe empezar y terminar con una letra o un dígito.
  • El nombre debe tener entre 3 y 30 caracteres.
  • El nombre debe ser distinto de todos los demás nombres de carpetas que compartan la misma carpeta principal.

Para crear una carpeta, sigue estos pasos:

Consola

Las carpetas se pueden crear en la interfaz de usuario mediante la sección "Gestionar proyectos y carpetas".

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

    Abrir la página Gestionar recursos

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

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

  4. En el cuadro Nombre de la carpeta, escribe el nombre de la carpeta nueva.

  5. En Destino, haz clic en Explorar y, a continuación, selecciona la organización, el recurso o la carpeta en la que quieras crear la carpeta.

    1. Haz clic en Crear.

gcloud

Las carpetas se pueden crear mediante programación con la CLI de Google Cloud.

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

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

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

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

Donde:

  • [DISPLAY_NAME] es el nombre visible de la carpeta. No puede haber dos carpetas con el mismo elemento superior que compartan un nombre visible. El nombre visible debe empezar y terminar por 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 de organización principal si el elemento superior es un recurso de organización.
  • [FOLDER_ID] es el ID de la carpeta principal, si el elemento superior es una carpeta.

API

Las carpetas se pueden crear con una solicitud a la API.

JSON de la solicitud:

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

Solicitud curl para crear una carpeta:

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

Donde:

  • [DISPLAY_NAME] es el nombre visible de la carpeta nueva. Por ejemplo, "Mi carpeta genial".
  • [ORGANIZATION_NAME] es el nombre del recurso de organización en el que vas a crear la carpeta, por ejemplo, organizations/123.

Respuesta de Create Folder:

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

Solicitud curl de Get Operation:

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

Respuesta de la operación Get:

{
  "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"
  }
}

Añadir etiquetas al crear carpetas

Las etiquetas permiten crear anotaciones para los recursos. Puedes añadir etiquetas al crear carpetas. Para ello, debes conceder el rol Usuario de etiquetas. Para obtener más información sobre los permisos que incluye este rol, consulta Gestionar etiquetas en recursos. Solo puedes añadir el espacio de nombres de los pares clave-valor de la etiqueta de una de las siguientes formas:

gcloud

Para añadir etiquetas al crear una carpeta, ejecuta el siguiente comando:

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

Haz los cambios siguientes:

  • DISPLAY_NAME es el nombre visible de la carpeta.
  • ORGANIZATION_ID es el identificador único del recurso de la organización principal.
  • KEY_VALUE_PAIRS es una lista de pares clave-valor separados por comas 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 añade 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"
    }
  }

Configurar el acceso a carpetas

Para configurar el acceso a las carpetas, debes tener el rol Administrador de gestión de identidades y accesos de carpetas o Administrador de carpetas a nivel de elemento superior.

Consola

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

    Abrir la página Gestionar recursos

  2. En la lista desplegable Organización de la parte superior izquierda, selecciona el recurso de tu organización.

  3. Seleccione la casilla situada junto al proyecto cuyos permisos quiera cambiar.

    1. En el panel de información de la derecha, en Permisos, introduce las direcciones de correo de los miembros que quieras añadir.

    2. En la lista desplegable Selecciona un rol, elige el rol que quieras asignar a esos miembros.

    3. Haz clic en Añadir. Aparecerá una notificación para confirmar que se ha añadido o actualizado el nuevo rol de los miembros.

gcloud

Puedes configurar el acceso a las carpetas de forma programática mediante la CLI de Google Cloud 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

Alternativa:

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

Donde:

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

API

El método setIamPolicy define la política de control de acceso de una carpeta y sustituye cualquier política que ya exista. 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",
         ]
       }
     ]
   }
 }'

Solicitud curl:

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

Donde:

  • [FOLDER_NAME] es el nombre de la carpeta cuya política de IAM se está definiendo, por ejemplo, folders/123.

Crear un proyecto en una carpeta

Para crear un proyecto en una carpeta, debes tener el rol de creador de proyectos (roles/resourcemanager.projectCreator) en la carpeta. Este rol puede heredarse de una carpeta superior.

consola

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

    Abrir Google Cloud consola

  2. Ve a la página Gestionar recursos.
  3. Selecciona el recurso de tu organización en el menú desplegable Organización, situado en la parte superior izquierda de la página.
  4. Haz clic en Crear proyecto.
  5. Escribe un nombre de proyecto.
  6. En el cuadro Destino, haga clic en Examinar para seleccionar la carpeta en la que quiere crear el proyecto.

  7. Haz clic en Crear.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

Haz los cambios siguientes:

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

API

JSON de la solicitud:

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

Solicitud curl:

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

Haz los cambios siguientes:

  • PROJECT_ID es el identificador único del proyecto que se está creando. Por ejemplo, my-awesome-proj-123.
  • DISPLAY_NAME es el nombre visible del proyecto que se va a crear.
  • PARENT_ID es el identificador único del elemento superior que se está creando. Por ejemplo, 123.
  • PARENT_TYPE es el tipo del elemento superior, como folder o organization.

No incluyas información sensible en el nombre de la 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.

Mover un proyecto a una carpeta

Debes tener en cuenta las implicaciones de las políticas antes de mover un proyecto a una carpeta o de sacarlo de ella. Las políticas que definas a nivel de proyecto se moverán con el proyecto, pero las políticas heredadas de un recurso superior no se moverán.

Cuando mueves un proyecto, las políticas de gestión de identidades y accesos o las políticas de la organización que estén asociadas directamente se moverán con él. Sin embargo, un proyecto de tu jerarquía de recursos también se ve afectado por las políticas que hereda de los recursos superiores. Si un proyecto hereda un rol de gestión de identidades y accesos que proporciona a los usuarios permiso para usar un servicio concreto, 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, supongamos que una cuenta de servicio tiene el rol Creador de objetos de almacenamiento asignado a un usuario en la carpeta A. La cuenta de servicio tiene permiso para subir datos a Cloud Storage en cualquier proyecto de la carpeta A. Si has movido uno de estos proyectos a la carpeta B, que no tiene los mismos permisos heredados, la cuenta de servicio de ese proyecto perderá la capacidad de subir datos, lo que provocará 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 de destino. Al igual que las políticas de gestión de identidades y accesos, las políticas de organización se heredan. Por lo tanto, debe asegurarse de que las políticas de su organización sean coherentes entre las carpetas de origen y de destino.

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

Para mover un proyecto, necesitas el rol de IAM Trasladador de proyectos (roles/resourcemanager.projectMover) en la carpeta de origen y en la de destino. Si el recurso no está en una carpeta, necesitas este rol en el recurso de organización.

Estos roles te conceden los siguientes permisos obligatorios:

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

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Consola

Para mover un proyecto, sigue estos pasos:

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

    Ir a Gestionar recursos

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

  3. Haz clic en la fila de tu proyecto para seleccionarlo en la lista de recursos. Ten en cuenta que no debes hacer clic en el nombre del proyecto, ya que te llevará a la página de gestión de identidades y accesos del proyecto.

  4. Haz clic en el menú de opciones (los puntos suspensivos verticales) de la fila y, a continuación, en Mover.

  5. Haz clic en Buscar para seleccionar la carpeta a la que quieras 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

Donde:

  • PROJECT_ID es el ID o el número del proyecto que quieres transferir.

  • DESTINATION_TYPE puede ser organization o folder.

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

API

Puedes usar el método v3 projects.move para mover un proyecto.

Solicitud:

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

Donde:

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

  • DESTINATION_PARENT es el nuevo recurso de organización o carpeta superior al que quieres transferir el proyecto. Por ejemplo: organizations/12345678901

Si la solicitud se realiza correctamente, devolverá una Operation que se puede usar para monitorizar el movimiento del proyecto.

Mover una carpeta a otra carpeta

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

consola

El proceso para mover carpetas a otras carpetas en la consola es similar al de mover proyectos.

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

    Abrir Google Cloud consola

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

gcloud

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

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

Para mover una carpeta a otra carpeta:

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

Haz los cambios siguientes:

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

API

JSON de la solicitud:

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

Solicitud curl de Move Folder:

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

Haz los cambios siguientes:

  • [DESTINATION_FOLDER_ID] es el ID de la carpeta en la que vas a mover otra carpeta, por ejemplo, 98765.
  • [DISPLAY_NAME] es el nombre visible de la carpeta que se va a mover. Por ejemplo, "Mi carpeta genial".

Respuesta de Move Folder:

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

Solicitud curl de Get Operation:

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

Respuesta de la operación Get:

{
  "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"
  }
}

Ver o enumerar carpetas y proyectos

Para ver o enumerar carpetas, debes tener los roles Lector de la organización y Lector de carpetas.

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

consola

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

    Abrir la página Gestionar recursos

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

  3. Selecciona cualquier fila del árbol para realizar operaciones específicas de carpetas o proyectos.

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

gcloud

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

gcloud resource-manager folders describe FOLDER_ID

Sustituye FOLDER_ID por el ID de la carpeta que quieras ver.

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

gcloud resource-manager folders list \
  --organization ORGANIZATION_ID

Sustituye ORGANIZATION_ID por el ID del recurso de organización del que quieras ver una lista de carpetas secundarias.

Para enumerar las subcarpetas de un recurso de carpeta, usa el comando resource-manager folders list.

gcloud resource-manager folders list \
  --folder FOLDER_ID

Sustituye FOLDER_ID por el ID del recurso de carpeta del que quieras ver una lista de subcarpetas.

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

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

Sustituye RESOURCE_ID por el ID de la organización o la carpeta de la que quieras ver una lista de proyectos secundarios.

API

Solicitud curl para obtener carpetas:

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

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

Solicitud 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]

Sustituye PARENT_NAME por el nombre del recurso principal en el que vas a crear la carpeta, como organizations/123 o folders/123.

Usar Google Cloud CLI

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

Crear

Para crear una carpeta, usa gcloud resource-manager folders create con flags que definan el nombre de la carpeta y el ID del recurso de organización o de la carpeta en la que quieras 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 quieras 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 …>

Lista

Para enumerar las carpetas que hay en una carpeta, usa gcloud resource-manager folders list y pasa el ID de la carpeta en la marca --folder. También se pueden enumerar las carpetas de nivel superior de un recurso de organización con 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 en la lista las carpetas cuya eliminación se ha solicitado, añade 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. Para ello, debes indicar el ID del recurso de la carpeta o la organización principal 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 interactúan los permisos y los filtros con los comandos de lista, consulta Listar todos los recursos de 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 ámbito 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>

Todas las carpetas para las que el usuario tenga permiso de lectura se pueden mostrar con el comando gcloud folders search.

gcloud folders search
<table output showing all viewable folders>

Actualizar

Las carpetas se pueden actualizar con el comando gcloud resource-manager folders update. Actualmente, 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 …>

Eliminar

Las carpetas se pueden eliminar y restaurar desde la línea de comandos. Un usuario debe tener el rol Administrador de carpetas o Editor de carpetas para tener permiso para eliminar una carpeta. Solo puedes eliminar 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 …>

Trasladar proyecto

Los proyectos se pueden crear en carpetas y mover a carpetas mediante los comandos gcloud projects create y gcloud projects move. 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 con carpetas, como la creación de carpetas, pueden tardar mucho tiempo. Para que te resulte más fácil realizar varias tareas a la vez, algunos comandos de carpetas te permiten ejecutarlos de forma asíncrona. Estos comandos aceptan una marca --async para habilitar el comportamiento asíncrono, lo que hace que devuelvan una operación de larga duración inmediatamente en lugar de esperar a que se complete. Puedes sondear esta operación tú mismo con el comando gcloud beta resource-manager operations describe. Actualmente, 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 …>