GCP: Cloud Storage
CLI
GCSのファイル一覧取得
BUCKET='my-buket'
# バケットの一覧取得
gsutil ls
# バケット内のファイル一覧取得
gsutil ls gs://${BUCKET}
# バケットのフォルダ内のファイル一覧取得
gsutil ls gs://${BUKCET}/hoge
オブジェクトの中身を表示する
gsutil cat gs://${BUCKET}/hoge.txt
ローカルファイルをGCSにコピー
BUCKET='my-bucket'
# hoge配下のjsonをすべてコピー
gsutil -m cp hoge/*.json gs://BUCKET/json/
Tips
バケット内のファイル数取得
BUCKET='gs://my-bucket/hoge/'
gsutil ls $BUCKET | wc -l
FAQ
Anonymous caller does not have xxx
SDKを使うとき、事前にgcloud init
でログインしているのに認証エラーになってしまう場合。
gcloud auth application-default login
ConnectionResetError
リトライ処理を入れる。
from google.cloud import storage
from urllib3.exceptions import ProtocolError
from google.api_core import retry
predicate = retry.if_exception_type(ConnectionResetError, ProtocolError)
reset_retry = retry.Retry(predicate)
client_gcs = storage.Client()
ls = client_gcs.list_blobs("my-bukcet")
for blob in ls:
content = reset_retry(blob.download_as_string)()
print(content)
Ref:
https://github.com/googleapis/google-cloud-python/issues/5879#issuecomment-517391825