매니페스트를 사용하여 특정 파일 또는 객체 전송

이 페이지에서는 전송하려는 특정 객체 또는 파일의 매니페스트를 만드는 방법을 보여줍니다. 매니페스트는 Storage Transfer Service가 작업을 수행할 파일 또는 객체 목록이 포함된 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로 전송할 파일의 매니페스트를 만들려면 createTransferJob에서 root_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 표준에 따라 이를 적절히 이스케이프해야 합니다. 또한 객체 버전을 사용해서 선택적인 보조 열을 지정할 수도 있습니다. 나열된 모든 객체는 소스 경로에 지정된 하나의 버킷에 있어야 합니다.

객체의 매니페스트 예시

다음 객체의 매니페스트:

객체 경로 객체 버전(선택사항)
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 KMS 암호화 키를 사용하여 Cloud Storage 버킷에 있는 매니페스트를 암호화할 수 있습니다. 이 경우 매니페스트에 액세스하는 서비스 계정에 해당하는 암호화 키가 할당되었는지 확인합니다. 고객 제공 키는 지원되지 않습니다.

지정한 매니페스트로 전송 시작

매니페스트에 나열된 파일 또는 객체를 전송하려면 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를 지정할 때까지 객체를 건너뜁니다.

다음 단계