前方一致でフィルタする

このページでは、包含接頭辞と除外接頭辞を使用して、転送パスを追加または除外する方法について説明します。

特定のオブジェクトを転送するためのマニフェストを作成する方法については、マニフェストを使用して特定のファイルまたはオブジェクトを転送するをご覧ください。

概要

Storage Transfer Service では、接頭辞を使用して、データソースに含めるファイルまたは除外するファイルを選択できます。包含接頭辞、除外接頭辞、またはその両方を使用できます。

Amazon S3、Microsoft Azure Blob Storage、および Cloud Storage のデータソースでは、接頭辞によるフィルタリングがサポートされています。

  • 接頭辞の先頭はスラッシュにしないでください。たとえば、次のバケットパス s3://my-aws-bucket/logs/y=2015/requests.gz からの転送に requests.gz オブジェクトを含めるには、包括接頭辞に logs/y=2015/requests.gz を指定します。

  • 部分一致は、包含接頭辞と除外接頭辞でサポートされます。たとえば、pathpath_1/ および path_2/ と一致します。

  • ワイルドカードはサポートされていません。

  • ソースの場所としてフォルダを指定した場合、接頭辞フィルタはそのフォルダを基準とします。たとえば、ソースが gs://my-test-bucket/path/ の場合、file の一致フィルタには gs://my-test-bucket/path/file で始まるすべてのファイルが含まれます。

  • 各包含接頭辞には、オブジェクトの名前空間の個別の部分を含める必要があります。包含接頭辞に別の接頭辞を含めることはできません。たとえば、path_1path_1/subpath_2 の両方を包含接頭辞として指定することはできません。

  • 包含接頭辞と除外接頭辞を一緒に使用する場合、除外接頭辞は、包含接頭辞のいずれかの値を使って開始する必要があります。 たとえば、a を包括接頭辞として指定する場合、有効な除外接頭辞は a/baaaabc です。

  • 除外接頭辞のみを使用する場合は、使用できる接頭辞に制限はありません。

  • 接頭辞を指定しないと、バケット内のすべてのオブジェクトが転送されます。

接頭辞に関する一般的な情報については、Amazon S3 ドキュメントのプレフィックスと区切り記号によるキーの階層的なリストまたは Cloud Storage のオブジェクト リストの表示方法についての記事をご覧ください。

接頭辞を指定する方法

Cloud コンソール

Cloud コンソールを使用して包含接頭辞と除外接頭辞を指定するには、新しい転送の作成時または既存の転送の更新時に値を入力します。

gcloud CLI

gcloud CLI を使用して包含接頭辞と除外接頭辞を指定するには、--include-prefixes フラグと --exclude-prefixes フラグを gcloud transfer jobs create コマンドまたは gcloud transfer jobs update コマンドに渡します。

gcloud transfer jobs create SOURCE DESTINATION \
  --include-prefixes="path_1/,path_2/" --exclude-prefixes="path_1/subpath_2/"

複数の接頭辞を指定する場合は、接頭辞をカンマで区切ります。カンマの後にスペースを入れないでください。例: --include-prefixes=foo,bar

REST

REST API を使用して包含接頭辞と除外接頭辞を指定するには、includePrefixes[] フィールドと excludePrefixes[] フィールドを使用します。

{
    "description": "YOUR DESCRIPTION",
    "status": "ENABLED",
    "projectId": "PROJECT_ID",
    "schedule": {
        "scheduleStartDate": {
            "day": 1,
            "month": 1,
            "year": 2015
        },
        "startTimeOfDay": {
            "hours": 1,
            "minutes": 1
        }
    },
    "transferSpec": {
        "gcsDataSource": {
            "bucketName": "GCS_SOURCE_NAME"
        },
        "gcsDataSink": {
            "bucketName": "GCS_SINK_NAME"
        },
        "transferOptions": {
            "deleteObjectsFromSourceAfterTransfer": true
        },
        "objectConditions": {
            "includePrefixes": [
                "path_1/",
                "path_2/"
            ],
            "excludePrefixes": [
                "path_1/subpath_2/object_5"
            ]
        }
    }
}

詳細については、ObjectConditions リファレンスをご覧ください。

オブジェクトとパスの例

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

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

包含接頭辞

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

たとえば、path_1/ 下にあるオブジェクトを含めるには、次の接頭辞を使用します。

path_1/

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

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

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

path_1/subpath_2/
path_1/subpath_3/

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

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

部分一致はサポートされます。たとえば、包含接頭辞の値として path を指定すると、次のオブジェクトと一致します。

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

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

除外接頭辞

転送の作成時に除外接頭辞を使用して、一覧表示されたパスを転送対象から除外するように、Storage Transfer Service に指示します。

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

path_1/

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

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

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

path_1/subpath_2/
path_2/subpath_3/

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

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

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

除外接頭辞と包括接頭辞は一緒に適用できます。その場合、除外接頭辞により、転送の包含接頭辞の上限が決まります。

両方のタイプの接頭辞を指定する場合、各除外接頭辞は、包含接頭辞で指定されたパスで始まる必要があります。

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

include: path_1/
exclude: path_1/subpath_1/

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

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

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

include: path_1/
         path_2/
exclude: path_1/subpath_1/
         path_2/subpath_3/

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

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

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

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

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

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

include: path_1/
         path_1/subpath_1

この例では、2 番目の包含接頭辞 path_1/subpath_1 がすでに path_1/ に含まれているため、包含接頭辞の値は無効になります。この問題を解決するには、いずれかの値を削除します。

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

各除外接頭辞は、指定された包含接頭辞の値のいずれかで始まる必要があります。次の例は、除外接頭辞値が指定された包含接頭辞値で始まっていないため、正しくありません。

include: path_1/
         path_2/
exclude: subpath_1
         subpath_4

この例では、除外接頭辞値は、包含接頭辞の値のいずれでも開始されていないため無効です。この問題を解決するには、除外接頭辞に包含接頭辞のフルパスを含めます。

include: path_1/
         path_2/
exclude: path_1/subpath_1/
         path_2/subpath_4/

次のステップ