Cloud Storage 간에 데이터 전송

Parallelstore는 Cloud Storage에서 데이터를 가져오고 Cloud Storage로 데이터를 내보낼 수 있습니다. 데이터 전송을 사용하면 Parallelstore 인스턴스에 데이터를 빠르게 로드하고 Cloud Storage를 Parallelstore 인스턴스의 내구성 있는 백업 레이어로 사용할 수 있습니다.

데이터 가져오기 및 내보내기는 증분 방식입니다. 대상에 아직 존재하지 않거나 전송된 이후 변경된 파일만 복사됩니다.

예상 전송 속도는 성능을 참고하세요.

필수 권한

전송을 시작하는 데 사용되는 사용자 또는 서비스 계정에는 다음 권한이 필요합니다.

  • parallelstore.instances.exportData를 사용해야 합니다.
  • parallelstore.instances.importData를 Cloud Storage로 전송합니다.

이 두 권한은 모두 roles/parallelstore.admin 역할로 부여됩니다. 커스텀 역할을 만들어 권한을 개별적으로 부여할 수 있습니다.

또한 Parallelstore 서비스 계정에는 다음 권한이 필요합니다.

  • Cloud Storage 버킷의 roles/storage.admin

이 권한을 부여하려면 다음 gcloud 명령어를 실행합니다.

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
  --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-parallelstore.iam.gserviceaccount.com \
  --role=roles/storage.admin

PROJECT_NUMBER프로젝트 ID와 다름:

  • 프로젝트 ID는 문자, 숫자, 하이픈의 조합으로 구성된 고유한 문자열입니다. 프로젝트를 만들 때 프로젝트 ID를 지정합니다. 예를 들면 example-project-123입니다.
  • 프로젝트 번호는 숫자로만 구성된 프로젝트의 자동 생성된 고유 식별자입니다. 예를 들면 1234567890입니다.

특정 프로젝트 ID의 PROJECT_NUMBER를 가져오려면 gcloud projects describe 명령어를 사용합니다.

gcloud projects describe PROJECT_ID --format="value(projectNumber)"

Parallelstore로 데이터 가져오기

Cloud Storage 버킷에서 데이터를 가져올 수 있습니다. 버킷은 동일한 프로젝트에 있거나 다른 프로젝트에 있을 수 있습니다. 버킷은 Parallelstore 인스턴스와 다른 영역이나 리전에 있을 수 있지만, 리전 간 전송은 리전 내 전송보다 느릴 수 있습니다.

gcloud

gcloud beta parallelstore instances import-data INSTANCE_ID \
  --location=LOCATION \
  --source-gcs-bucket-uri=gs://BUCKET_NAME \
  --destination-parallelstore-path=PS_PATH

각 항목의 의미는 다음과 같습니다.

  • INSTANCE_ID은 Parallelstore 인스턴스 이름입니다.
  • --location지원되는 영역이어야 합니다.
  • --source-gcs-bucket-urigs://<bucket_name>/<optional_path_inside_bucket> 형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정합니다.
  • --destination-parallelstore-path는 Parallelstore 파일 시스템의 루트 디렉터리 경로를 지정합니다. /로 시작해야 합니다. 기본값은 /입니다.

다음 매개변수는 선택사항입니다.

  • --request-id를 사용하면 이 요청에 고유 ID를 할당할 수 있습니다. 동일한 요청 ID를 사용하여 이 요청을 다시 시도하면 서버에서 이미 완료된 요청을 무시합니다. 0으로만 이루어지지 않은 유효한 UUID여야 합니다. 예를 들면 --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d입니다.
  • --async는 작업이 완료되기를 기다리지 않고 즉시 응답을 반환합니다.

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "source_gcs_bucket" : {
    "uri" : "gs://BUCKET_NAME/"
  },
  "destination_parallelstore" : {
    "path" : "/PATH"
  }
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 Google Cloud 프로젝트 ID입니다.
  • LOCATION은 인스턴스가 있는 지원되는 영역이어야 합니다.
  • INSTANCE_ID은 Parallelstore 인스턴스 이름입니다.
  • source-gcs-bucket에는 uri 키가 포함되며, 이 키의 값은 gs://<bucket_name>/<optional_path_inside_bucket> 형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정합니다.
  • destination-parallelstore에는 값이 Parallelstore 파일 시스템의 루트 디렉터리 경로를 지정하는 path 키가 포함되어 있습니다. /로 시작해야 합니다. 기본값은 /입니다.

