転送からのオブジェクトのフィルタリング

このドキュメントでは、includePrefixexcludePrefix を使用して、転送からオブジェクトをフィルタする方法について説明します。

概要

プログラムにより転送を作成するときに、includePrefixexcludePrefix を使用すると、Storage Transfer Service の操作対象のオブジェクトを制限できます。includePrefixexcludePrefix は、転送を作成するときに TransferSpec で指定できる省略可能フィールドです。includePrefix は転送に含める特定のパスを指定し、excludePrefix は除外する特定のパスを指定します。

転送するオブジェクトと転送しないオブジェクトの両方がパスに含まれる場合、includePrefixexcludePrefix を一緒に使用して、転送するオブジェクトを指定できます。

オブジェクトとパスの例

このドキュメントの例では、次のサンプルのオブジェクトおよびパスを使用します。

object_1
object_2
path_1/object_3/
path_2/object_4
path_1/subpath_1/object_5
path_1/subpath_2/object_6
path_2/subpath_3/object_7
path_2/subpath_4/object_8

パスを含める

転送の作成時に includePrefix を使用して、一覧表示されたパスのオブジェクトを転送の対象として考慮に入れ、それらのパスに存在しないオブジェクトを無視するように、Storage Transfer Service に指示することができます。

たとえば、path_1/ 下にあるオブジェクトを含めるには、includePrefix に次を渡します。

includePrefix: "path_1/"

これにより、path_1/path_1/subpath_1path_1/subpath_2/ 直下にあるオブジェクトも含められます。次のオブジェクトが転送に含められます。

path_1/object_3
path_1/subpath_1/object_5
path_1/subpath_2/object_6

含める特定のパスを指定することもできます。たとえば、includePrefix に次を渡すことができます。

includePrefix: "path_1/subpath_2/", "path_1/subpath_3/"

この場合、次のオブジェクトが転送に含められます。

path_1/subpath_2/object_6
path_2/subpath_3/object_7

includePrefix を使用する場合、明示的に含めていないパスは、Cloud Storage 転送先バケットに転送されません。

パスを除外する

転送の作成時に excludePrefix を使用して、一覧表示されたパスを転送対象としては無視するように、Storage Transfer Service に指示します。

path_1/ 下にあるオブジェクトを除外するには、excludePrefix に次を渡します。

excludePrefix: "path_1/"

これにより、path_1/path_1/subpath_1/path_1/subpath_2/ の下にあるオブジェクトが除外されます。この場合、次のオブジェクトが転送に含められます。

object_1
object_2
path_2/object_4
path_2/subpath_3/object_7
path_2/subpath_4/object_8

除外する特定のパスを指定することもできます。たとえば、excludePrefix に次を渡すことができます。

excludePrefix: "path_1/subpath_2/", "path_2/subpath_3/"

この場合、次のオブジェクトが転送に含められます。

object_1
object_2
path_1/object_3
path_2/object_4
path_1/subpath_1/object_5
path_2/subpath_4/object_8

含めるパスと除外するパスを同時に指定する

excludePrefixincludePrefix は一緒に適用できます。その場合、excludePrefix は、includePrefix で転送に含める対象をさらに制限します。

includePrefixexcludePrefix の両方を指定した場合、各 excludePrefix は、includePrefix に指定したいずれかの値で開始する必要があります。

たとえば、path_1/ 下にあるオブジェクトを含めて、subpath_1/ 下にあるオブジェクトを除外するには、次を渡します。

includePrefix: "path_1/"
excludePrefix: "path_1/subpath_1/"

この場合、次のオブジェクトが転送に含められます。

path_1/object_3
path_1/subpath_2/object_6

path_1/subpath_1/ または path_2/subpath_3/ のアイテムを除いて path_1/path_2/ の下にあるすべてのオブジェクトを含めるには、次を渡します。

includePrefix: "path_1/", "path_2/"
excludePrefix: "path_1/subpath_1/", "path_2/subpath_3/"

この場合、次のオブジェクトが転送に含められます。

path_1/object_3
path_2/object_4
path_1/subpath_2/object_6
path_2/subpath_4/object_8

含めるまたは除外するパスを間違って指定した例

以下のセクションでは、パスを含めるまたは除外するときに回避すべき例と、これらが正しく機能するように修正する方法について説明します。

別の包含接頭辞で使用されるパスを含める

それぞれの includePrefix では、オブジェクトの名前空間の個別の部分を指定する必要があります。次の例は、2 番目の値が最初の値の名前空間にすでに含まれているため、正しくありません。

includePrefix: "path_1/", "path_1/subpath_1"

この例では、2 番目の includePrefix"path_1/subpath_1" がすでに "path_1/" に含まれているため、includePrefix の値は無効です。これを修正するには、次のどちらを含めるかを選択します。

  • includePrefix: "path_1"
  • includePrefix: "path_1/subpath_1"

包含接頭辞で始まっていない除外接頭辞を使用する

それぞれの excludePrefix は、指定された includePrefix 値のいずれかで始まる必要があります。次の例は、excludePrefix 値が指定された includePrefix 値で始まっていないため、正しくありません。

includePrefix: "path_1/", "path_2/"
excludePrefix: "subpath_1/", "subpath_4/"

この例では、excludePrefix の値は、どちらの includePrefix 値(path_1 または path_2)でも始まっていないので、無効です。これを修正するには、includePrefix に一覧表示されている完全なパスを excludePrefix に含めるようにします。

includePrefix: "path_1/", "path_2/"
excludePrefix: "path_1/subpath_1/", "path_2/subpath_4/"