Transferir dados de ou para o Cloud Storage

O Parallelstore pode importar e exportar dados para o 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 backup durável para a instância do Parallelstore.

As importações e exportações de dados são incrementais. Elas só copiam arquivos que ainda não existem no destino ou que foram alterados desde a transferência.

Para conferir as velocidades de transferência esperadas, consulte Desempenho.

Permissões necessárias

O usuário ou a conta de serviço usada para iniciar a transferência precisa das 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. É possível criar uma função personalizada para conceder permissões de forma independente.

Além disso, a conta de serviço do Parallelstore requer 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 do projeto ao criar o projeto. Por exemplo, example-project-123.
  • Um número do projeto é um identificador exclusivo gerado automaticamente para o projeto que consiste apenas em números. Por exemplo, 1234567890.

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

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 projeto diferente. O bucket pode estar em uma zona ou região diferente da instância do Parallelstore, mas as transferências entre regiões podem ser mais lentas do que as transferências na mesma 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 compatível.
  • --source-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>.
  • --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ê tentar novamente essa solicitação usando o mesmo ID, o servidor vai ignorar a solicitação se ela já tiver sido concluída. Precisa ser um UUID válido UUID Por exemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async retorna uma resposta imediatamente, sem esperar que a operação seja concluída.

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 compatível 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 é semelhante a 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 instância do Parallelstore para um bucket do Cloud Storage no mesmo projeto ou em um projeto diferente. O bucket pode estar em uma zona ou região diferente da instância do Parallelstore, mas as transferências entre regiões podem ser mais lentas do que as transferências na mesma 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 compatível.
  • --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ê tentar novamente essa solicitação usando o mesmo ID, o servidor vai ignorar a solicitação se ela já tiver sido concluída. Precisa ser um UUID válido UUID Por exemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async retorna uma resposta imediatamente, sem esperar que a operação seja concluída.

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 compatível em que a instância do Parallelstore reside.
  • --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 é semelhante a 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 é semelhante a 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 é semelhante a 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