Configuraciones de almacenamiento

Actualizado

El recurso de configuración de almacenamiento describe dónde la API puede almacenar los datos que pertenecen a los resultados de las encuestas. Todas las ubicaciones especificadas en las configuraciones de almacenamiento deben ser un grupo de almacenamiento en la nube en Google Cloud Storage o Amazon S3 (AWS) .

Atributos

nombre tipo descripción
id ID de configuración de almacenamiento Identificador de recursos.
resource cadena, siempre storage_config Especificador de tipo de recurso.
organisation ID de organización La organización a la que pertenece el recurso.
type cuerda Uno de: gs , s3 . Este es un atributo de solo lectura generado desde la url .
url cuerda Una URL que representa el destino al que se publicarán los resultados.
credentials diccionario Un diccionario que contiene la información de credenciales utilizada por la API para autenticarse contra el servicio de almacenamiento.
state cuerda Uno de: 'new' , 'valid' , 'invalid' , 'deactivated' .
date_created fecha y hora Cuando el recurso fue creado.

Los tipos

gs
el tipo de configuración de almacenamiento de Google Cloud Storage . Requiere credenciales de cuenta de servicio.
s3
El tipo de configuración de almacenamiento de Amazon S3 (AWS) . Requiere credenciales de usuario de AWS.

URLs

El atributo url sigue el formato:

<type>://<bucket name>/<path within bucket>

Por ejemplo, dado que tenemos un grupo en Google Cloud Storage con el nombre 'my-bucket' y queremos que la API se publique en una carpeta dentro de este grupo llamada 'resultados', la url se vería así:

gs://my-bucket/results

Cartas credenciales

Credenciales de almacenamiento en la nube de Google

La API espera que el atributo de credentials sea un diccionario con el formato:

{
    "type": "service_account",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "client_id": "<Google Cloud Platform client ID>",
    "token_uri": "https://oauth2.googleapis.com/token",
    "project_id": "<Google Cloud Platform project ID>",
    "private_key": "<Service Account private key>",
    "client_email": "<Service Account ID>.iam.gserviceaccount.com",
    "private_key_id": "<Service Account private key ID>",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/<Service Account ID>.iam.gserviceaccount.com",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs"
}

Esto coincide exactamente con el archivo JSON de salida al crear una clave de cuenta de servicio a través de la consola de Google Cloud Platform.

Para simplificar la configuración de una configuración de almacenamiento utilizando las credenciales de archivo JSON exportadas, ricloud-py incluye un simple comando cli:

ricloud storage-config create --url "gs://<bucket name>" --credentials <path to JSON file>

Credenciales de Amazon S3

La API esperaba que el atributo de credentials fuera un diccionario con el formato:

{
    "user_name": "<aws user name>",
    "access_key_id": "<aws user access key ID>",
    "secret_access_key": "<aws user secret access key>",
}

Esto se puede construir manualmente desde los detalles que se muestran en la consola de AWS, o desde el archivo CSV exportable a través del comando cli de ricloud-py :

ricloud storage-config create --url "s3://<bucket name>" --credentials <path to CSV file>

Estados

new
se acaba de crear o actualizar recientemente, pero aún no se ha probado.
valid
Ha pasado la validación y está listo para ser utilizado. Una organización debe tener al menos una configuración de almacenamiento en este estado para poder ser utilizada.
invalid
Ha fallado la prueba de validación. Debe ser actualizado o reexaminado.
deactivated
ha sido desactivado por la organización propietaria.

Crear POST /configs/storage

Cuando se crea una nueva configuración de almacenamiento, la API intentará probarlo creando una tarea storage_config.test . Esta tarea simplemente publicará una pequeña carga útil de prueba utilizando la configuración, que luego se puede eliminar de forma segura. Si la operación se realiza correctamente, el estado de la configuración se establece como valid y se puede utilizar con encuestas. En caso de fallo, el estado de la configuración se establecerá como invalid , pero esto se puede volver a probar fácilmente mediante la acción de prueba .

La primera configuración de almacenamiento válida dentro de una organización se establecerá automáticamente como la predeterminada de la organización.

Tenga en cuenta que la creación de configuraciones de almacenamiento se deduplica en el atributo url . Por lo tanto, no es posible crear dos configuraciones de almacenamiento con la misma url pero diferentes credentials .

Parámetros

nombre tipo descripción
url necesario La URL de configuración de almacenamiento para su cubo.
credentials necesario Las credenciales de configuración de almacenamiento para su cubo.

Usando cURL

