Configuration de stockage

Mis à jour

La ressource de configuration de stockage décrit où l'API peut stocker les données appartenant aux résultats des interrogations. Tous les emplacements spécifiés dans les configurations de stockage doivent être un compartiment de stockage en nuage dans Google Cloud Storage ou Amazon S3 (AWS) .

Les attributs

Nom taper la description
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.

Les types

gs
le type de configuration de stockage de Google Cloud Storage . Requiert les informations d'identification du compte de service.
s3
le type de configuration de stockage Amazon S3 (AWS) . Requiert les informations d'identification de l'utilisateur AWS.

URL

L'attribut url suit le format:

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

Par exemple, dans Google Cloud Storage, nous avons un compartiment avec le nom "my-bucket" et nous souhaitons que l'API publie dans un dossier de ce compartiment appelé "résultats". L' url ressemblerait à ceci:

gs://my-bucket/results

Lettres de créance

Informations d'identification Google Cloud Storage

L'API s'attend à ce que l'attribut credentials soit un dictionnaire au format:

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

Cela correspond exactement au fichier JSON de sortie lors de la création d'une clé de compte de service via la console Google Cloud Platform.

Pour simplifier la configuration d'une configuration de stockage à l'aide des informations d'identification du fichier JSON exporté, ricloud-py inclut une simple commande cli:

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

Informations d'identification Amazon S3

L'API s'attendait à ce que l'attribut credentials soit un dictionnaire au format:

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

Dans la charge utile des informations d'identification ci-dessus, le paramètre user_name correspond au nom d'utilisateur de l'utilisateur AWS IAM auquel appartient la clé d'accès. Cela peut être utile à inclure à des fins administratives et d'audit.

Cela peut être construit manuellement à partir des détails affichés dans la console AWS ou à partir du fichier CSV exportable via la commande cli de ricloud-py :

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

URL signées

Les URL signées sont des liens préautorisés limités dans le temps pour accéder à un élément dans un compartiment de stockage cloud. Ils permettent aux implémentations de donner un accès sécurisé à un élément spécifique auquel le client n'aurait autrement pas accès, ou pas du tout.

Lorsque les URL signées sont activées dans une configuration de stockage, tout résultat publié à l'aide de cette configuration comportera l'attribut signed_url . Voir les attributs de résultat pour plus de détails.

Les URL signées sont prises en charge par Google Cloud Storage ( lien vers les documents sur les URL signées GCS ) et AWS S3 ( lien vers les documents S3 ).

Une exigence supplémentaire pour les URL signées est que l'utilisateur associé aux informations d'identification de configuration de stockage doit avoir des autorisations de lecture sur les objets dans le compartiment. Dans GCS, il s'agit du rôle "Observateur d'objets de stockage". Dans S3 se trouve l'action de stratégie "s3: GetObject".

États

new
vient d'être créé ou récemment mis à jour mais pas encore testé.
valid
a réussi la validation et est prêt à être utilisé. Une organisation doit avoir au moins une configuration de stockage dans cet état pour pouvoir être utilisée.
invalid
a échoué au test de validation. Doit être mis à jour ou retesté.
deactivated
a été désactivé par l’organisation propriétaire.

Changelog

2020-02-27

  • Ajoute la prise en charge des URL signées. Cela ajoute les signed_urls_enabled et signed_urls_expiry sur l'objet de configuration de stockage pour basculer la génération d'URL signées pour les résultats et la durée pendant laquelle les URL signées doivent être actives.

Créer un POST /configs/storage

Lorsqu'une nouvelle configuration de stockage est créée, l'API tente de la tester en créant une tâche storage_config.test . Cette tâche publiera simplement une petite charge de test à l’aide de la configuration, qui peut ensuite être supprimée en toute sécurité. Si l'opération réussit, l'état de la configuration est défini sur valid et il devient utilisable avec les sondages. En cas d'échec, l'état de la configuration sera défini sur invalid , mais cela peut être facilement testé à nouveau à l'aide de l' action de test .

La première configuration de stockage valide au sein d'une organisation sera automatiquement définie comme configuration par défaut de l'organisation.

Notez que la création de configurations de stockage est dédupliquée sur l'attribut url . Par conséquent, il n'est pas possible de créer deux configurations de stockage avec la même url mais des credentials différentes.

Paramètres

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

Utiliser cURL

Ici, le contenu du dictionnaire d'informations d'identification provient de la copie du contenu du fichier d'informations d'identification JSON généré lors de la configuration du compte de service Google Cloud.

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

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

Récupérer GET /configs/storage/{storage_config ID}

Utiliser cURL

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

Utiliser ricloud-py

import ricloud

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

Liste GET /configs/storage

Les configurations de stockage à l'état deactivated sont masquées par défaut et ne peuvent être répertoriées que par filtrage explicite.

Paramètres

Nom taper la description
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.

Utiliser cURL

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

Utiliser ricloud-py

import ricloud

storage_configs = ricloud.StorageConfig.list()

Mettre à jour le POST /configs/storage/{storage_config ID}

Cette action crée une tâche storage_config.test afin de vérifier la validité des modifications apportées à la configuration.

Paramètres

Nom taper la description
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.

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

Utiliser 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')

Supprimer DELETE /configs/storage/{storage_config ID}

Supprime entièrement la configuration de stockage de l'API. Cela supprime toutes les informations d'identification associées stockées dans l'API.

Utiliser cURL

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

Utiliser ricloud-py

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

Test POST /configs/storage/{storage_config ID}/test

Cette action vous permet de tester à nouveau la validité d'une configuration de stockage. L'état de la configuration sera défini sur valid ou invalid fonction du résultat du test.

Notez que cette action renvoie une ressource de tâche.

Utiliser cURL

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

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

Comment pouvons nous aider?

Notre équipe de support est là pour vous aider!

Nos bureaux sont ouverts du lundi au vendredi, de 9 h à 17 h GMT. L’heure est actuellement 1:04 Après-midi GMT.

Notre objectif est de répondre à tous les messages en un jour ouvrable.

Notre superbe équipe de support

© 2008 - 2024 Reincubate Ltd. Tous droits réservés. Enregistré en Angleterre et au Pays de Galles #5189175, VAT GB151788978. Reincubate® et Camo® sont des marques déposées. Politique de confidentialité & termes.