Shim per l'esecuzione di gcloud storage

Google Cloud CLI include una CLI per Cloud Storage, gcloud storage, che può essere molto più veloce di gsutil quando esegue caricamenti e download con meno modifiche ai parametri. I comandi gcloud storage hanno una sintassi e una struttura di comando che sono familiari agli utenti di gsutil, ma fondamentalmente diverse in molti modi importanti. Per semplificare la transizione alla gcloud CLI, gsutil fornisce uno shim che traduce i comandi gsutil in comandi gcloud storage se esiste un equivalente e ripristina il comportamento abituale di gsutil se non esiste un equivalente.

Per abilitare

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 -o di primo livello:

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

Comandi disponibili

gcloud storage CLI supporta solo un sottoinsieme di comandi gsutil. Di seguito è riportato un elenco di comandi supportati dallo shim con 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 comando secondario get stampa "[]" anziché "gs://[nome bucket] has no CORS configuration".

cp

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

  • Non supporta le copie da file a file.

  • Supporta la copia di oggetti cloud-to-cloud con barre finali nel nome.

  • Il flag per tutte le versioni (-A) attiva l'esecuzione sequenziale in modo invisibile 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 gcloud storage.

iam

  • Il sottocomando ch non è supportato.

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

kms

  • Il comando secondario authorize restituisce messaggi informativi in un formato diverso.

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

etichette

  • Il comando secondario get stampa "[]" anziché "gs://[nome bucket] has no labels configuration."

ciclo di vita

  • Funziona come previsto.

logging

  • Il comando secondario get ha una spaziatura JSON diversa 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 comando secondario list stampa le informazioni di configurazione in formato YAML.

  • Il comando secondario 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 chiamato senza una nuova chiave. Sia nel caso di shim che in quello di unshim, la vecchia chiave viene mantenuta.

rm

  • I marcatori di eliminazione $folder$ non sono supportati.

rpo

  • Funziona come previsto.

setmeta

  • Non genera un errore se non vengono modificate intestazioni.

stat

  • Include un campo "Ora aggiornamento classe di archiviazione:" che potrebbe interrompere la tabulazione.

ubla

  • Funziona come previsto.

controllo delle versioni

  • Funziona come previsto.

web

  • Il comando secondario get ha una spaziatura JSON diversa 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 di ambiente gcloud, se appropriato.

[Credenziali]

  • 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

Note generali sulla compatibilità

  • Grazie alla sua compatibilità con tutte le principali piattaforme, l'elaborazione parallela è attivata 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 (ovvero eseguire lo shim da due terminali contemporaneamente) può portare a un comportamento imprevedibile.

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

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