Shim per l'esecuzione di gcloud storage

Panoramica

Cloud SDK include una nuova interfaccia a riga di comando, gcloud storage, che può essere notevolmente più veloce di gsutil quando esegui caricamenti e download con meno parametri di ottimizzazione. Questa nuova interfaccia a riga di comando ha una sintassi e una struttura dei comandi familiari agli utenti di gsutil, ma è fondamentalmente diversa in molti modi importanti. Per semplificare la transizione a questa nuova CLI, gsutil fornisce uno shim che traduce i comandi gsutil in comandi gcloud storage se esiste un equivalente e passa al comportamento consueto di gsutil se non esiste un equivalente.

Per attivare

Imposta use_gcloud_storage=True nel file di configurazione .boto nella sezione [GSUtil]:

[GSUtil]
use_gcloud_storage=True

Puoi anche impostare il flag per i singoli comandi utilizzando il flag di primo livello -o:

gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj

Comandi disponibili

L'interfaccia a riga di comando gcloud storage supporta solo un sottoinsieme di comandi gsutil. Di seguito è riportato un elenco dei comandi supportati dallo shim con le eventuali differenze di comportamento.

acl

  • Il sottocomando ch non è supportato.

autoclass

  • Funziona come previsto.

bucketpolicyonly

  • Funziona come previsto.

gatto

  • Stampa i dati dell'oggetto per un secondo oggetto anche se il primo non è valido.

compose

  • Funziona come previsto.

cors

  • Il sottocomando get stampa "[]" anziché "gs://[nome del bucket] non ha configurazione CORS".

cp

  • Copia un secondo oggetto anche se il primo non è valido.

  • Non supporta le copie da file a file.

  • Supporta la copia di oggetti da un cloud all'altro con barre finali nel nome.

  • Il flag all-version (-A) attiva in silenzio l'esecuzione sequenziale anziché generare un errore.

defacl

  • Il sottocomando ch non è supportato.

defstorageclass

  • Funziona come previsto.

hash

  • In gsutil, i flag -m e -c che influiscono sugli hash visualizzati vengono ignorati per gli oggetti cloud. Questo comportamento è stato corretto per lo shim e lo spazio di archiviazione gcloud.

iam

  • Il sottocomando ch non è supportato.

  • Il flag -f continuerà in caso di qualsiasi errore, non solo di errori dell'API.

kms

  • Il sottocomando authorize restituisce messaggi informativi in un formato diverso.

  • Il sottocomando crittografia restituisce messaggi informativi in un formato diverso.

etichette

  • Il sottocomando get stampa "[]" anziché "gs://[nome del bucket] non ha configurazione per le etichette".

ciclo di vita

  • Funziona come previsto.

logging

  • Il sottocomando get ha spaziature JSON diverse e non stampa un messaggio informativo se non viene trovata alcuna configurazione.

ls

  • Funziona come previsto.

mb

  • Funziona come previsto.

mv

  • Vedi le note su cp.

notifica

  • Il sottocomando list stampa le informazioni di configurazione in formato YAML.

  • Il sottocomando delete offre il monitoraggio dell'avanzamento e la parallelizzazione.

pap

  • Funziona come previsto.

rb

  • Funziona come previsto.

requesterpays

  • Funziona come previsto.

rewrite

  • Il flag -k non genera un errore se viene chiamato senza una nuova chiave. Sia nel caso di shim che in quello senza shim, la vecchia chiave viene mantenuta.

rm

  • Gli indicatori di eliminazione $folder$ non sono supportati.

rpo

  • Funziona come previsto.

setmeta

  • Non genera un errore se non vengono modificate le intestazioni.

stat

  • Include un campo "Data di aggiornamento della classe di archiviazione" che potrebbe causare errori di tabulazione.

ubla

  • Funziona come previsto.

controllo delle versioni

  • Funziona come previsto.

web

  • Il sottocomando get ha spaziature JSON diverse e non stampa un messaggio informativo se non viene trovata alcuna configurazione.

Configurazione di Boto

La configurazione trovata nel file boto viene mappata 1:1 alle variabili dell'ambiente gcloud, se opportuno.

[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

  • file_certificati_CA: 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

Note generali sulla compatibilità

  • Grazie alla sua compatibilità con tutte le principali piattaforme, il multiprocessing è attivo per impostazione predefinita per tutti i comandi (equivalente all'opzione -m sempre inclusa in gsutil).

  • Una sequenza di asterischi maggiore di 2 (ad es. ***) viene sempre trattata come un singolo asterisco.

  • A differenza di gsutil, gcloud non è progettato per essere utilizzato in invocazioni parallele e farlo (ad es. eseguire lo shim da 2 terminali contemporaneamente) può comportare un comportamento imprevedibile.

  • Supponendo che un bucket contenga un oggetto gs://bucket/nested/foo.txt, l'iteratore dei caratteri jolly di gsutil corrisponderà a foo.txt se viene fornito un URL come gs://bucket/*/nested/*. Lo shim non corrisponderà a foo.txt se viene fornito lo stesso URL.

  • Questo documento verrà aggiornato man mano che i nuovi comandi vengono supportati sia da gcloud storage sia dallo shim.

  • Se Unicode presenta problemi, prova a impostare la variabile di ambiente PYTHONUTF8 su 1. In particolare, può essere utile sulla riga di comando (CMD) di Windows.