Shim untuk Menjalankan penyimpanan gcloud

Ringkasan

Cloud SDK menyertakan CLI dan penyimpanan gcloud baru, yang bisa jauh lebih cepat daripada gsutil saat melakukan upload dan download dengan lebih sedikit parameter tweaking. CLI baru ini memiliki struktur perintah dan sintaksis yang tidak asing bagi pengguna gsutil, tetapi pada dasarnya berbeda dalam banyak hal penting. Untuk memudahkan transisi ke CLI baru ini, gsutil menyediakan shim yang menerjemahkan perintah gsutil menjadi perintah penyimpanan gcloud jika ada yang setara, dan melakukan fallback ke perilaku biasa gsutil jika tidak ada yang setara.

Untuk Mengaktifkan

Tetapkan use_gcloud_storage=True di file konfigurasi .boto pada bagian [GSUtil]:

[GSUtil]
use_gcloud_storage=True

Anda juga dapat menetapkan flag untuk setiap perintah menggunakan flag -o level atas:

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

Perintah yang Tersedia

CLI penyimpanan gcloud hanya mendukung subset perintah gsutil. Berikut adalah daftar perintah yang didukung oleh shim dengan perbedaan perilaku yang dicatat.

acl

  • Subperintah ch tidak didukung.

autoclass

  • Bekerja seperti yang diharapkan.

bucketpolicyonly

  • Bekerja seperti yang diharapkan.

cat

  • Mencetak data objek untuk objek kedua meskipun objek pertama tidak valid.

compose

  • Bekerja seperti yang diharapkan.

cors

  • Subperintah get mencetak "[]", bukan "gs://[bucket name] tidak memiliki konfigurasi CORS".

cp

  • Menyalin objek kedua meskipun objek pertama tidak valid.

  • Tidak mendukung file ke salinan file.

  • Mendukung penyalinan objek dari cloud ke cloud dengan garis miring di akhir namanya.

  • Flag semua versi (-A) secara otomatis mengaktifkan eksekusi berurutan, bukan menampilkan error.

defacl

  • Subperintah ch tidak didukung.

defstorageclass

  • Bekerja seperti yang diharapkan.

hash

  • Di gsutil, flag -m dan -c yang memengaruhi hash yang ditampilkan akan diabaikan untuk objek cloud. Perilaku ini telah diperbaiki untuk penyimpanan shim dan gcloud.

iam

  • Subperintah ch tidak didukung.

  • Flag -f akan berlanjut saat terjadi error, bukan hanya error API.

kms

  • Subperintah otorisasi menampilkan pesan informasi dalam format yang berbeda.

  • Subperintah enkripsi menampilkan pesan informasi dalam format yang berbeda.

label

  • Subperintah get mencetak "[]", bukan "gs://[bucket name] tidak memiliki konfigurasi label."

lifecycle

  • Bekerja seperti yang diharapkan.

logging

  • Subperintah get memiliki spasi JSON yang berbeda dan tidak mencetak pesan informasi jika konfigurasi tidak ditemukan.

ls

  • Bekerja seperti yang diharapkan.

mb

  • Bekerja seperti yang diharapkan.

mv

  • Lihat catatan di cp.

notifikasi

  • Subperintah daftar mencetak informasi konfigurasi sebagai YAML.

  • Subperintah hapus menawarkan pelacakan dan paralelisasi progres.

pap

  • Bekerja seperti yang diharapkan.

rb

  • Bekerja seperti yang diharapkan.

requesterpays

  • Bekerja seperti yang diharapkan.

rewrite

  • Flag -k tidak memunculkan error jika dipanggil tanpa kunci baru. Baik dalam kasus shim maupun yang tidak di-shim, kunci lama dipertahankan.

rm

  • Penanda hapus $folder$ tidak didukung.

rpo

  • Bekerja seperti yang diharapkan.

setmeta

  • Tidak menampilkan error jika tidak ada header yang diubah.

stat

  • Menyertakan kolom "Storage class update time:" yang dapat menghentikan penggunaan tab.

ubla

  • Bekerja seperti yang diharapkan.

pembuatan versi

  • Bekerja seperti yang diharapkan.

web

  • Subperintah get memiliki spasi JSON yang berbeda dan tidak mencetak pesan informasi jika konfigurasi tidak ditemukan.

Konfigurasi Boto

Konfigurasi yang ditemukan dalam file boto dipetakan 1:1 ke variabel lingkungan gcloud jika sesuai.

[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

Catatan Kompatibilitas Umum

  • Karena kompatibilitasnya di semua platform utama, multipemrosesan diaktifkan untuk semua perintah secara default (setara dengan opsi -m yang selalu disertakan dalam gsutil).

  • Urutan tanda bintang lebih besar dari 2 (yaitu ***) selalu diperlakukan sebagai satu tanda bintang.

  • Tidak seperti gsutil, gcloud tidak dirancang untuk digunakan dalam pemanggilan paralel, dan melakukannya (menjalankan shim dari 2 terminal sekaligus) dapat menyebabkan perilaku yang tidak dapat diprediksi.

  • Dengan asumsi bahwa bucket berisi objek gs://bucket/nested/foo.txt, iterator karakter pengganti gsutil akan cocok dengan foo.txt mengingat URL seperti gs://bucket/*/nested/*. Sym tidak akan cocok dengan foo.txt mengingat URL yang sama.

  • Ini akan diupdate karena perintah baru didukung oleh penyimpanan gcloud dan shim.

  • Jika Unicode mengalami masalah, coba tetapkan variabel lingkungan PYTHONUTF8 ke 1. Secara khusus, cara ini dapat membantu pada command line (CMD) Windows.