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."
siklus hidup
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 denganfoo.txt
mengingat URL sepertigs://bucket/*/nested/*
. Sym tidak akan cocok denganfoo.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
ke1
. Secara khusus, cara ini dapat membantu pada command line (CMD) Windows.