実行中の gcloud storage の shim
概要
Cloud SDK には、新しい CLI である gcloud storage が含まれています。アップロードやダウンロードを行う際に、gsutil よりも少ないパラメータ調整で非常に高速に処理することが可能です。この新しい CLI には、gsutil ユーザーにとって使い慣れた構文やコマンド構造が用意されていますが、多くの重要な点において gsutil とは根本的な違いがあります。この新しい CLI への移行を容易にするため、gsutil には shim が用意されています。同等の機能が存在する場合は gsutil コマンドを gcloud storage コマンドに変換しますが、存在しない場合は gsutil の通常の動作に戻ります。
有効化
.boto
構成ファイルの [GSUtil]
セクションにある use_gcloud_storage=True
を設定します。
[GSUtil] use_gcloud_storage=True
最上位の -o
フラグを使用してコマンドごとにフラグを設定することもできます。
gsutil -o "GSUtil:use_gcloud_storage=True" -m cp -p file gs://bucket/obj
使用できるコマンド:
gcloud storage CLI は、gsutil コマンドのサブセットのみをサポートしています。以下に、shim でサポートされているコマンドのリストと動作の違いを示します。
acl
ch
サブコマンドはサポートされていません。
autoclass
想定どおりに動作します。
bucketpolicyonly
想定どおりに動作します。
cat
最初のオブジェクトが無効であっても、2 番目のオブジェクトのオブジェクト データを出力します。
compose
想定どおりに動作します。
cors
get
サブコマンドは、「gs://[bucket name] has no CORS configuration」ではなく [] を出力します。
cp
最初のオブジェクトが無効な場合でも 2 番目のオブジェクトをコピーします。
ファイル間コピーはサポートされていません。
名前に末尾のスラッシュを付けると、クラウド間のオブジェクトのコピーがサポートされます。
all-version フラグ(
-A
)を使用すると、エラーを発生させるのではなく、順次実行がサイレントで有効になります。
defacl
ch
サブコマンドはサポートされていません。
defstorageclass
想定どおりに動作します。
hash
クラウド オブジェクトの場合、gsutil では、どのハッシュを表示するのかを制御する
-m
フラグと-c
フラグは無視されます。この動作は、shim と gcloud ストレージで修正されています。
iam
ch
サブコマンドはサポートされていません。-f
フラグは、API エラーだけでなく、あらゆるエラーで引き続き表示されます。
kms
authorization サブコマンドで返される情報メッセージの形式が異なります。
encryption サブコマンドで返される情報メッセージの形式が異なります。
labels
get
サブコマンドは、「gs://[bucket name] has no labels configuration」ではなく [] を出力します。
lifecycle
想定どおりに動作します。
logging
get サブコマンドでは JSON のスペーシングが異なります。構成が見つからない場合、情報メッセージは出力されません。
ls
想定どおりに動作します。
mb
想定どおりに動作します。
mv
cp に関する注をご覧ください。
notification
list サブコマンドは、構成情報を YAML として出力します。
delete サブコマンドで、進捗状況の追跡と並列化を実行できます。
pap
想定どおりに動作します。
rb
想定どおりに動作します。
requesterpays
想定どおりに動作します。
rewrite
-k フラグを使用すると、新しいキーなしで呼び出しが実行されてもエラーはスローされません。shim と unshimmed の両方で、古い鍵が維持されます。
rm
$folder$
の削除マーカーはサポートされていません。
rpo
想定どおりに動作します。
setmeta
ヘッダーが変更されなくてもエラーはスローされません。
stat
「Storage class update time:」というフィールドを含めると、タブが正しく表示されない可能性があります。
ubla
想定どおりに動作します。
versioning
想定どおりに動作します。
web
get サブコマンドでは JSON のスペーシングが異なります。構成が見つからない場合、情報メッセージは出力されません。
Boto の構成
該当する場合、boto ファイルにある構成と gcloud 環境変数が 1 対 1 でマッピングされます。
[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
互換性に関する全般的な注意事項
主要なすべてのプラットフォームで互換性を維持するため、デフォルトではすべてのコマンドでマルチプロセッシングが有効になっています(gsutil の -m オプションと常に含める場合と同じ)。
3 個以上のアスタリスクの連続(たとえば
***
)は、常に単一のアスタリスクとして扱われます。gsutil とは異なり、gcloud は並行呼び出しでの使用が想定されていません。このような操作を行うと、2 つのターミナルから shim を同時に実行するなど、予期しない動作が発生する可能性があります。
バケットにオブジェクト
gs://bucket/nested/foo.txt
が含まれている場合、gsutil のワイルドカード イテレータはgs://bucket/*/nested/*
のような URL でfoo.txt
と一致します。同じ URL を指定すると、shim はfoo.txt
と一致しません。gcloud コマンドと shim の両方で新しいコマンドがサポートされるようになると、この情報は更新されます。
Unicode に問題がある場合は、環境変数
PYTHONUTF8
を1
に設定してみてください。特に、Windows コマンドライン(CMD)では役立つ場合があります。