이 페이지에서는 Amazon S3에서 Cloud Storage로의 전송 작업을 만들고 시작하는 방법을 보여줍니다.
권한 구성하기
전송을 만들기 전에 Amazon S3 버킷에 대한 권한을 구성해야 합니다. 자세한 내용은 소스에 대한 액세스 권한 구성: Amazon S3를 참조하세요.
다음 Google Cloud 항목에 대한 권한도 구성해야 합니다.
전송을 만드는 데 사용되는 사용자 계정. 이 계정은 Google Cloud 콘솔에 로그인된 계정이거나 `gcloud` CLI에 인증할 때 지정된 계정입니다. 사용자 계정은 일반 사용자 계정이나 사용자 관리형 서비스 계정일 수 있습니다. | |
Google 관리 서비스 계정은 서비스 에이전트라고도 하며 Storage Transfer Service에서 사용됩니다. 이 계정은 일반적으로 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 형식을 사용하는 이메일 주소로 식별됩니다.
|
자세한 내용은 에이전트리스 전송 권한을 참조하세요.
이그레스 옵션
Storage Transfer Service는 S3 데이터를 Cloud Storage로 전송하는 방법에 대한 여러 가지 옵션을 제공합니다.
이그레스 옵션 | 설명 |
---|---|
기본 에이전트리스 | 이 옵션에서는 S3의 관리형 에이전트리스 전송을 사용합니다. Amazon에서 이그레스 요금을 청구합니다.
이 옵션을 사용하려면 이 페이지의 안내를 따르세요. |
CloudFront 배포 | Amazon CloudFront 배포를 이그레스 경로로 사용합니다. CloudFront를 통한 데이터 전송의 AWS 이그레스 비용이 S3에서 직접 전송에 비해 저렴할 수 있습니다. 자세한 내용은 CloudFront 가격 책정 및 S3 이그레스 요금을 참조하세요.
CloudFront를 통해 S3에서 전송의 안내를 수행하여 배포를 설정하고 전송을 만듭니다. |
관리형 비공개 네트워크 | Google 관리형 네트워크를 통해 데이터를 전송합니다. S3 이그레스 요금은 청구하지 않습니다. 대신 Google Cloud에 GiB당 요금이 청구됩니다. 자세한 내용은 가격 책정 페이지를 참조하세요. AWS에서 작업 비용이 계속 청구될 수 있습니다(예: LIST 또는 GET 호출). 자세한 내용은 가격 책정을 참조하세요.
관리형 비공개 네트워크를 통한 모든 프로젝트의 전송에서 같은 대역폭을 공유합니다. 사용량이 높으면 전송 속도가 느릴 수 있습니다. 파일이 많이 포함된 전송이 파일이 적게 포함된 전송보다 더 많은 영향을 받습니다. 이 옵션을 사용하려면 이 페이지의 안내를 따르세요. Google Cloud 콘솔에서 관리형 비공개 네트워크 옵션 또는 REST API의 managedPrivateNetwork 필드를 지정합니다. gcloud CLI 및 클라이언트 라이브러리에서는 관리형 비공개 네트워크 전송을 지원하지 않습니다. 지원되는 리전을 참조하세요. |
에이전트 기반 | Amazon S3를 포함한 모든 S3 호환 스토리지에 유효합니다. S3 버킷에 액세스할 수 있는 머신에 에이전트 소프트웨어를 설치하면 네트워크 경로와 대역폭을 제어할 수 있습니다. 이 옵션을 사용하려면 에이전트와 에이전트 풀이 필요합니다.
이 옵션을 사용하려면 S3 호환 소스에서 전송의 안내를 따르세요. |
지원되는 리전
Storage Transfer Service는 다음 Amazon S3 리전을 지원합니다.
af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ap-southeast-3 |
ap-southeast-4 ca-central-1 ca-west-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2
|
eu-west-3 il-central-1 me-central-1 me-south-1 sa-east-1 us-east-1 us-east-2 us-west-1 us-west-2
|
관리형 비공개 네트워크를 사용하는 전송에서 다음 AWS 리전을 지원합니다.
us-east-1 us-east-2 us-west-1 us-west-2 ca-west-1 ca-central-1 |
전송 옵션
S3에서 Cloud Storage로 전송할 때 다음과 같은 Storage Transfer Service 기능을 사용할 수 있습니다.
- 매니페스트를 사용하여 특정 파일 전송
- 작업할 Storage Transfer Service 파일의 목록을 전달할 수 있습니다. 자세한 내용은 매니페스트를 사용하여 특정 파일 또는 객체 전송을 참조하세요.
- 스토리지 클래스 지정
- 대상 버킷의 데이터에 사용할 Cloud Storage 스토리지 클래스를 지정할 수 있습니다. REST 세부정보는
StorageClass
옵션을 참조하거나 Google Cloud CLI에서--custom-storage-class
플래그를 사용하세요.대상 버킷에 자동 클래스가 사용 설정되면 스토리지 클래스 설정이 무시됩니다. 자동 클래스를 사용 설정하면 처음에는 버킷으로 전송된 객체가 Standard Storage로 설정됩니다.
- 메타데이터 보존
-
S3에서 파일을 전송할 때 Storage Transfer Service는 선택적으로 특정 속성을 커스텀 메타데이터로 보존할 수 있습니다.
보존할 수 있는 메타데이터와 전송을 구성하는 방법에 대한 자세한 내용은 메타데이터 보존의 Amazon S3에서 Cloud Storage로 전송 섹션을 참조하세요.
- 이벤트 기반 전송
- Storage Transfer Service는 Amazon SQS로 전송된 Amazon S3 이벤트 알림을 리슨하여 소스 위치에 추가되거나 업데이트된 데이터를 자동으로 전송할 수 있습니다. 자세한 내용은 이벤트 기반 전송을 참조하세요.
- 로깅 및 모니터링
- Cloud Logging 및 Cloud Monitoring에서 S3에서의 전송을 볼 수 있습니다. 자세한 내용은 Storage Transfer Service용 Cloud Logging 및 전송 작업 모니터링을 참조하세요. 또한 Pub/Sub 알림을 구성할 수 있습니다.
전송 만들기
Storage Transfer Service는 전송을 만드는 데 사용되는 인터페이스를 여러 개 제공합니다.
전송 작업 이름에 개인 식별 정보(PII) 또는 보안 데이터와 같은 민감한 정보를 포함하지 마세요. 리소스 이름은 다른 Google Cloud 리소스 이름으로 전파될 수 있으며 프로젝트 외부의 Google 내부 시스템에 노출될 수 있습니다.
Google Cloud 콘솔
Google Cloud 콘솔의 Storage Transfer Service 페이지로 이동합니다.
전송 작업 만들기를 클릭합니다. 전송 작업 만들기 페이지가 표시됩니다.
소스 유형에서 Amazon S3를 선택합니다.
대상 유형으로 Google Cloud Storage를 선택합니다.
예약 모드를 선택합니다. 일괄 전송은 일회성 또는 예약 기반으로 실행됩니다. 이벤트 기반 전송은 소스를 지속적으로 모니터링하고 데이터가 추가되거나 수정되면 데이터를 전송합니다.
이벤트 기반 전송을 구성하려면 이벤트 기반 전송의 안내를 수행합니다.
다음 단계를 클릭합니다.
버킷 또는 폴더 이름 필드에 소스 버킷 이름을 입력합니다.
버킷 이름은 AWS 관리 콘솔에 나타나는 이름입니다.
CloudFront 배포를 사용하여 S3에서 전송하는 경우 CloudFront 도메인 필드에 배포 도메인 이름을 입력합니다. 예를 들면
https://dy1h2n3l4ob56.cloudfront.net
입니다. CloudFront 배포를 구성하려면 CloudFront를 통해 S3에서 전송을 참조하세요.이 전송에 관리형 비공개 네트워크를 사용하려면 체크박스를 선택합니다. 자세한 내용은 이그레스 옵션을 참조하세요.
Amazon Web Services(AWS) 인증 방법을 선택합니다. 자세한 내용은 소스에 대한 액세스 권한 구성: Amazon S3를 참조하세요.
액세스 키: 액세스 키 ID 필드에 액세스 키를 입력하고 보안 비밀 액세스 키 필드에 액세스 키와 연관된 보안 비밀을 입력합니다.
ID 제휴를 위한 AWS IAM 역할: AWS IAM 역할 ARN 필드에 다음 구문으로 ARN을 입력합니다.
arn:aws:iam::ACCOUNT:role/ROLE-NAME-WITH-PATH
각 항목의 의미는 다음과 같습니다.
ACCOUNT
: 하이픈이 없는 AWS 계정 ID입니다.ROLE-NAME-WITH-PATH
: 경로가 포함된 AWS 역할 이름입니다.
ARN에 관한 자세한 내용은 IAM ARN을 참조하세요.
보안 비밀 리소스: Secret Manager에 저장된 Amazon 사용자 인증 정보를 사용하려면 이 옵션을 선택합니다. 목록에서 보안 비밀을 선택하거나
projects/PROJECT_NUMBER/secrets/SECRET_NAME
형식으로 직접 입력합니다.
이벤트 기반 전송인 경우 다음 형식을 사용하는 Amazon SQS 큐 ARN을 입력합니다.
arn:aws:sqs:us-east-1:1234567890:event-queue
- 원하는 경우 프리픽스를 기준으로 객체를 필터링하거나 최종 수정 날짜를 기준으로 객체를 필터링하도록 선택합니다. 폴더를 소스 위치로 지정한 경우 프리픽스 필터는 해당 폴더를 기준으로 합니다. 예를 들어 소스가
my-test-bucket/path/
인 경우file
의 포함 필터는my-test-bucket/path/file
로 시작하는 모든 파일을 포함합니다. 다음 단계를 클릭합니다.
버킷 또는 폴더 필드에 대상 버킷과 폴더 이름(선택사항)을 입력하거나 찾아보기를 클릭하여 현재 프로젝트의 기존 목록에서 버킷을 선택합니다. 새 버킷을 만들려면 새 버킷 만들기를 클릭합니다.
다음 단계를 클릭합니다.
전송 작업의 설정을 선택합니다.
설명 필드에 전송 설명을 입력합니다. 작업을 구분할 수 있도록 의미 있고 고유한 설명을 입력하는 것이 좋습니다.
메타데이터 옵션에서 기본 옵션을 사용하도록 선택하거나 옵션 보기 및 선택을 클릭하여 지원되는 모든 메타데이터의 값을 지정합니다. 자세한 내용은 메타데이터 보존을 참조하세요.
덮어쓸 시점에서 다음 중 하나를 선택합니다.
다른 경우: 이름이 같은 소스 파일에 다른 Etag 또는 체크섬 값이 있는 경우 대상 파일을 덮어씁니다.
항상: 소스 파일 이름이 같으면 동일하더라도 항상 대상 파일을 덮어씁니다.
삭제 시점에서 다음 중 하나를 선택합니다.
삭제 안함: 소스 또는 대상 위치에서 파일을 삭제하지 않습니다.
전송 후 소스에서 파일 삭제: 파일이 대상으로 전송된 후 소스에서 파일을 삭제합니다.
소스에도 없는 경우 대상 위치에서 파일 삭제: 대상 Cloud Storage 버킷의 파일이 소스에도 없는 경우 Cloud Storage 버킷에서 파일을 삭제합니다.
이 옵션을 사용하면 대상 Cloud Storage 버킷이 소스와 정확하게 일치합니다.
알림 옵션에서 Pub/Sub 주제 및 알림을 받을 이벤트를 선택합니다. 자세한 내용은 Pub/Sub 알림을 참조하세요.
다음 단계를 클릭합니다.
예약 옵션을 선택합니다.
한 번 실행 드롭다운 목록에서 다음 중 하나를 선택합니다.
한 번 실행: 선택한 시간에 단일 전송을 실행합니다.
매일 실행: 선택한 시점부터 매일 전송을 실행합니다.
선택사항인 종료일을 입력하거나 종료일을 비워 두어 전송을 계속 실행할 수 있습니다.
매주 실행: 선택한 시간부터 매주 전송을 실행합니다.
커스텀 빈도로 실행: 선택한 빈도로 전송을 실행합니다. 시간, 일 또는 주라는 정기적인 간격으로 전송을 반복하도록 선택할 수 있습니다.
선택사항인 종료일을 입력하거나 종료일을 비워 두어 전송을 계속 실행할 수 있습니다.
지금 시작 드롭다운 목록에서 다음 중 하나를 선택합니다.
지금 시작: 만들기를 클릭한 후 전송을 시작합니다.
시작일: 선택한 날짜 및 시간에 전송을 시작합니다. 캘린더를 클릭하여 시작일을 선택할 캘린더를 표시합니다.
전송 작업을 만들려면 만들기를 클릭합니다.
gcloud CLI
새 전송 작업을 만들려면 gcloud transfer jobs create
명령어를 사용합니다. 일정 또는 --do-not-run
이 지정되지 않은 한, 새 작업을 만들면 지정된 전송이 시작됩니다.
gcloud CLI는 CloudFront 또는 관리형 비공개 네트워크를 통한 전송을 지원하지 않습니다.
gcloud transfer jobs create \
s3://S3_BUCKET_NAME gs://STORAGE_BUCKET_NAME \
--source-creds-file="relative_path/to/creds.json"
각 항목의 의미는 다음과 같습니다.
S3_BUCKET_NAME는 이 전송의 데이터 소스입니다. 원하는 경우
s3://S3_BUCKET_NAME/S3_FOLDER_PATH
경로를 포함할 수 있습니다.STORAGE_BUCKET_NAME은 전송할 Cloud Storage 버킷입니다. 특정 디렉터리로 전송하려면 후행 슬래시를 포함하여
gs://STORAGE_BUCKET_NAME/STORAGE_FOLDER_PATH/
를 지정합니다.--source-creds-file
은 머신에서 전송 소스의 AWS 사용자 인증 정보가 포함된 로컬 파일에 대한 상대 경로를 지정합니다. 콘텐츠는 다음 JSON 형식이어야 합니다.{ "accessKeyId": string, "secretAccessKey": string }
추가로 선택할 수 있는 옵션은 다음과 같습니다.
--do-not-run
은 명령어를 제출할 때 Storage Transfer Service가 작업을 실행하지 못하도록 방지합니다. 작업을 실행하려면 이를 업데이트해서 일정을 추가하거나jobs run
을 사용해서 수동으로 시작합니다.--manifest-file
은 소스에서 전송할 파일 목록이 포함된 Cloud Storage의 CSV 파일 경로를 지정합니다. 매니페스트 파일 형식 지정은 매니페스트를 사용하여 특정 파일 또는 객체 전송을 참조하세요.작업 정보:
--name
및--description
을 지정할 수 있습니다.일정:
--schedule-starts
,--schedule-repeats-every
,--schedule-repeats-until
,--do-not-run
을 지정합니다.객체 조건: 조건을 사용해서 전송되는 객체를 결정합니다. 여기에는
--include-prefixes
및--exclude-prefixes
와--include-modified-[before | after]-[absolute | relative]
의 시간 기준 조건이 포함됩니다. 소스로 폴더를 지정한 경우 프리픽스 필터는 해당 폴더를 기준으로 합니다. 자세한 내용은 프리픽스로 소스 객체 필터링을 참조하세요.전송 옵션: 대상 파일(
--overwrite-when=different
또는always
)을 덮어쓸지 여부와 전송 중 또는 전송 후에 특정 파일을 삭제할지 여부(--delete-from=destination-if-unique
또는source-after-transfer
)를 지정하고, 보존할 메타데이터 값(--preserve-metadata
)을 지정하며, 필요한 경우 전송된 객체에 스토리지 클래스를 선택적으로 설정할 수 있습니다(--custom-storage-class
).알림:
--notification-pubsub-topic
,--notification-event-types
,--notification-payload-format
으로 Pub/Sub 전송 알림을 구성합니다.Cloud Logging:
--log-actions
및--log-action-states
로 Cloud Logging을 사용 설정합니다. 자세한 내용은 Storage Transfer Service의 Cloud Logging을 참조하세요.
모든 옵션을 보려면 gcloud transfer jobs create --help
를 실행하거나 gcloud
참고 문서를 참조하세요.
REST
다음 샘플에서는 REST API를 통해 Storage Transfer Service를 사용하는 방법을 보여줍니다.
Storage Transfer Service API를 사용하여 전송 작업을 구성하거나 편집할 때 시간은 UTC여야 합니다. 전송 작업 일정을 지정하는 방법에 대한 자세한 내용은 일정을 참조하세요.
전송 작업을 만들 때 Amazon S3 버킷 소스 이름에 bucketName
의 s3://
접두사를 포함하지 마세요.
에이전트리스 전송
다음 예시에서는 표준 에이전트리스 구성을 사용하여 전송 작업을 만듭니다. 자세한 내용은 transferJobs.create 참조를 확인하세요.
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
다른 인증 옵션은 소스에 대한 액세스 권한 구성: Amazon S3를 참조하세요.
CloudFront 배포
CloudFront 배포를 통해 S3에서 전송하는 경우 배포 도메인 이름을 transferSpec.awsS3DataSource.cloudfrontDomain
필드 값으로 지정합니다.
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
관리형 비공개 네트워크
Google 관리 비공개 네트워크를 사용하여 S3에서 전송하려면 transferSpec.awsS3DataSource.managedPrivateNetwork
필드를 지정합니다.
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "managedPrivateNetwork": TRUE, "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
클라이언트 라이브러리
다음 샘플에서는 Go, 자바, Node.js, Python을 사용하여 프로그래매틱 방식으로 Storage Transfer Service를 사용하는 방법을 보여줍니다.
전송 작업을 프로그래매틱 방식으로 구성하거나 편집할 때 시간은 UTC여야 합니다. 전송 작업 일정을 지정하는 방법에 대한 자세한 내용은 일정을 참조하세요.
Storage Transfer Service 클라이언트 라이브러리에 대한 자세한 내용은 Storage Transfer Service 클라이언트 라이브러리 시작하기를 참조하세요.
Amazon S3에서 Cloud Storage로 이전
이 예시에서는 파일을 Amazon S3에서 Cloud Storage 버킷으로 이동하는 방법을 학습합니다.
전송 작업을 만들 때 Amazon S3 버킷 소스 이름에 bucketName
의 s3://
접두사를 포함하지 마세요.
Storage Transfer Service 클라이언트 라이브러리에서는 CloudFront 또는 관리형 비공개 네트워크를 통한 전송을 지원하지 않습니다.
Go
Java
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.
Node.js
Python
이전 샘플을 찾고 계신가요? Storage Transfer Service 이전 가이드를 참조하세요.