Google 관리형 서비스 에이전트 대신 자체 서비스 계정을 사용하려면 요청에서 JSON 객체의 serviceAccount 필드를 지원합니다.

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

cURL 명령어 예시는 다음과 같습니다.

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
  -d '{"source_gcs_bucket": {"uri":"gs://BUCKET_NAME/"}, "destination_parallelstore": {"path":"/"}}'

데이터 내보내기

Parallelstore 인스턴스에서 동일한 프로젝트 또는 다른 프로젝트의 Cloud Storage 버킷으로 데이터를 내보낼 수 있습니다. 버킷은 Parallelstore 인스턴스와 다른 영역이나 리전에 있을 수 있지만 리전 간 전송은 리전 내 전송보다 느릴 수 있습니다.

gcloud

gcloud beta parallelstore instances export-data \
  INSTANCE_ID \
  --location=LOCATION \
  --destination-gcs-bucket-uri="gs://BUCKET_NAME" \
  --source-parallelstore-path="/"

각 항목의 의미는 다음과 같습니다.

  • INSTANCE_ID은 Parallelstore 인스턴스 이름입니다.
  • --location지원되는 영역이어야 합니다.
  • --destination-gcs-bucket-urigs://<bucket_name>/<optional_path_inside_bucket> 형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정합니다.
  • --source-parallelstore-path는 Parallelstore 파일 시스템의 루트 디렉터리 경로를 지정합니다. /로 시작해야 합니다. 기본값은 /입니다.

다음 매개변수는 선택사항입니다.

  • --request-id를 사용하면 이 요청에 고유 ID를 할당할 수 있습니다. 동일한 요청 ID를 사용하여 이 요청을 다시 시도하면 서버에서 이미 완료된 요청을 무시합니다. 0으로만 이루어지지 않은 유효한 UUID여야 합니다. 예를 들면 --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d입니다.
  • --async는 작업이 완료되기를 기다리지 않고 즉시 응답을 반환합니다.

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "source_parallelstore" : {
    "path" : "/"
  },
  "destination_gcs_bucket" : {
    "uri" : "gs://BUCKET_NAME/"
  }
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 Google Cloud 프로젝트 ID입니다.
  • INSTANCE_ID은 Parallelstore 인스턴스 이름입니다.
  • LOCATION은 Parallelstore 인스턴스가 있는 지원되는 영역이어야 합니다.
  • --source-parallelstore에는 Parallelstore 파일 시스템의 루트 디렉터리 경로를 지정하는 값이 포함된 path 키가 있습니다. /로 시작해야 합니다. 기본값은 /입니다.
  • --destination-gcs-bucket에는 uri 키가 포함되며, 이 키의 값은 gs://<bucket_name>/<optional_path_inside_bucket> 형식을 사용하여 Cloud Storage 버킷의 URI 또는 버킷 내 경로를 지정합니다.

Google 관리형 서비스 에이전트 대신 자체 서비스 계정을 사용하려면 요청에서 JSON 객체의 serviceAccount 필드를 지원합니다.

"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"

cURL 명령어 예시는 다음과 같습니다.

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json"
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
  -d '{"source_parallelstore": {"path":"/"}, "destination_gcs_bucket": {"uri":"gs://BUCKET_NAME/"}}'

작업 가져오기

가져오기 또는 내보내기 작업의 상태를 확인하려면 작업 ID가 필요합니다. 이 ID는 가져오기 또는 내보내기 요청을 할 때 서비스에서 반환하며 다음 형식을 사용합니다.

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud beta parallelstore operations describe OPERATION_ID \
  --location=LOCATION

REST

GET https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]

cURL 명령어 예시는 다음과 같습니다.

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

작업 취소

가져오기 또는 내보내기 작업을 취소하려면 작업 ID가 필요합니다. 이 ID는 가져오기 또는 내보내기 요청을 할 때 서비스에서 반환하며 다음 형식을 사용합니다.

  • operation-1234567890123-6127783ad26ea-88913969-02748053

gcloud

gcloud beta parallelstore operations cancel OPERATION_ID \
  --location=LOCATION

REST

POST https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]

cURL 명령어 예시는 다음과 같습니다.

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://parallelstore.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel