Configuraciones de almacenamiento

Actualizado
Cover image for: Configuraciones de almacenamiento

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.
signed_urls_enabled bool opcional, por defecto falso Si las URL firmadas se deben generar para los resultados publicados con la configuración de almacenamiento.
signed_urls_expiry timedelta opcional Si las URL firmadas están habilitadas, el tiempo, en segundos, seguirá siendo válido.
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>",
}

En la carga útil de credenciales anterior, el parámetro user_name corresponde al nombre de usuario del usuario de AWS IAM al que pertenece la clave de acceso. Esto puede ser útil para incluir con fines administrativos y de auditoría.

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>

URL firmadas

Las URL firmadas son enlaces preautorizados de tiempo limitado para acceder a un elemento en un depósito de almacenamiento en la nube. Permiten que las implementaciones den acceso seguro a un elemento específico al que el cliente no tendría credenciales para acceder, o ninguna credencial.

Cuando URL firmados están habilitados en una configuración de almacenamiento, cualquier resultado publicada el uso que tendrá la configuración signed_url poblar atributo. Ver atributos de resultados para más detalles.

Las URL firmadas son compatibles con Google Cloud Storage ( enlace a documentos de URL firmadas de GCS ) y AWS S3 ( enlace a documentos S3 ).

Un requisito adicional para las URL firmadas es que el usuario asociado con las credenciales de configuración de almacenamiento debe tener permisos de lectura en los objetos del depósito. En GCS esta es la función "Visor de objetos de almacenamiento". En S3 está la acción de política "s3: GetObject".

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.

Registro de cambios

2020-02-27

  • Agrega soporte para URL firmadas. Esto agrega el signed_urls_enabled signed_urls_expiry en el objeto de configuración de almacenamiento para alternar la generación de URL firmadas para obtener resultados y cuánto tiempo deben estar activas las URL firmadas.

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 depósito.
credentials necesario Las credenciales de configuración de almacenamiento para su depósito.

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 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 de recursos.

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()

Prueba POST /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 11:08 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 - 2020 Reincubate Ltd. Todos los derechos reservados. Registrado en Inglaterra y Gales #5189175, VAT GB151788978. Reincubate® es una marca registrada. Política de privacidad & condiciones. Recomendamos la autenticación de múltiples factores. Construido con en Londres.