Shim para executar o gcloud storage

Vista geral

O Cloud SDK inclui uma nova CLI, o gcloud storage, que pode ser consideravelmente mais rápido do que o gsutil quando realiza carregamentos e transferências com menos ajustes de parâmetros. Esta nova CLI tem uma sintaxe e uma estrutura de comandos que são familiares aos utilizadores do gsutil, mas é fundamentalmente diferente em muitos aspetos importantes. Para facilitar a transição para esta nova CLI, o gsutil fornece um shim que traduz os seus comandos do gsutil em comandos de armazenamento do gcloud se existir um equivalente e volta ao comportamento habitual do gsutil se não existir um equivalente.

Para ativar

Defina use_gcloud_storage=True no ficheiro de configuração .boto na secção [GSUtil]:

[GSUtil]
use_gcloud_storage=True

Também pode definir a flag para comandos individuais através da flag de nível superior:-o

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

Comandos disponíveis

A CLI gcloud storage só suporta um subconjunto de comandos gsutil. Segue-se uma lista de comandos suportados pelo shim com quaisquer diferenças no comportamento indicadas.

acl

  • O subcomando ch não é suportado.

autoclass

  • Funciona conforme esperado.

bucketpolicyonly

  • Funciona conforme esperado.

gato

  • Imprime os dados do objeto para um segundo objeto, mesmo que o primeiro objeto seja inválido.

compor

  • Funciona conforme esperado.

cors

  • O subcomando get imprime "[]" em vez de "gs://[nome do contentor] não tem uma configuração CORS".

cp

  • Copia um segundo objeto, mesmo que o primeiro objeto seja inválido.

  • Não suporta cópias de ficheiro para ficheiro.

  • Suporta a cópia de objetos na nuvem com barras invertidas finais no nome.

  • A flag de todas as versões (-A) ativa silenciosamente a execução sequencial em vez de gerar um erro.

defacl

  • O subcomando ch não é suportado.

defstorageclass

  • Funciona conforme esperado.

hash

  • No gsutil, os flags -m e -c que afetam os hashes apresentados são ignorados para objetos na nuvem. Este comportamento foi corrigido para o shim e o gcloud storage.

iam

  • O subcomando ch não é suportado.

  • A flag -f continua em qualquer erro, não apenas em erros da API.

km

  • O subcomando authorize devolve mensagens informativas num formato diferente.

  • O subcomando de encriptação devolve mensagens informativas num formato diferente.

etiquetas

  • O subcomando get imprime "[]" em vez de "gs://[bucket name] has no labels configuration."

ciclo de vida

  • Funciona conforme esperado.

registo

  • O subcomando get tem um espaçamento JSON diferente e não imprime uma mensagem informativa se não for encontrada nenhuma configuração.

ls

  • Funciona conforme esperado.

mb

  • Funciona conforme esperado.

mv

  • Veja notas sobre o CP.

notificação

  • O subcomando list imprime informações de configuração como YAML.

  • O subcomando delete oferece acompanhamento do progresso e paralelização.

pap

  • Funciona conforme esperado.

rb

  • Funciona conforme esperado.

requesterpays

  • Funciona conforme esperado.

reescrever

  • A flag -k não gera um erro se for chamada sem uma nova chave. Tanto no caso com shim como sem shim, a chave antiga é mantida.

rm

  • Os marcadores de eliminação $folder$ não são suportados.

rpo

  • Funciona conforme esperado.

setmeta

  • Não gera um erro se não forem alterados cabeçalhos.

stat

  • Inclui um campo "Storage class update time:" que pode dificultar a navegação com a tecla Tab.

ubla

  • Funciona conforme esperado.

controlo de versões

  • Funciona conforme esperado.

Web

  • O subcomando get tem um espaçamento JSON diferente e não imprime uma mensagem informativa se não for encontrada nenhuma configuração.

Configuração do Boto

A configuração encontrada no ficheiro boto é mapeada 1:1 para as variáveis de ambiente do gcloud, quando adequado.

[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 gerais de compatibilidade

  • Devido à sua compatibilidade com todas as principais plataformas, o processamento múltiplo está ativado para todos os comandos por predefinição (equivalente à opção -m estar sempre incluída no gsutil).

  • Uma sequência de asteriscos superior a 2 (ou seja, ***) é sempre tratada como um único asterisco.

  • Ao contrário do gsutil, o gcloud não foi concebido para ser usado em invocações paralelas e, se o fizer (ou seja, executar o shim a partir de 2 terminais em simultâneo), pode levar a um comportamento imprevisível.

  • Supondo que um contentor contém um objeto gs://bucket/nested/foo.txt, o iterador de carateres universais do gsutil corresponde a foo.txt dado um URL como gs://bucket/*/nested/*. O preenchimento não vai corresponder a foo.txt dado o mesmo URL.

  • Esta página vai ser atualizada à medida que novos comandos forem suportados pelo gcloud storage e pelo shim.

  • Se o Unicode estiver a ter problemas, experimente definir a variável de ambiente PYTHONUTF8 para 1. Especificamente, isto pode ajudar na linha de comandos (CMD) do Windows.