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