Aquí, el contenido del diccionario de credenciales proviene de la copia del contenido del archivo de credenciales JSON generado durante la configuración de la cuenta de servicio en la nube de Google.

curl https://ricloud-api.reincubate.com/configs/storage \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "url": "gs://my-storage-bucket",
  "credentials": {
      "type": "service_account",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "client_id": "<Google Cloud Platform client ID>",
      "token_uri": "https://oauth2.googleapis.com/token",
      "project_id": "<Google Cloud Platform project ID>",
      "private_key": "<Service Account private key>",
      "client_email": "<Service Account ID>.iam.gserviceaccount.com",
      "private_key_id": "<Service Account private key ID>",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/<Service Account ID>.iam.gserviceaccount.com",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs"
  }
}'

Utilizando ricloud-py

import json
import ricloud

with open("<path to JSON file>", 'r') as credentials_file:
    credentials = json.load(credentials_file)

storage_config = ricloud.StorageConfig.create(
    url='gs://my-storage-bucket',
    credentials=credentials
)

Recuperar GET /configs/storage/{storage_config ID}

Usando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \
  -H 'Authorization: Token <your key_token>'

Utilizando ricloud-py

import ricloud

storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)

Lista GET /configs/storage

Las configuraciones de almacenamiento en el estado deactivated están ocultas por defecto y solo se pueden listar por filtrado explícito.

Parámetros

nombre tipo descripción
type cuerda Filtrar por el tipo de cubo de respaldo.
state cuerda Filtrar por el estado de la configuración.
date_created filtro de fecha y hora Filtrar por fecha de creación.

Usando cURL

curl https://ricloud-api.reincubate.com/configs/storage \
  -H 'Authorization: Token <your key_token>'

Utilizando ricloud-py

import ricloud

storage_configs = ricloud.StorageConfig.list()

Actualizar POST /configs/storage/{storage_config ID}

Esta acción crea una tarea storage_config.test para verificar la validez de cualquier cambio realizado en la configuración.

Parámetros

nombre tipo descripción
url cuerda Actualice la URL para que apunte a un grupo o ubicación diferente dentro del grupo. Tenga en cuenta que el tipo de cubo no se puede cambiar a través de esta operación.
credentials diccionario Actualizar las credenciales.
state cuerda Solo new o deactivated .

Usando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "gs://my-storage-bucket/subfolder"
}'

Utilizando ricloud-py

import ricloud

storage_config = ricloud.StorageConfig.update_with_id(
  <storage_config ID>, url="gs://my-storage-bucket/subfolder"
)

# OR

storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)

storage_config.update(url='gs://my-storage-bucket/subfolder')

Eliminar DELETE /configs/storage/{storage_config ID}

Borra la configuración de almacenamiento de la API por completo. Esto elimina cualquier información de credenciales relacionada almacenada en la API.

Usando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \
  -X DELETE \
  -H 'Authorization: Token <your key_token>'

Utilizando ricloud-py

Desde ricloud-py v3.0.0 .

import ricloud

ricloud.StorageConfig.delete_with_id(<storage_config ID>)

# OR

storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)

storage_config.delete()

Pruebe GET /configs/storage/{storage_config ID}/test

Esta acción le permite volver a probar la validez de una configuración de almacenamiento. El estado de la configuración se establecerá en valid o invalid según el resultado de la prueba.

Tenga en cuenta que esta acción devuelve un recurso de tarea.

Usando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID>/test \
  -H 'Authorization: Token <your key_token>'

Utilizando ricloud-py

import ricloud

test_task = ricloud.StorageConfig.test_with_id(<storage_config ID>)

# OR

storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)

test_task = storage_config.test()

¿Cómo podemos ayudar?

¡Nuestro equipo de soporte está aquí para ayudar!

Nuestro horario de atención es de lunes a viernes de 9 a.m. a 5 p.m. GMT. El tiempo es actualmente 4:26 AM GMT.

Intentamos responder todos los mensajes en un plazo de un día laboral.

Ir a la sección de soporte › Póngase en contacto con el equipo de la empresa. ›
Nuestro increíble equipo de soporte.

¿Podemos mejorar este artículo?

Nos encanta escuchar de los usuarios: ¿por qué no enviarnos un correo electrónico, dejar un comentario o tuitear? @reincubate?

© 2008 - 2019 Reincubate Ltd. Todos los derechos reservados. Registrado en Inglaterra y Gales #5189175, VAT GB151788978. Reincubate® es una marca registrada. Términos y privacidad. Recomendamos la autenticación de múltiples factores. Construido con en Londres.