Corrección para ejecutar el almacenamiento de gcloud
Descripción general
El SDK de Cloud incluye una CLI nueva, un almacenamiento de gcloud, que puede ser mucho más rápida que gsutil cuando se realizan cargas y descargas con menos ajustes de parámetros. Esta nueva CLI tiene una estructura de sintaxis y comandos que es familiar para los usuarios de gsutil, pero muy diferente en muchos aspectos importantes. Para facilitar la transición a esta CLI nueva, gsutil proporciona una corrección que traduce tus comandos de gsutil a los comandos de almacenamiento de gcloud si existe un equivalente y recurre al comportamiento habitual de gsutil si no existe un equivalente.
Habilítalo de esta forma
Configura use_gcloud_storage=True
en el archivo de configuración .boto
en la sección [GSUtil]
:
[GSUtil] use_gcloud_storage=True
También puedes establecer la marca para comandos individuales mediante la marca de nivel superior -o
:
gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj
Comandos disponibles
La CLI de almacenamiento de gcloud solo admite un subconjunto de comandos de gsutil. Lo que sigue es una lista de comandos compatibles con la corrección con cualquier diferencia en el comportamiento indicado.
acl
El subcomando
ch
no es compatible.
autoclass
Funciona como se espera.
bucketpolicyonly
Funciona como se espera.
gato
Imprime datos de objeto para un segundo objeto incluso si el primer objeto no es válido.
compose
Funciona como se espera.
cors
El subcomando
get
imprime “[]” en lugar de “gs://[nombre del bucket] no tiene configuración de CORS”.
cp
Copia un segundo objeto incluso si el primer objeto no es válido.
No admite copias de archivos a archivos.
Admite la copia de objetos nube a nube con barras finales en el nombre.
La marca de todas las versiones (
-A
) habilita la ejecución secuencial de forma silenciosa en lugar de generar un error.
defacl
El subcomando
ch
no es compatible.
defstorageclass
Funciona como se espera.
hash
En gsutil, las marcas
-m
y-c
que afectan a los hashes que se muestran se ignoran para los objetos en la nube. Este comportamiento se corrige para la corrección y el almacenamiento de gcloud.
iam
El subcomando
ch
no es compatible.La marca
-f
continuará con cualquier error, no solo con errores de la API.
KMS
El subcomando de autorización muestra mensajes informativos en un formato diferente.
El subcomando de encriptación muestra mensajes informativos en un formato diferente.
etiquetas
El subcomando
get
imprime “[]” en lugar de “gs://[nombre del bucket] no tiene configuración de etiquetas”.
lifecycle
Funciona como se espera.
registro
El subcomando get tiene diferente espacio JSON y no imprime un mensaje informativo si no se encuentra una configuración.
ls
Funciona como se espera.
mb
Funciona como se espera.
mv
Consulta las notas sobre cp.
notificación
El subcomando list muestra la información de configuración como YAML.
El subcomando delete ofrece seguimiento del progreso y paralelización.
pap
Funciona como se espera.
rb
Funciona como se espera.
requesterpays
Funciona como se espera.
rewrite
La marca -k no genera un error si se llama sin una clave nueva. En la corrección y la corrección de casos, la clave anterior se mantiene.
rm
No se admiten los marcadores de eliminación
$folder$
.
rpo
Funciona como se espera.
setmeta
No genera un error si no se cambian los encabezados.
stat
Incluye un campo “Storage class update time”, que puede generar pestañas.
ubla
Funciona como se espera.
control de versiones
Funciona como se espera.
web
El subcomando get tiene diferente espacio JSON y no imprime un mensaje informativo si no se encuentra una configuración.
Configuración de Boto
La configuración que se encuentra en el archivo boto se asigna 1:1 a las variables de entorno de gcloud cuando corresponda.
[Credentials]
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
use_client_certificate: CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE
[Boto]
proxy: CLOUDSDK_PROXY_ADDRESS
proxy_type: CLOUDSDK_PROXY_TYPE
proxy_port: CLOUDSDK_PROXY_PORT
proxy_user: CLOUDSDK_PROXY_USERNAME
proxy_pass: CLOUDSDK_PROXY_PASSWORD
proxy_rdns: CLOUDSDK_PROXY_RDNS
http_socket_timeout: CLOUDSDK_CORE_HTTP_TIMEOUT
ca_certificates_file: CLOUDSDK_CORE_CUSTOM_CA_CERTS_FILE
max_retry_delay: CLOUDSDK_STORAGE_BASE_RETRY_DELAY
num_retries: CLOUDSDK_STORAGE_MAX_RETRIES
[GSUtil]
check_hashes: CLOUDSDK_STORAGE_CHECK_HASHES
default_project_id: CLOUDSDK_CORE_PROJECT
disable_analytics_prompt: CLOUDSDK_CORE_DISABLE_USAGE_REPORTING
use_magicfile: CLOUDSDK_STORAGE_USE_MAGICFILE
parallel_composite_upload_threshold: CLOUDSDK_STORAGE_PARALLEL_COMPOSITE_UPLOAD_THRESHOLD
resumable_threshold: CLOUDSDK_STORAGE_RESUMABLE_THRESHOLD
[OAuth2]
client_id: CLOUDSDK_AUTH_CLIENT_ID
client_secret: CLOUDSDK_AUTH_CLIENT_SECRET
provider_authorization_uri: CLOUDSDK_AUTH_AUTH_HOST
provider_token_uri: CLOUDSDK_AUTH_TOKEN_HOST
Notas de compatibilidad generales
Debido a su compatibilidad en todas las plataformas principales, el multiprocesamiento se habilita para todos los comandos de forma predeterminada (equivalente a la opción -m que siempre se incluye en gsutil).
Una secuencia de asteriscos mayores a 2 (es decir,
***
) siempre se trata como un solo asterisco.A diferencia de gsutil, gcloud no está diseñado para usarse en invocaciones paralelas, y hacerlo (es decir, ejecutar la corrección de compatibilidad de 2 terminales a la vez) puede generar un comportamiento impredecible.
Supongamos que un bucket contiene un objeto
gs://bucket/nested/foo.txt
, el iterador comodín de gsutil coincidirá confoo.txt
con una URL comogs://bucket/*/nested/*
. La corrección no coincidirá confoo.txt
dada la misma URL.Esto se actualizará como nuevos comandos compatibles con gcloud storage y la corrección.
Si Unicode tiene problemas, intenta configurar la variable de entorno
PYTHONUTF8
como1
. Específicamente, esto puede ser útil en la línea de comandos (CMD) de Windows.