Shim pour l'exécution de gcloud storage

Présentation

Le SDK Cloud inclut une nouvelle CLI, gcloud storage, qui peut être considérablement plus rapide que gsutil lorsque vous effectuez des importations et des téléchargements avec moins d'ajustement de paramètres. Cette nouvelle CLI présente une syntaxe et une structure de commandes familières aux utilisateurs de gsutil, mais elle est fondamentalement différente à de nombreux égards. Pour faciliter la transition vers cette nouvelle CLI, gsutil fournit un shim qui traduit vos commandes gsutil en commandes gcloud storage si un équivalent existe, et revient au comportement habituel de gsutil si aucun équivalent n'existe.

Pour activer

Définissez use_gcloud_storage=True dans le fichier de configuration .boto, sous la section [GSUtil] :

[GSUtil]
use_gcloud_storage=True

Vous pouvez également définir l'option pour des commandes individuelles à l'aide de l'option de niveau supérieur -o :

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

Commandes disponibles

La CLI gcloud storage n'accepte qu'un sous-ensemble de commandes gsutil. Vous trouverez ci-dessous la liste des commandes compatibles avec le shim, avec les différences de comportement indiquées.

acl

  • La sous-commande ch n'est pas acceptée.

autoclass

  • Fonctionne comme prévu.

bucketpolicyonly

  • Fonctionne comme prévu.

chat

  • Affiche les données d'objet d'un deuxième objet, même si le premier objet n'est pas valide.

compose

  • Fonctionne comme prévu.

cors

  • La sous-commande get affiche "[]" au lieu de "gs://[nom du bucket] ne dispose pas d'une configuration CORS".

cp

  • Copie un deuxième objet, même si le premier objet n'est pas valide.

  • Il n'est pas possible d'effectuer des copies de fichiers à des fins de fichiers.

  • Compatible avec la copie d'objets de cloud à cloud, avec des barres obliques dans le nom.

  • L'option "toutes les versions" (-A) permet d'exécuter silencieusement une tâche séquentielle plutôt que de générer une erreur.

defacl

  • La sous-commande ch n'est pas acceptée.

defstorageclass

  • Fonctionne comme prévu.

hash

  • Dans gsutil, les options -m et -c qui affectent l'affichage des hachages sont ignorées pour les objets cloud. Ce comportement est corrigé pour le shim et gcloud storage.

iam

  • La sous-commande ch n'est pas acceptée.

  • L'option -f continue de traiter toutes les erreurs, pas seulement celles des API.

kms

  • La sous-commande "authorize" renvoie des messages d'information dans un format différent.

  • La sous-commande "encryption" renvoie des messages d'information dans un format différent.

labels

  • La sous-commande get affiche "[]" au lieu de "gs://[nom du bucket] ne dispose pas d'une configuration pour les étiquettes".

lifecycle

  • Fonctionne comme prévu.

journalisation

  • La sous-commande "get" possède un espace JSON différent et n'affiche pas de message d'informations si aucune configuration n'est trouvée.

ls

  • Fonctionne comme prévu.

mb

  • Fonctionne comme prévu.

mv

  • Voir les remarques sur "cp".

notification

  • La sous-commande "list" affiche les informations de configuration au format YAML.

  • La sous-commande "delete" offre un suivi de la progression et l'exécution en parallèle.

pap

  • Fonctionne comme prévu.

rb

  • Fonctionne comme prévu.

requesterpays

  • Fonctionne comme prévu.

rewrite

  • L'option "-k" ne génère pas d'erreur si elle est appelée sans nouvelle clé. Dans les deux cas, l'ancienne clé est conservée.

rm

  • Les repères de suppression de $folder$ ne sont pas acceptés.

rpo

  • Fonctionne comme prévu.

setmeta

  • Ne génère pas d'erreur si aucun en-tête n'est modifié.

stat

  • Inclut un champ "Heure de mise à jour de la classe de stockage :", qui peut déclencher la tabulation.

ubla

  • Fonctionne comme prévu.

gestion des versions

  • Fonctionne comme prévu.

web

  • La sous-commande "get" possède un espace JSON différent et n'affiche pas de message d'informations si aucune configuration n'est trouvée.

Configuration boto

La configuration trouvée dans le fichier boto est mappée avec des variables d'environnement gcloud (1:1), le cas échéant.

[Identifiants]

  • 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

Remarques générales sur la compatibilité

  • En raison de sa compatibilité sur les principales plates-formes, le multitraitement est activé par défaut pour toutes les commandes (ce qui équivaut à l'option "-m" toujours incluse dans gsutil).

  • Une séquence d'astérisques supérieure à 2 (c'est-à-dire ***) est toujours traitée comme un seul astérisque.

  • Contrairement à gsutil, gcloud n'est pas conçu pour être utilisé dans des appels parallèles. Cela peut entraîner un comportement imprévisible.

  • En supposant qu'un bucket contient un objet gs://bucket/nested/foo.txt, l'itérateur générique de gsutil correspond à foo.txt avec une URL telle que gs://bucket/*/nested/*. Le shim ne correspondra pas à foo.txt avec la même URL.

  • Celui-ci sera mis à jour à mesure que les nouvelles commandes seront compatibles avec gcloud storage et avec le shim.

  • Si Unicode rencontre des problèmes, essayez de définir la variable d'environnement PYTHONUTF8 sur 1. Plus précisément, cela peut être utile avec la ligne de commande Windows (CMD).