Transferir datos a Cloud Storage o desde Cloud Storage

Parallelstore puede importar datos de Cloud Storage y exportarlos a este servicio. Las transferencias de datos te permiten cargar datos rápidamente en tu instancia de Parallelstore y usar Cloud Storage como capa de respaldo duradera para tu instancia de Parallelstore.

Las importaciones y exportaciones de datos son incrementales, es decir, solo copian los archivos que no existan en el destino o que hayan cambiado desde que se transfirieron.

Para consultar las velocidades de transferencia previstas, consulte Rendimiento.

Permisos obligatorios

El usuario o la cuenta de servicio que se utilice para iniciar la transferencia debe tener los siguientes permisos:

  • parallelstore.instances.exportData para transferir datos de Parallelstore a Cloud Storage.
  • parallelstore.instances.importData para transferir los datos a Cloud Storage.

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

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

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

Para conceder este permiso, ejecuta el siguiente 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

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. Cuando creas un proyecto, debes especificar un ID. Por ejemplo, example-project-123.
  • El 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 concreto, usa el comando gcloud projects describe:

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

Importar datos a Parallelstore

Puedes importar datos de un segmento de Cloud Storage. El contenedor puede estar en el mismo proyecto o en otro. El contenedor puede estar en una zona o región diferente a la de tu instancia de Parallelstore, pero las transferencias entre regiones pueden ser más lentas que las transferencias dentro de la misma 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

Donde:

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

Los siguientes parámetros son opcionales:

  • --request-id te permite asignar un ID único a esta solicitud. Si vuelves a intentar enviar esta solicitud con el mismo ID, el servidor la ignorará si ya se ha completado. Debe ser un UUID válido que no esté formado por ceros. Por ejemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async devuelve una respuesta inmediatamente, sin 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"
  }
}

Donde:

  • PROJECT_ID es el ID de tu proyecto Google Cloud .
  • LOCATION debe ser la zona admitida 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 de un segmento de Cloud Storage o una ruta de acceso dentro de un segmento con el formato gs://<bucket_name>/<optional_path_inside_bucket>.
  • destination-parallelstore contiene una clave path cuyo valor especifica la ruta del directorio raíz al sistema de archivos Parallelstore. Debe empezar por /. El valor predeterminado es /.

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

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

Un comando cURL de ejemplo tiene el siguiente aspecto:

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

Puede exportar datos de su instancia de Parallelstore a un segmento de Cloud Storage del mismo proyecto o de otro. El segmento puede estar en una zona o región distinta de tu instancia de Parallelstore, pero las transferencias entre regiones pueden ser más lentas que las transferencias dentro de la misma región.

gcloud

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

Donde:

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

Los siguientes parámetros son opcionales:

  • --request-id te permite asignar un ID único a esta solicitud. Si vuelves a intentar enviar esta solicitud con el mismo ID, el servidor la ignorará si ya se ha completado. Debe ser un UUID válido que no esté formado por ceros. Por ejemplo: --request-id=c288b55f-f2f0-45fe-a8ce-8afe43876d6d
  • --async devuelve una respuesta inmediatamente, sin 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/"
  }
}

Donde:

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

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

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

Un comando cURL de ejemplo tiene el siguiente aspecto:

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, necesitas el ID de la operación. El servicio devuelve este ID cuando haces 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 comando cURL de ejemplo tiene el siguiente aspecto:

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 devuelve este ID cuando haces 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 comando cURL de ejemplo tiene el siguiente aspecto:

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