google cloud storage - precio - copia gsutil que devuelve "AccessDeniedException: 403 Permiso insuficiente" de GCE
google-cloud-storage maven (7)
- Después de crear el depósito, vaya a la pestaña de permisos, agregue su correo electrónico y configure el permiso de administrador de almacenamiento .
-
Acceda a la instancia de VM a través de SSH >> comando de ejecución:
gcloud auth login
y siga los pasos.
Ref: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
Estoy conectado a una instancia de GCE a través de SSH. Desde allí, me gustaría acceder al Almacenamiento con la ayuda de una Cuenta de servicio:
GCE> gcloud auth list
Credentialed accounts:
- [email protected] (active)
Primero me aseguré de que esta cuenta de servicio esté marcada como "Puede editar" en los permisos del proyecto en el que estoy trabajando. También me aseguré de darle la ACL de escritura en el bucket en el que me gustaría que copiara un archivo:
local> gsutil acl ch -u [email protected]:W gs://mybucket
Pero entonces el siguiente comando falla:
GCE> gsutil cp test.txt gs://mybucket/logs
(También me aseguré de que se creen "registros" en "mybucket").
El mensaje de error que recibo es:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
¿Qué me estoy perdiendo?
Así que probé un montón de cosas tratando de copiar desde el contenedor GCS a mi VM. Espero que esta publicación ayude a alguien.
A través de la conexión SSHed:
y siguiendo este script:
sudo gsutil cp gs://[BUCKET_NAME]/[OBJECT_NAME] [OBJECT_DESTINATION_IN_LOCAL]
Tengo este error:
AccessDeniedException: 403 Acceso no configurado. Vaya a Google Cloud Platform Console ( https://cloud.google.com/console#/project ) para su proyecto, seleccione APIs y Auth y active la API JSON de Google Cloud Storage.
Lo que solucionó esto fue después de la sección "Activación de la API" mencionada en este enlace: https://cloud.google.com/storage/docs/json_api/
Una vez que activé la API, me autentiqué en la ventana SSHed a través de
gcloud auth login
Después del procedimiento de autenticación, finalmente pude descargar de Google Storage Bucket a mi VM.
PD
Me aseguré de:
De los documentos: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes
Primero debe detener la instancia -> vaya a la página de edición -> vaya a "Ámbitos de acceso a la API de la nube" y elija "acceso completo de almacenamiento o lectura / escritura o lo que sea que necesite"
Cambiar la cuenta de servicio y los ámbitos de acceso para una instancia Si desea ejecutar la máquina virtual como una identidad diferente, o determina que la instancia necesita un conjunto diferente de ámbitos para llamar a las API requeridas, puede cambiar la cuenta de servicio y los ámbitos de acceso de una instancia existente. Por ejemplo, puede cambiar los ámbitos de acceso para otorgar acceso a una nueva API, o cambiar una instancia para que se ejecute como una cuenta de servicio que creó, en lugar de la Cuenta de servicio predeterminada de Compute Engine.
Para cambiar la cuenta de servicio de una instancia y los ámbitos de acceso, la instancia debe detenerse temporalmente. Para detener su instancia, lea la documentación para detener una instancia. Después de cambiar la cuenta de servicio o los ámbitos de acceso, recuerde reiniciar la instancia. Utilice uno de los siguientes métodos para cambiar la cuenta de servicio o los ámbitos de acceso de la instancia detenida.
Debe iniciar sesión con una cuenta que tenga los permisos que necesita para ese proyecto:
gcloud auth login
Otra cosa que debe buscar es asegurarse de configurar los ámbitos adecuados al crear la VM GCE. Incluso si una máquina virtual tiene una cuenta de servicio adjunta, se le deben asignar ámbitos de almacenamiento para acceder a GCS.
Por ejemplo, si hubiera creado su VM con el alcance
devstorage.read_only
, podría fallar el intento de escribir en un depósito, incluso si su cuenta de servicio tiene permiso para escribir en el depósito.
Necesitaría
devstorage.full_control
o
devstorage.read_write
.
Consulte la sección sobre Preparación de una instancia para usar cuentas de servicio para obtener más detalles.
Nota: la cuenta de servicio de cómputo predeterminada tiene ámbitos muy limitados (incluso tener solo lectura para GCS). Esto se hace porque la cuenta de servicio predeterminada tiene permisos IAM del Editor de proyectos. Si utiliza una cuenta de servicio de usuario, esto no suele ser un problema, ya que las cuentas de servicio creadas por el usuario obtienen acceso a todos los ámbitos de forma predeterminada.
Después de agregar los ámbitos necesarios a la VM, es posible que
gsutil
siga utilizando las credenciales almacenadas en caché que no tienen los nuevos ámbitos.
Elimine
~/.gsutil
antes de
~/.gsutil
intentar los comandos gsutil.
(Gracias a @mndrix por señalar esto en los comentarios).
gsutil config -b
Luego navegue a la URL que proporciona, [HAGA CLIC en Permitir]
Luego copie el código de verificación y péguelo en la terminal.
He escrito una respuesta a esta pregunta ya que no puedo publicar comentarios:
Este error también puede ocurrir si está ejecutando el comando
gsutil
con un prefijo
sudo
en algunos casos.