Configuration de stockage
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. |
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>", }
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>
É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.
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
prénom | type | la description |
---|---|---|
url | Champs obligatoires | L'URL de configuration de stockage pour votre compartiment. |
credentials | Champs obligatoires | Les informations d'identification de la 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
prénom | type | la description |
---|---|---|
type | chaîne | Filtrer par type de bac de sauvegarde. |
state | chaîne | Filtrer par l'état de la configuration. |
date_created | filtre datetime | Filtrer par date de création de la ressource. |
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()