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 escribe descripción
id storage config ID Resource identifier.
resource string, always storage_config Resource type specifier.
organisation organisation ID The organisation the resource belongs to.
type string One of: gs, s3. This is a read-only attribute generated from the url.
url string A URL representing the target to which results will be published.
credentials dictionary A dictionary containing the credential information used by the API to authenticate against the storage service.
signed_urls_enabled optional bool, default false Whether signed URLs should be generated for results published using the storage config.
signed_urls_expiry optional timedelta If signed URLs are enabled, the time, in seconds, they will remain valid.
state string One of: 'new', 'valid', 'invalid', 'deactivated'.
date_created datetime When the resource was created.

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

name type description
url required The storage configuration URL for your bucket.
credentials required The storage configuration credentials for your bucket.

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 escribe descripción
type string Filter by backing bucket's type.
state string Filter by the configuration's state.
date_created datetime filter Filter by resouce creation date.

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 escribe descripción
url string Update the URL to point to a different bucket or location within the bucket. Note that the type of a bucket cannot be changed through this operation.
credentials dictionary Update the credentials.
state string Only to new or 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 10:00 AM GMT.

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

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 - 2023 Reincubate Ltd. Todos los derechos reservados. Registrado en Inglaterra y Gales #5189175, VAT GB151788978. Reincubate® y Camo® son marcas registradas. Política de privacidad & condiciones. Construido con en Londres.