バケット、オブジェクト、ACL
バケットはファイルを読み取ったり書き込んだりするストレージの場所です。Cloud Storage 用の App Engine クライアント ライブラリを使用するときには、バケットを必ず指定する必要があります。プロジェクトで複数のバケットにアクセスできます。クライアント ライブラリではバケットの作成がサポートされないことに注意してください。
アクセス制御リスト(ACL)は、バケットおよびバケットに含まれるオブジェクトへのアクセスを制御します。プロジェクトと App Engine アプリは、プロジェクト内にバケットを作成するときに、バケットへのアクセスを許可する ACL へ自動的に追加されます。
バケットへのアクセスを許可する ACL は、バケット内のオブジェクトを制御する数多くの ACL とは別のものです。したがって、アプリには有効になっているバケットに対する読み取りと書き込みの権限がありますが、すべての権限を持っているのはバケット内に作成したオブジェクトに対してのみです。他のアプリまたは人物によって作成されたオブジェクトに対するアプリのアクセス権は、オブジェクトの作成者によってそのアプリに対して付与された権限に限定されます。
明示的に ACL が定義されていないバケット内にオブジェクトが作成された場合、バケットのオーナーによってバケットに割り当てられたデフォルトのオブジェクト ACL を使用します。バケットのオーナーがデフォルトのオブジェクト ACL を指定していない場合、オブジェクトのデフォルトは public-read
です。つまり、バケットへのアクセスを許可されている人物はすべてオブジェクトを読み取ることができます。
ACL とクライアント ライブラリ
クライアント ライブラリを使用するアプリではバケット ACL を変更できませんが、作成するオブジェクトへのアクセスを制御する ACL を指定することはできます。利用可能な ACL 設定については、open メソッドのドキュメントをご覧ください。Cloud Storage オブジェクトの変更
バケット内に作成したオブジェクトへの変更や追加は、その処理を行ったオブジェクトでの置き換えで行います。
Cloud Storage とサブディレクトリ
Cloud Storage 用の App Engine クライアント ライブラリでは、オブジェクトの作成時にサブディレクトリの区切り文字を指定できますが、実際には Cloud Storage にはサブディレクトリがありません。Cloud Storage でのサブディレクトリは、オブジェクトのファイル名の一部です。
たとえば、オブジェクト somewhere/over/the/rainbow.mp3
を作成する場合、そのファイル rainbow.mp3
がサブディレクトリ somewhere/over/the/
に格納されるのではなく、オブジェクト名が somewhere/over/the/rainbow.mp3
に設定されます。
listbucket
フィルタリングを使用する場合は、この概念を理解することが重要です。
上記の動作が最適でない場合、listbucket
にはオプションのディレクトリ エミュレーション モードがあります。詳細については、listbucket をご覧ください。
次のステップ
- API リファレンス ドキュメントを参照する。
- Cloud Storage の設定方法を学ぶ。