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

prénom type la description
id ID de configuration de stockage Identifiant de ressource.
resource chaîne, toujours storage_config Spécificateur de type de ressource.
organisation ID d'organisation L'organisation à laquelle la ressource appartient.
type chaîne Un des: gs , s3 . Ceci est un attribut en lecture seule généré à partir de l' url .
url chaîne Une URL représentant la cible sur laquelle les résultats seront publiés.
credentials dictionnaire Dictionnaire contenant les informations d'identification utilisées par l'API pour s'authentifier auprès du service de stockage.
signed_urls_enabled bool facultatif, faux par défaut Indique si les URL signées doivent être générées pour les résultats publiés à l'aide de la configuration de stockage.
signed_urls_expiry timedelta en option Si les URL signées sont activées, la durée, en secondes, restera valide.
state chaîne L'un des suivants: 'new' , 'valid' , 'invalid' , 'deactivated' .
date_created date / heure Quand la ressource a été créée.

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

Nom type la description
url obligatoire URL de configuration du stockage pour votre compartiment.
credentials obligatoire Les informations d'identification de configuration de stockage pour votre compartiment.

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 type la description
type chaîne Filtrer par type de godet de support.
state chaîne Filtrez par l'état de la configuration.
date_created filtre datetime Filtrer par date de création de ressources.

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

prénom type la description
url chaîne Mettez à jour l'URL pour qu'elle pointe vers un autre ou un autre emplacement du même. Notez que le type de compartiment ne peut pas être modifié par cette opération.
credentials dictionnaire Mettez à jour les informations d'identification.
state chaîne Seulement à new ou 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 12:12 Après-midi GMT.

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

Aller à la section support › Contacter l'équipe de l'entreprise ›
Notre superbe équipe de support

Pouvons-nous améliorer cet article?

Nous aimons entendre les utilisateurs: pourquoi ne pas nous envoyer un email, laisser un commentaire ou tweet @reincubate?

© 2008 - 2020 Reincubate Ltd. Tous droits réservés. Enregistré en Angleterre et au Pays de Galles #5189175, VAT GB151788978. Reincubate® est une marque déposée. Politique de confidentialité & termes. Nous recommandons l'authentification multi-facteurs. Construit avec à Londres.