이 페이지에서는 REST API를 통해 직접 Storage Transfer Service를 사용하는 방법과 자바와 Python을 프로그래매틱 방식으로 사용하는 두 가지 일반적인 시나리오를 보여줍니다. Google Cloud Console을 사용하여 전송 작업을 만들려면 Console로 전송 만들기 및 관리를 참조하세요.
Storage Transfer API를 사용하여 전송 작업을 프로그래매틱 방식으로 구성하거나 편집할 때 시간은 UTC여야 합니다. 전송 작업의 일정 지정에 대한 자세한 내용은 일정을 참조하세요.
시작하기 전에
전송 작업을 만들기 전에 다음을 수행하세요.
다음 역할 중 하나가 할당되었는지 확인하여 Storage Transfer Service 액세스 권한이 있는지 확인합니다.
- roles/owner
- roles/editor
- roles/storagetransfer.admin
- roles/storagetransfer.user
최소한의 roles/storagetransfer.user 권한을 포함하는 커스텀 역할입니다.
프로젝트 수준 권한 추가 및 보기에 대한 자세한 내용은 프로젝트에 IAM 권한 사용을 참조하세요.
자세한 내용은 액세스 문제 해결을 참조하세요.
Storage Transfer Service의 IAM 역할과 권한에 대한 자세한 내용은 IAM 역할 및 권한을 사용한 액세스 제어를 참조하세요.
Amazon S3에서 Cloud Storage로 이전
이 예시에서는 파일을 Amazon S3에서 Cloud Storage 버킷으로 이동하는 방법을 학습합니다. 데이터를 Amazon S3에서 Cloud Storage로 이동하면 어떤 영향이 있는지 알아보려면 액세스 구성과 가격 책정을 검토하세요.
전송 작업을 만들려면 다음을 사용하세요.
전송 작업을 만들 때 Amazon S3 버킷 소스 이름에 bucketName
의 s3://
프리픽스를 포함하지 마세요.
REST
transferJobs create를 사용하는 요청:POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "scheduleEndDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }응답:
200 OK { "transferJob": [ { "creationTime": "2015-01-01T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2015-01-01T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "scheduleEndDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" }, "objectConditions": {}, "transferOptions": {} } } ] }
자바
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
Python
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
Microsoft Azure Blob Storage와 Cloud Storage 간 전송
이 예시에서는 Microsoft Azure Storage 공유 액세스 서명(SAS) 토큰을 사용하여 Microsoft Azure Storage에서 Cloud Storage 버킷으로 파일을 이동하는 방법을 알아봅니다.
Microsoft Azure Storage SAS에 대한 자세한 내용은 공유 액세스 서명(SAS)을 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여를 참조하세요.
시작하기 전에, 액세스 구성과 가격 책정을 검토하여 데이터를 Microsoft Azure에서 Cloud Storage로 이동할 때 어떤 영향이 있는지 충분히 이해하세요.
REST
transferJobs create를 사용하는 요청:POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 14, "month": 2, "year": 2020 }, "scheduleEndDate": { "day": 14 "month": 2, "year": 2020 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "azureBlobStorageDataSource": { "storageAccount": "AZURE_SOURCE_NAME", "azureCredentials": { "sasToken": "AZURE_SAS_TOKEN", }, "container": "AZURE_CONTAINER", }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }응답:
200 OK { "transferJob": [ { "creationTime": "2020-02-14T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2020-02-14T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 14 "month": 2, "year": 2020 }, "scheduleEndDate": { "day": 14, "month": 2, "year": 2020 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "azureBlobStorageDataSource": { "storageAccount": "AZURE_SOURCE_NAME", "azureCredentials": { "sasToken": "AZURE_SAS_TOKEN", }, "container": "AZURE_CONTAINER", }, "objectConditions": {}, "transferOptions": {} } } ] }
Cloud Storage 버킷 간의 전송
이 예시에서는 하나의 Cloud Storage 버킷에서 다른 Cloud Storage 버킷으로 파일을 이동하는 방법을 알아봅니다. 예를 들어 데이터를 다른 위치의 버킷으로 복제할 수 있습니다.
전송 작업을 만들려면 다음을 사용하세요.
REST
transferJobs create를 사용하는 요청:POST https://storagetransfer.googleapis.com/v1/transferJobs { "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_NEARLINE_SINK_NAME" }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } }응답:
200 OK { "transferJob": [ { "creationTime": "2015-01-01T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2015-01-01T01:01:00.000000000Z", "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_NEARLINE_SINK_NAME" }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000.000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } } ] }
자바
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
Python
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
소스 및 대상 경로 지정
소스 및 대상 경로를 사용하면 Cloud Storage 버킷으로 데이터를 전송할 때 소스 및 대상 디렉터리를 지정할 수 있습니다. 예를 들어 file1.txt
및 file2.txt
파일이 있고 B
라는 Cloud Storage 버킷이 있다고 가정합니다. my-stuff
라는 대상 경로를 설정하면 전송이 완료된 후 파일은 gs://B/my-stuff/file1.txt
와 gs://B/my-stuff/file2.txt
에 있습니다.
소스 경로 지정
전송 작업 생성 시 소스 경로를 지정하려면 TransferSpec
사양의 gcsDataSource
필드에 path
필드를 추가합니다.
{ gcsDataSource: { bucketName: "SOURCE_BUCKET", path: "SOURCE_PATH/", }, }
예를 들면 다음과 같습니다.
- SOURCE_BUCKET: 소스 Cloud Storage 버킷입니다.
- SOURCE_PATH: 소스 Cloud Storage 경로입니다.
대상 경로 지정
전송 작업 생성 시 대상 폴더를 지정하려면 TransferSpec
사양의 gcsDataSink
필드에 path
필드를 추가합니다.
{ gcsDataSink: { bucketName: "DESTINATION_BUCKET", path: "DESTINATION_PATH/", }, }
예를 들면 다음과 같습니다.
- DESTINATION_BUCKET: 대상 Cloud Storage 버킷
- DESTINATION_PATH: 대상 Cloud Storage 경로
전체 요청 예시
다음은 전체 요청의 예시입니다.
POST https://storagetransfer.googleapis.com/v1/transferJobs { "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", "path": "GCS_SOURCE_PATH", }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME", "path": "GCS_SINK_PATH", }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } }
전송 작업 상태 확인
transferJobs.create
를 사용하면 TransferJob
리소스가 반환됩니다.
작업을 만든 후 transferJobs.get
을 사용하여 전송 상태를 확인할 수 있습니다. 전송 작업의 동작이 시작된 경우 채워진 latestOperationName
필드가 포함된 TransferJob
을 반환합니다. 그렇지 않으면 전송 작업의 동작이 시작되지 않은 경우 latestOperationName
필드가 비어 있습니다.
전송 작업 상태 확인
REST
transferJobs get을 사용하는 요청:GET https://storagetransfer.googleapis.com/v1/{jobName="name"}
자바
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
Python
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
전송 작업 취소
단일 전송 작업을 취소하려면 transferOperations cancel
메서드를 사용합니다. 예약되어 있는 이후의 전송 작업을 포함하여 전체 전송 작업을 삭제하려면 transferJobs patch
메서드를 사용하여 전송 작업 상태를 DELETED
로 설정합니다. 작업의 전송 상태를 업데이트해도 현재 실행 중인 전송 작업에는 영향을 주지 않습니다. 진행 중인 전송 작업을 취소하려면 transferOperations cancel
메서드를 사용합니다.
다음 단계
Cloud Storage 사용 방법을 알아봅니다.