Google Cloud Storage の機能について

バケット、オブジェクト、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 をご覧ください。

次のステップ