マニフェストを使用して特定のファイルまたはオブジェクトを転送する

このページでは、特定のオブジェクトまたはファイルを転送するためのマニフェストの作成方法について説明します。マニフェストは、オンプレミス用 Transfer が処理するファイルまたはオブジェクトのリストを含む CSV 形式の Cloud Storage オブジェクトです。マニフェストを使用すると、次のことができます。

  • 特定のファイルを POSIX ファイル システムから Cloud Storage バケットに転送する。
  • 特定のオブジェクトを Cloud Storage バケットから POSIX ファイル システムに転送する。
  • 特定のオブジェクトを AWS S3、Azure Blobstore、または Cloud Storage から Cloud Storage バケットに転送する。

createTransferJob にマニフェストを指定すると、マニフェストに記述されているファイルまたはオブジェクトのみが転送されます。

転送するファイルまたはオブジェクトを含むマニフェストを作成する

マニフェストは CSV 形式のファイルにする必要があります。ファイルには任意の UTF-8 文字を含めることができます。最初の列は、文字列として指定されたファイルパスまたはオブジェクト名にする必要があります。構成エラーによって無駄な API 呼び出しが大量に発生しないように、少数のファイルまたはオブジェクトで転送をテストすることをおすすめします。

ファイル転送のステータスは、転送ジョブのページでモニタリングできます。転送に失敗したファイルまたはオブジェクトは転送ログに記録されます。

ファイルのマニフェスト

POSIX ファイル システムから Cloud Storage に転送するファイルのマニフェストを作成するには、1 列に createTransferJobroot_directory からの相対ファイルパスを記述した CSV ファイルを作成します。

ファイルのマニフェストの例

次のファイルのマニフェストを作成します。

ファイルパス
rootdir/dir1/subdir1/file1.txt
rootdir/File2.txt
rootdir/dir1/subdir1/file3.txt
rootdir/dir1/subdir4/file4.txt
rootdir/dir1/subdir1/file5.txt

次のようになります。

"dir1/subdir1/file1.txt"
"File2.txt"
"dir1/subdir1/file3.txt"
"dir1/subdir4/file4.txt"
"dir1/subdir1/file5.txt"

オブジェクトのマニフェスト

オブジェクトのマニフェストを作成するには、最初の列に createTransferJobbucketName/path からの相対的なオブジェクト名を含む CSV ファイルを作成します。オブジェクト名にカンマが含まれている場合は、CSV の標準に従って適切にエスケープする必要があります。2 番目の列にオブジェクトのバージョンを指定することもできます。記述するオブジェクトはすべて、ソースパスで指定されている 1 つのバケット内に存在する必要があります。

オブジェクトのマニフェストの例

次のオブジェクトのマニフェストを作成します。

オブジェクト パス オブジェクトのバージョン(省略可)
SOURCE_PATH/object1.pdf 15857022
SOURCE_PATH/object2.pdf 585902
SOURCE_PATH/object3.pdf 74845
SOURCE_PATH/object4.jpg 149937

次のようになります。

object1.pdf,15857022
object2.pdf,585902
object3.pdf,74845
object4.jpg,149937

マニフェストを適切な場所にアップロードする

マニフェストを作成したら、マニフェストを Cloud Storage バケットにアップロードします。転送を実行するサービス エージェントには、マニフェスト ファイルをアップロードするバケットに対する storage.objects.get 権限が必要です。サービス エージェントに権限を付与する方法については、データソースへのアクセスの設定をご覧ください。

Cloud Storage バケットにあるマニフェストは、顧客管理の Cloud KMS 暗号鍵で暗号化できます。暗号化を行う場合は、マニフェストにアクセスするサービス アカウントに該当する暗号鍵が割り当てられていることを確認してください。顧客指定の暗号鍵はサポートされていません。

マニフェストを指定して転送を開始する

マニフェストに記述されているファイルまたはオブジェクトを転送するには、transferManifest フィールドを追加して transferSpec を指定し、createTransferJob API 呼び出しを行います。次に例を示します。

POST https://storagetransfer.googleapis.com/v1/transferJobs

...
    "transferSpec": {
        "PosixFilesystem": {
            "root_directory": "/home/",
        },
        "gcsDataSink": {
            "bucketName": "GCS_NEARLINE_SINK_NAME",
            "path": "GCS_SINK_PATH",
        },
        "transferManifest": {
            "location": "gs://my_bucket/sample_manifest.csv"
        }
    }

マニフェスト内のオブジェクトとファイルは、記述された順序で転送されるとは限りません。

転送先にすでに存在しているファイルがマニフェストに含まれている場合、そのファイルはスキップされます。

マニフェストに記述されたオブジェクトの別のバージョンが宛先に存在する場合、宛先にあるオブジェクトが転送元のオブジェクトのバージョンで上書きされます。宛先がバージョニングされたバケットの場合は、オブジェクトの新しいバージョンが作成されます。転送先のオブジェクトが転送元のオブジェクトと同じである場合、overwriteObjectsAlreadyExistingInSink=true が指定されていない限り、オブジェクトはスキップされます。

次のステップ