【Python】Cloud StorageにアップロードするオブジェクトのCache-Controlを変更する

サムネイル
※当ブログの記事にはアフィリエイトリンクを使用している場合があります。

概要

PythonでCloud StorageにアップロードするオブジェクトのCache-Controlを変更する方法を記載します。

公式のドキュメントにPythonのサンプルコードがなく、詰まるポイントがあったので注意点についても解説します。

設定方法

全体のコード

def main():
    _, temp_local_filename = tempfile.mkstemp()
    with codecs.open(temp_local_filename, 'w', 'utf_8') as f:
        f.write('テキスト')

    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = 'credencialsファイル名'
    client = storage.Client()
    bucket = client.get_bucket('バケット名')
    blob = bucket.blob('アップロード先ファイル名')
    blob.upload_from_filename(filename=temp_local_filename)
    blob.cache_control = 'no-cache'
    blob.patch()
    return "success"

正しい方法

    blob.cache_control = 'no-cache'
    blob.patch()

設定されているか確認します。

$ curl -v "https://storage.googleapis.com/バケット名/ファイル名" 2>&1 | grep -i Cache-Control
* h2 header: cache-control: no-cache
< cache-control: no-cache
正しく設定されている

正しく設定されている

Cache-Controlがno-cacheになりました。

間違った方法

metadataには

があり、Cache-Controlは固定キーデータにあたります。以下のコードはカスタムメタデータを設定するため、Cache-Controlが正常に設定されません。

    blob.metadata['Cache-Control'] = 'no-cache'

どのように設定されているか確認します。

$ curl -v "https://storage.googleapis.com/バケット名/ファイル名" 2>&1 | grep -i Cache-Control
* h2 header: cache-control: public, max-age=3600
* h2 header: x-goog-meta-cache-control: no-cache
< cache-control: public, max-age=3600
< x-goog-meta-cache-control: no-cache

x-goog-meta-cache-controlに設定されてしまっています。

間違った設定をされている

間違った設定をされている

コンソールで見ても本来のCache-Controlとは別項目に値が設定されています。

まとめ

オブジェクトのCache-Controlを変更する方法について解説しました。
設定値はCLIやコンソールから確認することができるため、正しく設定されているか確認をしましょう。

参考

この記事をSNSで共有する

関連記事

オススメ記事

このブログを運営している人

アイコン

Webシステムエンジニア / DTMer

あっしゅからー

フリーランスでWebシステムエンジニアをやっています。

趣味ではDTMをしていて、オリジナル曲をニコニコ動画やYouTubeに投稿しています。

Copyright © 2025 あっしゅからー - All right reserved