ワイルドカードを使用してソース オブジェクトをフィルタする

Storage Transfer Service ジョブは、*? などのワイルドカード文字を含む検索文字列をサポートし、ファイル名やパスを照合します。これらの検索文字列は glob パターンと呼ばれます。

glob パターンを使用すると、転送に含める移行元オブジェクトを指定できます。これにより、プレフィックスのみでフィルタリングするよりもきめ細かい制御が可能になります。

AWS S3 と Azure からの転送では、glob パターンによるフィルタリングがサポートされています。

Glob 構文

glob パターンでは、次の構文を使用してオブジェクト パスを照合します。

構文 説明
? / を除く任意の 1 文字に一致します。
* / を除く 0 個以上の文字に一致します。
** / を含む 0 個以上の文字に一致します。
[abc] 文字(abc など)のいずれか 1 つと完全に一致します。
[a-z] 包括的な範囲(a から z など)の 1 文字と完全に一致します。
[!abc] または [^abc] abc 以外の文字 1 つと一致します。
{abc,xyz} 文字列のいずれか(abcxyz など)と一致します。スラッシュ(/)や二重アスタリスク(**)を含めることはできません。
\? バックスラッシュの後のリテラル文字と一致します(例: \? はリテラルの ? と一致します)。

パターンの例

december ディレクトリのすべての .log ファイルに一致します。

logs_by_year/**/december/*.log

.(ドット)または _(アンダースコア)で始まらない data_analytics/ ディレクトリ内のすべてのファイルを転送します。

data_analytics/[!._]*

前の例を再帰的にするには:

data_analytics/**/[!._]*

2 つの特定のディレクトリからすべての PDF ファイルを転送します。

quarterly_reports/2025/{q1-final,q4-final}/*.pdf

glob パターンを指定する

転送ジョブの作成時または更新時に、glob パターンを指定できます。

gcloud CLI

gcloud CLI を使用して glob パターンでフィルタするには、--match-glob フラグを gcloud transfer jobs create コマンドまたは gcloud transfer jobs update コマンドに渡します。

gcloud transfer jobs create SOURCE DESTINATION \
  --match-glob="GLOB_PATTERN"

例:

次のコマンドは、december ディレクトリから .log ファイルのみを転送するジョブを作成します。

gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
  --match-glob="logs_by_year/**/december/*.log"

REST

REST API を使用して glob パターンでフィルタするには、transferSpecobjectConditionsmatchGlob フィールドを指定します。

{
  "description": "Transfer December logs from all years",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "awsS3DataSource": {
      "bucketName": "AWS_SOURCE_NAME",
      "awsAccessKey": {
        "accessKeyId": "AWS_ACCESS_KEY_ID",
        "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
      }
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "matchGlob": "logs_by_year/**/december/*.log"
    }
  }
}

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

Google Cloud コンソール

Google Cloud コンソールでは、glob パターンによるフィルタリングはサポートされていません。

他のフィルタとの相互作用

接頭辞フィルタまたは最終更新日時フィルタで glob パターン フィルタを使用すると、Storage Transfer Service は次の順序でフィルタを適用します。

  1. 接頭辞を含める: 考慮するオブジェクトを絞り込みます。

  2. オブジェクト条件(glob パターンと最終更新日時): インクルード プレフィックスに一致したオブジェクトをフィルタします。結果に含めるには、オブジェクトがグロブ フィルタと最終更新日時フィルタの両方に一致する必要があります。

  3. 接頭辞を除外: 結果からオブジェクトを削除します。

詳しくは、接頭辞でフィルタする最終更新日時でフィルタするをご覧ください。

包含接頭辞

glob パターンは、1 つ以上の include 接頭辞に一致するオブジェクトにのみ適用されます。

glob パターンがすべての include 接頭辞パターンと矛盾する場合、Storage Transfer Service はエラーを返します。

例: 有効な組み合わせ

  • include_prefix: ["foo/"]
  • match_glob: "foo/bar/**"

結果: 有効。サービスは、まず foo/ のオブジェクトを一覧表示し、そのリストに glob パターンを適用します。

例: 有効な組み合わせ

  • include_prefix: ["logs/2024/", "logs/2025/"]
  • match_glob: "**/*.json"

結果: 有効。サービスは 2024 ディレクトリと 2025 ディレクトリ内のすべてのオブジェクトを一覧表示し、.json で終わるファイルのみを転送します。

例: 矛盾

  • include_prefix: ["foo/"]
  • match_glob: "bar/**"

結果: エラー。match_glob パターンは、include_prefix で選択されたオブジェクトと一致しません。

除外接頭辞

除外接頭辞フィルタは、包含接頭辞フィルタと glob パターン フィルタの両方のに適用されます。

矛盾チェックは実行されません。除外プレフィックスに一致するオブジェクトは、glob パターンに一致していても、転送リストから削除されます。

  • include_prefix: ["logs/"]
  • match_glob: "**/*.log"
  • exclude_prefix: ["logs/temp/"]

結果: サービスは、logs/temp/ ディレクトリ内のオブジェクトを除き、.log で終わる logs/ のすべてのオブジェクトを転送します。