Transferir dados de ou para o Cloud Storage

O Parallelstore pode importar e exportar dados do Cloud Storage. As transferências de dados permitem carregar dados rapidamente na instância do Parallelstore e usar o Cloud Storage como uma camada de suporte durável para a instância do Parallelstore.

As importações e exportações de dados são incrementais. Elas copiam apenas os arquivos que ainda não existem no destino ou que mudaram desde que foram transferidos.

Para saber as velocidades de transferência esperadas, consulte Performance.

Permissões necessárias

A conta de usuário ou de serviço usada para iniciar a transferência requer as seguintes permissões:

  • parallelstore.instances.exportData para transferir do Parallelstore para o Cloud Storage.
  • parallelstore.instances.importData para transferir para o Cloud Storage.

Essas duas permissões são concedidas com o papel roles/parallelstore.admin. Você pode criar um papel personalizado para conceder permissões de forma independente.

Além disso, a conta de serviço do Parallelstore exige a seguinte permissão:

  • roles/storage.admin no bucket do Cloud Storage.

Para conceder essa permissão, execute o seguinte comando 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

O PROJECT_NUMBER não é o mesmo que um ID do projeto:

  • Um ID do projeto é uma string exclusiva que pode ser uma combinação de letras, números e hifens. Você especifica um ID de projeto ao criar seu projeto. Por exemplo, example-project-123.
  • O número do projeto é um identificador exclusivo gerado automaticamente para seu projeto que consiste apenas de números. Por exemplo, 1234567890.

Para conseguir o PROJECT_NUMBER de um determinado ID do projeto, use o comando gcloud projects describe:

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

Importar dados para o Parallelstore

É possível importar dados de um bucket do Cloud Storage. O bucket pode estar no mesmo projeto ou em um diferente. O bucket pode estar em uma zona ou região diferente da sua instância do Parallelstore, mas as transferências entre regiões podem ser mais lentas do que as transferências dentro da região.

gcloud

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

Em que:

  • INSTANCE_ID é o nome da instância do Parallelstore.
  • --location precisa ser uma zona com suporte.
  • --source-gcs-bucket-uri especifica o URI para um bucket do Cloud Storage ou um caminho dentro de um bucket usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • --destination-parallelstore-path especifica o caminho do diretório raiz para o sistema de arquivos do Parallelstore. Precisa começar com /. O padrão é /.

Os seguintes parâmetros são opcionais:

  • --request-id permite atribuir um ID exclusivo a essa solicitação. Se você repetir essa solicitação usando o mesmo ID, o servidor vai ignorá-la se ela já tiver sido concluída. Precisa ser um UUID válido que não seja composto apenas de zeros. Por exemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async retorna uma resposta imediatamente, sem aguardar a conclusão da operação.

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"
  }
}

Em que:

  • PROJECT_ID é o ID do Google Cloud projeto.
  • LOCATION precisa ser a zona com suporte em que a instância reside.
  • INSTANCE_ID é o nome da instância do Parallelstore.
  • source-gcs-bucket contém uma chave uri cujo valor especifica o URI de um bucket do Cloud Storage ou um caminho dentro de um bucket usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • destination-parallelstore contém uma chave path cujo valor especifica o caminho do diretório raiz para o sistema de arquivos do Parallelstore. Precisa começar com /. O padrão é /.

Para usar sua própria conta de serviço em vez do agente de serviço gerenciado pelo Google, a solicitação oferece suporte a um campo serviceAccount no objeto JSON:

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

Um exemplo de comando cURL é parecido com este:

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":"/"}}'

Exportar dados

É possível exportar dados da sua instância do Parallelstore para um bucket do Cloud Storage no mesmo projeto ou em outro. O bucket pode estar em uma zona ou região diferente da sua instância do Parallelstore, mas as transferências entre regiões podem ser mais lentas do que as transferências dentro da região.

gcloud

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

Em que:

  • INSTANCE_ID é o nome da instância do Parallelstore.
  • --location precisa ser uma zona com suporte.
  • --destination-gcs-bucket-uri especifica o URI de um bucket do Cloud Storage ou um caminho dentro de um bucket usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • --source-parallelstore-path especifica o caminho do diretório raiz para o sistema de arquivos do Parallelstore. Precisa começar com /. O padrão é /.

Os seguintes parâmetros são opcionais:

  • --request-id permite atribuir um ID exclusivo a essa solicitação. Se você repetir essa solicitação usando o mesmo ID, o servidor vai ignorá-la se ela já tiver sido concluída. Precisa ser um UUID válido que não seja composto apenas de zeros. Por exemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async retorna uma resposta imediatamente, sem aguardar a conclusão da operação.

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/"
  }
}

Em que:

  • PROJECT_ID é o ID do Google Cloud projeto.
  • INSTANCE_ID é o nome da instância do Parallelstore.
  • LOCATION precisa ser a zona com suporte em que a instância do Parallelstore está localizada.
  • --source-parallelstore contém uma chave path cujo valor especifica o caminho do diretório raiz para o sistema de arquivos do Parallelstore. Precisa começar com /. O padrão é /.
  • --destination-gcs-bucket contém uma chave uri cujo valor especifica o URI de um bucket do Cloud Storage ou um caminho dentro de um bucket usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.

Para usar sua própria conta de serviço em vez do agente de serviço gerenciado pelo Google, a solicitação oferece suporte a um campo serviceAccount no objeto JSON:

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

Um exemplo de comando cURL é parecido com este:

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/"}}'

Receber operação

Para conferir o status de uma operação de importação ou exportação, você precisa do ID da operação. Esse ID é retornado pelo serviço quando você faz uma solicitação de importação ou exportação e usa o seguinte formato:

  • 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]

Um exemplo de comando cURL é parecido com este:

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

Cancelar operação

Para cancelar uma operação de importação ou exportação, você precisa do ID da operação. Esse ID é retornado pelo serviço quando você faz uma solicitação de importação ou exportação e usa o seguinte formato:

  • 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]

Um exemplo de comando cURL é parecido com este:

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