このページでは、包含接頭辞と除外接頭辞を使用して、転送パスを追加または除外する方法について説明します。
特定のオブジェクトを転送するためのマニフェストを作成する方法については、マニフェストを使用して特定のファイルまたはオブジェクトを転送するをご覧ください。
概要
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
を指定します。部分一致は、包含接頭辞と除外接頭辞でサポートされます。たとえば、
path
はpath_1/
およびpath_2/
と一致します。ワイルドカードはサポートされていません。
ソースの場所としてフォルダを指定した場合、接頭辞フィルタはそのフォルダを基準とします。たとえば、ソースが
gs://my-test-bucket/path/
の場合、file
の一致フィルタにはgs://my-test-bucket/path/file
で始まるすべてのファイルが含まれます。各包含接頭辞には、オブジェクトの名前空間の個別の部分を含める必要があります。包含接頭辞に別の接頭辞を含めることはできません。たとえば、
path_1
とpath_1/subpath_2
の両方を包含接頭辞として指定することはできません。包含接頭辞と除外接頭辞を一緒に使用する場合、除外接頭辞は、包含接頭辞のいずれかの値を使って開始する必要があります。 たとえば、
a
を包括接頭辞として指定する場合、有効な除外接頭辞はa/b
、aaa
、abc
です。除外接頭辞のみを使用する場合は、使用できる接頭辞に制限はありません。
接頭辞を指定しないと、バケット内のすべてのオブジェクトが転送されます。
接頭辞に関する一般的な情報については、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_1
、path_1/subpath_2/
直下にあるオブジェクトも含められます。次のオブジェクトが転送に含められます。
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_2/object_4xx://bucketname/path_1/subpath_1/object_5 xx://bucketname/path_1/subpath_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
含めるパスは複数指定できます。たとえば、次のものを渡すことができます。
path_1/subpath_2/ path_1/subpath_3/
この場合、次のオブジェクトが転送に含められます。
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_2/object_4xx://bucketname/path_1/subpath_1/object_5xx://bucketname/path_1/subpath_2/object_6 xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
部分一致はサポートされます。たとえば、包含接頭辞の値として path
を指定すると、次のオブジェクトと一致します。
xx://bucketname/object_1xx://bucketname/object_2xx://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_2xx://bucketname/path_1/object_3xx://bucketname/path_2/object_4xx://bucketname/path_1/subpath_1/object_5xx://bucketname/path_1/subpath_2/object_6xx://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_5xx://bucketname/path_1/subpath_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
含めるパスと除外するパスを同時に指定する
除外接頭辞と包括接頭辞は一緒に適用できます。その場合、除外接頭辞により、転送の包含接頭辞の上限が決まります。
両方のタイプの接頭辞を指定する場合、各除外接頭辞は、包含接頭辞で指定されたパスで始まる必要があります。
たとえば、path_1/
下にあるオブジェクトを含めて、subpath_1/
下にあるオブジェクトを除外するには、次を渡します。
include: path_1/
exclude: path_1/subpath_1/
この場合、次のオブジェクトが転送に含められます。
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_2/object_4xx://bucketname/path_1/subpath_1/object_5xx://bucketname/path_1/subpath_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://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_1xx://bucketname/object_2xx://bucketname/path_1/object_3 xx://bucketname/path_2/object_4xx://bucketname/path_1/subpath_1/object_5xx://bucketname/path_1/subpath_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://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/
次のステップ
- 特定のファイルまたはオブジェクトの転送方法を学習する。