Transfira dados para ou a partir do Cloud Storage

O Parallelstore pode importar dados do Cloud Storage e exportar dados para o mesmo. As transferências de dados permitem-lhe carregar rapidamente dados para a sua instância do Parallelstore e usar o Cloud Storage como uma camada de apoio duradoura para a sua instância do Parallelstore.

As importações e exportações de dados são incrementais. Copiam apenas os ficheiros que ainda não existem no destino ou que foram alterados desde que foram transferidos.

Para ver as velocidades de transferência esperadas, consulte a secção Desempenho.

Autorizações necessárias

O utilizador ou a conta de serviço usada para iniciar a transferência requer as seguintes autorizações:

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

Ambas as autorizações são concedidas com a função roles/parallelstore.admin. Pode criar uma função personalizada para conceder autorizações de forma independente.

Além disso, a conta de serviço Parallelstore requer a seguinte autorização:

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

Para conceder esta autorização, execute o seguinte comando gcloud:

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

O seu PROJECT_NUMBER não é igual a um ID do projeto:

  • Um ID do projeto é uma string única que pode ser uma combinação de letras, números e hífens. Especifica um ID do projeto quando cria o seu projeto. Por exemplo, example-project-123.
  • Um número do projeto é um identificador exclusivo gerado automaticamente para o seu projeto, que consiste apenas em números. Por exemplo, 1234567890.

Para obter o PROJECT_NUMBER para um determinado ID do projeto, use o comando gcloud projects describe:

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

Importe dados para o Parallelstore

Pode importar dados de um contentor do Cloud Storage. O contentor pode estar no mesmo projeto ou num projeto diferente. O contentor pode estar numa 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 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

Onde:

  • INSTANCE_ID é o nome da instância do Parallelstore.
  • --location tem de ser uma zona suportada.
  • --source-gcs-bucket-uri especifica o URI de um contentor do Cloud Storage, ou um caminho num contentor, usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • --destination-parallelstore-path especifica o caminho do diretório raiz para o sistema de ficheiros Parallelstore. Tem de começar com /. A predefinição é /.

Os parâmetros seguintes são opcionais:

  • --request-id permite-lhe atribuir um ID exclusivo a este pedido. Se tentar novamente este pedido com o mesmo ID do pedido, o servidor ignora o pedido se já tiver sido concluído. Tem de ser um UUID válido que não seja composto apenas por zeros. Por exemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async devolve 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"
  }
}

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • LOCATION tem de ser a zona suportada na qual a sua 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 para um contentor do Cloud Storage ou um caminho num contentor, 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 ficheiros Parallelstore. Tem de começar com /. A predefinição é /.

Para usar a sua própria conta de serviço em vez do agente de serviço gerido pela Google, o pedido suporta um campo serviceAccount no objeto JSON:

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

Um exemplo de comando cURL tem o seguinte aspeto:

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

Pode exportar dados da sua instância do Parallelstore para um contentor do Cloud Storage no mesmo projeto ou num projeto diferente. O contentor pode estar numa zona ou numa 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 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="/"

Onde:

  • INSTANCE_ID é o nome da instância do Parallelstore.
  • --location tem de ser uma zona suportada.
  • --destination-gcs-bucket-uri especifica o URI de um contentor do Cloud Storage ou um caminho num contentor, usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • --source-parallelstore-path especifica o caminho do diretório raiz para o sistema de ficheiros Parallelstore. Tem de começar com /. A predefinição é /.

Os parâmetros seguintes são opcionais:

  • --request-id permite-lhe atribuir um ID exclusivo a este pedido. Se tentar novamente este pedido com o mesmo ID do pedido, o servidor ignora o pedido se já tiver sido concluído. Tem de ser um UUID válido que não seja composto apenas por zeros. Por exemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async devolve 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/"
  }
}

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • INSTANCE_ID é o nome da instância do Parallelstore.
  • LOCATION tem de ser a zona suportada na qual a sua 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 ficheiros Parallelstore. Tem de começar com /. A predefinição é /.
  • --destination-gcs-bucket contém uma chave uri cujo valor especifica o URI para um contentor do Cloud Storage ou um caminho num contentor, usando o formato gs://<bucket_name>/<optional_path_inside_bucket>.

Para usar a sua própria conta de serviço em vez do agente de serviço gerido pela Google, o pedido suporta um campo serviceAccount no objeto JSON:

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

Um exemplo de comando cURL tem o seguinte aspeto:

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

Obter operação

Para ver o estado de uma operação de importação ou exportação, precisa do ID da operação. Este ID é devolvido pelo serviço quando faz um pedido 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 tem o seguinte aspeto:

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, precisa do ID da operação. Este ID é devolvido pelo serviço quando faz um pedido 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 tem o seguinte aspeto:

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