Transfiere datos hacia o desde Cloud Storage

Parallelstore puede importar datos desde Cloud Storage y exportar datos a él. Las transferencias de datos te permiten cargar datos rápidamente en tu instancia de Parallelstore y usar Cloud Storage como una capa de respaldo duradera para tu instancia de Parallelstore.

Las importaciones y exportaciones de datos son incrementales, ya que solo copian los archivos que aún no existen en el destino o que cambiaron desde que se transfirieron.

Para conocer las velocidades de transferencia esperadas, consulta Rendimiento.

Permisos necesarios

La cuenta de usuario o de servicio que se usa para iniciar la transferencia requiere los siguientes permisos:

  • parallelstore.instances.exportData para transferir desde Parallelstore a Cloud Storage.
  • parallelstore.instances.importData para transferirlos a Cloud Storage.

Ambos permisos se otorgan con el rol roles/parallelstore.admin. Puedes crear un rol personalizado para otorgar permisos de forma independiente.

Además, la cuenta de servicio de Parallelstore requiere el siguiente permiso:

  • roles/storage.admin en el bucket de Cloud Storage.

Para otorgar este permiso, ejecuta el siguiente comando de 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

Tu PROJECT_NUMBER no es lo mismo que un ID de proyecto:

  • Un ID de proyecto es una cadena única que puede ser una combinación de letras, números y guiones. Especificas un ID de proyecto cuando lo creas. Por ejemplo, example-project-123
  • Un número de proyecto es un identificador único generado automáticamente para tu proyecto que solo consta de números. Por ejemplo, 1234567890

Para obtener el PROJECT_NUMBER de un ID de proyecto determinado, usa el comando gcloud projects describe:

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

Importa datos a Parallelstore

Puedes importar datos desde un bucket de Cloud Storage. El bucket puede estar en el mismo proyecto o en uno diferente. El bucket puede estar en una zona o región diferente de la instancia de Parallelstore, pero las transferencias entre regiones pueden ser más lentas que las transferencias dentro de la región.

gcloud

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

Aquí:

  • INSTANCE_ID es el nombre de tu instancia de Parallelstore.
  • --location debe ser una zona compatible.
  • --source-gcs-bucket-uri especifica el URI a un bucket de Cloud Storage o una ruta dentro de un bucket con el formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • --destination-parallelstore-path especifica la ruta del directorio raíz al sistema de archivos de Parallelstore. Debe comenzar con /. El valor predeterminado es /.

Los parámetros que aparecen a continuación son opcionales:

  • --request-id te permite asignar un ID único a esta solicitud. Si vuelves a intentar esta solicitud con el mismo ID de solicitud, el servidor la ignorará si ya se completó. Debe ser un UUID válido que no sea todo cero. Por ejemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async muestra una respuesta de inmediato, sin necesidad de esperar a que se complete la operación.

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

Aquí:

  • PROJECT_ID es el Google Cloud ID de tu proyecto.
  • LOCATION debe ser la zona compatible en la que reside tu instancia.
  • INSTANCE_ID es el nombre de tu instancia de Parallelstore.
  • source-gcs-bucket contiene una clave uri cuyo valor especifica el URI a un bucket de Cloud Storage o una ruta dentro de un bucket con el formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • destination-parallelstore contiene una clave path cuyo valor especifica la ruta de acceso del directorio raíz al sistema de archivos de Parallelstore. Debe comenzar con /. El valor predeterminado es /.

Para usar tu propia cuenta de servicio en lugar del agente de servicio administrado por Google, la solicitud admite un campo serviceAccount en el objeto JSON:

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

Un ejemplo de comando cURL se ve de la siguiente manera:

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 datos

Puedes exportar datos de tu instancia de Parallelstore a un bucket de Cloud Storage en el mismo proyecto o en uno diferente. El bucket puede estar en una zona o región diferente de la instancia de Parallelstore, pero las transferencias entre regiones pueden ser más lentas que las transferencias dentro de la región.

gcloud

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

Aquí:

  • INSTANCE_ID es el nombre de tu instancia de Parallelstore.
  • --location debe ser una zona compatible.
  • --destination-gcs-bucket-uri especifica el URI a un bucket de Cloud Storage o una ruta dentro de un bucket con el formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • --source-parallelstore-path especifica la ruta del directorio raíz al sistema de archivos de Parallelstore. Debe comenzar con /. El valor predeterminado es /.

Los parámetros que aparecen a continuación son opcionales:

  • --request-id te permite asignar un ID único a esta solicitud. Si vuelves a intentar esta solicitud con el mismo ID de solicitud, el servidor la ignorará si ya se completó. Debe ser un UUID válido que no sea todo cero. Por ejemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async muestra una respuesta de inmediato, sin necesidad de esperar a que se complete la operación.

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

Aquí:

  • PROJECT_ID es el Google Cloud ID de tu proyecto.
  • INSTANCE_ID es el nombre de tu instancia de Parallelstore.
  • LOCATION debe ser la zona compatible en la que reside tu instancia de Parallelstore.
  • --source-parallelstore contiene una clave path cuyo valor especifica la ruta de acceso del directorio raíz al sistema de archivos de Parallelstore. Debe comenzar con /. El valor predeterminado es /.
  • --destination-gcs-bucket contiene una clave uri cuyo valor especifica el URI a un bucket de Cloud Storage o una ruta dentro de un bucket con el formato gs://<bucket_name>/<optional_path_inside_bucket>.

Para usar tu propia cuenta de servicio en lugar del agente de servicio administrado por Google, la solicitud admite un campo serviceAccount en el objeto JSON:

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

Un ejemplo de comando cURL se ve de la siguiente manera:

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

Obtener operación

Para ver el estado de una operación de importación o exportación, necesitarás el ID de la operación. El servicio muestra este ID cuando realizas una solicitud de importación o exportación, y usa el siguiente 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]

Un ejemplo de comando cURL se ve de la siguiente manera:

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 operación

Para cancelar una operación de importación o exportación, necesitarás el ID de la operación. El servicio muestra este ID cuando realizas una solicitud de importación o exportación, y usa el siguiente 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]

Un ejemplo de comando cURL se ve de la siguiente manera:

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