En este documento, se describen los requisitos para importar y exportar imágenes en Compute Engine.
Puedes compartir instancias de máquinas virtuales (VM), archivos de discos virtuales e imágenes de máquinas desde otros entornos de nube o desde tu entorno local mediante la importación y exportación de imágenes desde Cloud Storage. En la siguiente lista de tareas, se resumen los requisitos que debes cumplir antes de importar y exportar imágenes:
- Configura el acceso a un bucket de Cloud Storage
- Otorga las funciones necesarias a tu cuenta de usuario
- Otorga funciones de IAM a la cuenta de servicio de Cloud Build
- Otorga funciones necesarias a la cuenta de servicio de Compute Engine
Antes de comenzar
-
Configura la autenticación si aún no lo hiciste.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Si exportas una imagen, la herramienta de exportación sube la imagen al bucket de Cloud Storage.
Si importas una imagen, primero debes subirla al bucket de Cloud Storage. La herramienta de importación descarga el archivo del bucket de Cloud Storage a Compute Engine y, luego, crea una imagen en Compute Engine desde ese archivo de disco.
- Cuenta de usuario. La cuenta desde la que ejecutas los comandos de importación y exportación.
- Cuenta de servicio de Cloud Build. Una cuenta de servicio predeterminada de Cloud Build que se crea cuando la herramienta de importación o exportación habilita la API de Cloud Build.
- Cuenta de servicio de Compute Engine. Una cuenta de servicio de Compute Engine predeterminada o personalizada que se requiere para el flujo de trabajo de importación y exportación.
- Función de administrador de almacenamiento (
roles/storage.admin
) - Función de visualizador (
roles/viewer
) - Función de administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin
) - Función de editor de Cloud Build (
roles/cloudbuild.builds.editor
) Ve a la página IAM y administración de la organización o el proyecto.
Busca tu cuenta y haz clic en
Editar.En la lista Seleccionar una función, selecciona los siguientes roles:
- Cloud Storage > Administrador de almacenamiento
- Proyecto > Visualizador
- Administrador de recursos > Administrador de IAM del proyecto
- Cloud Build > Editor de Cloud Build
Guarda los cambios.
Otorga la función
roles/storage.admin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/storage.admin'
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud.MEMBER
: La cuenta que ejecuta los comandos de importación y exportación, por ejemplo,user:export-user@gmail.com
.
Otorga la función
roles/viewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
Otorga la función
roles/resourcemanager.projectIamAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
Otorga la función
roles/cloudbuild.builds.editor
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
Lee la política existente con el método
getIamPolicy
correspondiente del recurso. Para los proyectos, usa el métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Reemplaza
PROJECT_ID
por el ID del proyecto paramy-project-1
.Para otorgar las funciones necesarias a tu cuenta, edita la política con un editor de texto.
Por ejemplo, para otorgar la función necesaria a tu cuenta
user:export-user@gmail.com
, agrega la siguiente vinculación a la política:{ { "role":"roles/storage.admin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/viewer", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/resourcemanager.projectIamAdmin", "member":[ "user:export-user@gmail.com" ] } { "roles":"roles/cloudbuild.builds.editor", "member":[ "user:export-user@gmail.com" ] } }
Para escribir la política actualizada, usa el método
setIamPolicy
.Por ejemplo, para establecer una política a nivel de proyecto, usa el método
project.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de IAM actualizada del paso anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Función de creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) - Función de usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) - Función de administrador de Compute (
roles/compute.admin
)Para evitar otorgar la función de administrador de Compute, puedes crear una función personalizada con los siguientes permisos de IAM de Compute Engine y otórgala a la cuenta de servicio de Cloud Build:
- Rol Compute Network User (
roles/compute.networkUser
)Este rol solo es necesario cuando importas o exportas imágenes que usan VPC compartida.
En el proyecto de VPC compartida, otorga el rol Compute Network User a la cuenta de servicio de Cloud Build que se encuentra en el proyecto en el que importas o exportas imágenes.
Después de habilitar la API de Cloud Build, ve a la página IAM y administración de la organización o el proyecto.
Ubica la cuenta de servicio de Cloud Build y haz clic en
Editar.Si los roles requeridos no se enumeran, haz lo siguiente:
- Haz clic en Agregar otra función.
En la lista Seleccionar una función, selecciona los roles necesarios que deseas agregar:
- Cuenta de servicio > Creador de token de cuenta de servicio
- Cuenta de servicio > Usuario de cuenta de servicio
Compute Engine > Administrador de Compute.
Como alternativa, puedes seleccionar lel rol Personalizado. Consulta la sección Permisos necesarios para el personalizado de este documento.
Haz clic en Guardar para guardar los cambios.
Opcional: Si importas o exportas imágenes que usan VPC compartida, selecciona el rol Compute Network User en el proyecto de VPC compartida:
- En el selector de proyectos en la parte superior de la consola, selecciona el proyecto host de VPC compartida.
- En la página IAM y administración, haz clic en Otorgar acceso.
- En el campo Principales nuevas, ingresa la dirección de correo electrónico de la cuenta de servicio de Cloud Build:
PROJECT_NUMBER@cloudbuild.gserviceaccount.com'
ReemplazaPROJECT_NUMBER
por el número único del proyecto en el que importas o exportas imágenes. - En la lista Seleccionar un rol, selecciona Compute Engine > rol Compute Network User.
- Haz clic en Guardar para guardar los cambios.
Otorga la función
roles/compute.admin
a la cuenta de servicio de Cloud Build. Para evitar otorgar la funciónroles/compute.admin
, puedes crear una función personalizada con los permisos necesarios y, luego, otorgar esa función a la cuenta de servicio de Cloud Build. Consulta Permisos necesarios para la función personalizada antes en este documento.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.admin'
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud.PROJECT_NUMBER
: El número del proyecto de Google Cloud de tu proyecto.
Otorga la función
roles/iam.serviceAccountUser
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
Otorga la función
roles/iam.serviceAccountTokenCreator
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Opcional: Si exportas o importas imágenes que usan VPC compartidas, otorga el rol
roles/compute.networkUser
:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/compute.networkUser'
Reemplaza lo siguiente:
HOST_PROJECT_ID
: El ID del proyecto host en el que se encuentra la VPC compartidaPROJECT_NUMBER
: El número único del proyecto en el que importas o exportas imágenes
Lee la política existente con el método
getIamPolicy
correspondiente del recurso. Para los proyectos, usa el métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Reemplaza
PROJECT_ID
por el ID del proyecto paramy-project-1
.Para otorgar las funciones necesarias a tu cuenta, edita la política con un editor de texto.
Por ejemplo, para otorgar las funciones necesarias a
serviceAccount:12345@cloudbuild.gserviceaccount.com
, agrega la siguiente vinculación a la política:{ { "role":"roles/compute.admin", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountTokenCreator", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Para evitar otorgar la función
roles/compute.admin
, puedes crear una función personalizada con los permisos requeridos y, luego, otorgarla a la cuenta de servicio de Cloud Build. Consulta la sección Permisos necesarios para la función personalizada de este documento.Opcional: Si exportas o importas imágenes que usan una VPC compartida, otorga el rol
roles/compute.networkUser
en el proyecto de VPC compartida.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
Reemplaza
HOST_PROJECT_ID
por el ID del proyecto de VPC compartida.Agrega la siguiente vinculación de IAM a la cuenta de servicio de Cloud Build:
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Para escribir la política actualizada, usa el método
setIamPolicy
.Por ejemplo, para establecer una política a nivel de proyecto, usa el método
project.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de IAM actualizada del paso anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Función de administrador de almacenamiento de Compute (
roles/compute.storageAdmin
): Es necesaria para importar y exportar imágenes de VM. - Función de visualizador de objetos de almacenamiento (
roles/storage.objectViewer
): Es necesaria para importar imágenes de VM. - Función de administrador de objetos de almacenamiento (
roles/storage.objectAdmin
): Es necesaria para exportar imágenes de VM. Ve a la página IAM y administración de la organización o el proyecto.
Ubica la cuenta de servicio de Compute Engine y haz clic en
Editar.En la lista Seleccionar una función, selecciona los siguientes roles:
- Compute Engine > Administrador de almacenamiento de Compute
- Cloud Storage > Visualizador de objetos de almacenamiento
- Cloud Storage > Administrador de objetos de almacenamiento
Guarda los cambios.
Otorga la función
roles/compute.storageAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
Si importas una imagen, otorga la función
roles/storage.objectViewer
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Si exportas una imagen, otorga la función
roles/storage.objectAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
Lee la política existente con el método
getIamPolicy
correspondiente del recurso. Para los proyectos, usa el métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Reemplaza
PROJECT_ID
por el ID del proyecto paramy-project-1
.Para otorgar las funciones necesarias a tu cuenta, edita la política con un editor de texto.
Por ejemplo, si deseas otorgar las funciones necesarias a
serviceAccount:12345-compute@developer.gserviceaccount.com
para importar una imagen, agrega la siguiente vinculación a la política:{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }
Para escribir la política actualizada, usa el método
setIamPolicy
.Por ejemplo, para establecer una política a nivel de proyecto, usa el método
project.setIamPolicy
. En el cuerpo de la solicitud, proporciona la política de IAM actualizada del paso anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
- Importa discos virtuales con cuentas de servicio personalizadas
- Importa dispositivos virtuales con cuentas de servicio personalizadas
- Importa imágenes de máquina desde dispositivos virtuales con cuentas de servicio personalizadas
- Exporta imágenes personalizadas con cuentas de servicio personalizadas
- Exporta imágenes personalizadas a Cloud Storage.
- Comparte tus imágenes entre proyectos.
- Elige un método de importación.
- Importa discos virtuales
- Importar dispositivos virtuales
- Importa imágenes de máquinas desde dispositivos virtuales
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Configura el acceso a un bucket de Cloud Storage
Debes tener acceso a un bucket de Cloud Storage que la herramienta de importación o exportación pueda usar. Si no tienes un bucket de Cloud Storage, consulta Crea un bucket de Cloud Storage.
Para configurar el acceso al bucket de Cloud Storage, consulta Otorga funciones necesarias a tu cuenta y Cuenta de servicio de Compute Engine.
Otorga funciones de IAM necesarias
La herramienta de importación y exportación de imágenes de VM requiere las siguientes cuentas para realizar la operación en su nombre:
Otorga las funciones necesarias a tu cuenta de usuario
Para importar o exportar imágenes, tu cuenta de usuario requiere las siguientes funciones:
Console
gcloud
En los pasos siguientes, usarás el comando
gcloud projects add-iam-policy-binding
para otorgar las funciones obligatorias a nivel de proyecto.REST
Otorga funciones requeridas a la cuenta de servicio de Cloud Build
Cuando usas la consola de Google Cloud o la CLI de gcloud para importar o exportar imágenes por primera vez, la herramienta intenta habilitar la API de Cloud Build y otorgar los roles necesarios a la cuenta de servicio de Cloud Build.
Sin embargo, puedes otorgarlos de forma manual para asegurarte de que los permisos obligatorios estén en vigor.
Console
gcloud
En los pasos siguientes, usarás el comando
gcloud projects add-iam-policy-binding
para otorgar las funciones obligatorias a nivel de proyecto.REST
Si deseas obtener más información para administrar el acceso a los recursos, consulta Otorga, cambia y revoca el acceso a los recursos.
Otorga funciones necesarias a la cuenta de servicio de Compute Engine
Cuando usas la consola de Google Cloud o la CLI de gcloud para importar o exportar imágenes por primera vez, la herramienta intenta otorgar los roles necesarios a la cuenta de servicio predeterminada de Compute Engine.
Según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada se le otorgue automáticamente el rol de editor en tu proyecto. Te recomendamos inhabilitar la concesión automática de roles; para ello, aplica la restricción de la política de la organización
iam.automaticIamGrantsForDefaultServiceAccounts
. Si creaste tu organización después del 3 de mayo de 2024, esta restricción se aplica de forma predeterminada.Si inhabilitas la concesión automática de roles, debes decidir qué roles se deben otorgar a las cuentas de servicio predeterminadas y, luego, otorgar estos roles a ti mismo.
Si la cuenta de servicio predeterminada ya tiene el rol de editor, te recomendamos que reemplaces el rol de editor por roles menos permisivos. Para modificar de forma segura los roles de la cuenta de servicio, usa Policy Simulator para ver el impacto del cambio y, luego, otorga y revoca los roles adecuados.
La cuenta de servicio de Compute Engine debe tener los siguientes roles:
Console
gcloud
En los pasos siguientes, usarás el comando
gcloud projects add-iam-policy-binding
para otorgar las funciones obligatorias a nivel de proyecto.REST
Si no deseas usar la cuenta de servicio predeterminada de Compute Engine, puedes especificar una cuenta de servicio administrada por el usuario con la marca
--compute-service-account
en el comando de importar y exportar degcloud
. Para obtener más información sobre el uso de la cuenta de servicio personalizada de Compute Engine, consulta los siguientes recursos:¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-08-22 (UTC)
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema de traducción" },{ "type": "thumb-down", "id": "otherDown", "label":"Otro" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Fácil de comprender" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Resolvió mi problema" },{ "type": "thumb-up", "id": "otherUp", "label":"Otro" }] -