Speicherkonfigurationen
Die Speicherkonfigurationsressource beschreibt, wo die API die Daten speichern kann, die zu den Ergebnissen von Abstimmungen gehören. Alle in Speicherkonfigurationen angegebenen Speicherorte müssen ein Cloud-Speicher-Bucket in Google Cloud Storage oder Amazon S3 (AWS) sein .
Attribute
| Name | Art | Beschreibung |
|---|---|---|
id | Speicherkonfigurations-ID | Ressourcenkennung. |
resource | Zeichenfolge, immer storage_config | Ressourcentypbezeichner. |
organisation | Organisations-ID | Die Organisation, zu der die Ressource gehört. |
type | Zeichenfolge | Einer von: gs , s3 . Dies ist ein schreibgeschütztes Attribut, das aus der url generiert wird. |
url | Zeichenfolge | Eine URL, die das Ziel darstellt, auf dem die Ergebnisse veröffentlicht werden. |
credentials | Wörterbuch | Ein Wörterbuch mit den Anmeldeinformationen, die von der API zur Authentifizierung beim Speicherdienst verwendet werden. |
signed_urls_enabled | optionales Bool, Standardwert false | Gibt an, ob signierte URLs für Ergebnisse generiert werden sollen, die mit der Speicherkonfiguration veröffentlicht wurden. |
signed_urls_expiry | optionales Timedelta | Wenn signierte URLs aktiviert sind, bleibt die Zeit in Sekunden gültig. |
state | Zeichenfolge | Eines von: 'new' , 'valid' , 'invalid' , 'deactivated' . |
date_created | Terminzeit | Wann wurde die Ressource erstellt. |
Typen
-
gs - der Google Cloud Storage- Speicherkonfigurationstyp. Erfordert Anmeldeinformationen für das Dienstkonto.
-
s3 - den Speicherkonfigurationstyp Amazon S3 (AWS) . Erfordert AWS-Benutzeranmeldeinformationen.
URLs
Das url Attribut folgt dem Format:
<type>://<bucket name>/<path within bucket>
Angenommen, wir haben einen Bucket in Google Cloud Storage mit dem Namen "my-bucket" und möchten, dass die API in einem Ordner mit dem Namen "results" veröffentlicht wird. Die url sieht folgendermaßen aus:
gs://my-bucket/results
Referenzen
Anmeldeinformationen für Google Cloud Storage
Die API erwartet, dass das Attribut credentials ein Wörterbuch mit folgendem Format ist:
{ "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" }
Dies entspricht genau der Ausgabe-JSON-Datei, wenn ein Dienstkontoschlüssel über die Google Cloud Platform-Konsole erstellt wird.
Um das Einrichten einer Speicherkonfiguration mit den exportierten JSON-Anmeldeinformationen zu vereinfachen, enthält ricloud-py einen einfachen cli-Befehl:
ricloud storage-config create --url "gs://<bucket name>" --credentials <path to JSON file>
Amazon S3-Anmeldeinformationen
Die API hat erwartet, dass das Attribut credentials ein Wörterbuch mit folgendem Format ist:
{ "user_name": "<aws user name>", "access_key_id": "<aws user access key ID>", "secret_access_key": "<aws user secret access key>", }
In den obigen Nutzdaten für Anmeldeinformationen entspricht der Parameter user_name dem Benutzernamen des AWS IAM-Benutzers, zu dem der Zugriffsschlüssel gehört. Dies kann für Verwaltungs- und Prüfungszwecke hilfreich sein.
Dies kann entweder manuell aus den in der AWS-Konsole angezeigten Details oder aus der exportierbaren CSV-Datei mit dem Befehl cli von ricloud-py erstellt werden :
ricloud storage-config create --url "s3://<bucket name>" --credentials <path to CSV file>
Signierte URLs
Signierte URLs sind zeitlich begrenzte, vorautorisierte Links für den Zugriff auf ein Element in einem Cloud-Speicherbereich. Sie ermöglichen Implementierungen den sicheren Zugriff auf ein bestimmtes Element, auf das der Client sonst nicht oder überhaupt nicht zugreifen könnte.
Wenn signierte URLs in einer Speicherkonfiguration aktiviert sind, wird für jedes Ergebnis, das mit dieser Konfiguration veröffentlicht wird, das Attribut " signed_url . Weitere Informationen finden Sie unter Ergebnisattribute .
Signierte URLs werden sowohl von Google Cloud Storage ( Link zu GCS-signierten URL-Dokumenten ) als auch von AWS S3 ( Link zu S3-Dokumenten ) unterstützt.
Eine zusätzliche Anforderung für signierte URLs besteht darin, dass der Benutzer, der den Anmeldeinformationen für die Speicherkonfiguration zugeordnet ist, über Leseberechtigungen für Objekte im Bucket verfügen muss. In GCS ist dies die Rolle "Storage Object Viewer". In S3 befindet sich die Richtlinienaktion "s3: GetObject".
Zustände
-
new - wurde gerade erstellt oder kürzlich aktualisiert, aber noch nicht getestet.
-
valid - hat die Validierung bestanden und ist einsatzbereit. Eine Organisation muss mindestens eine Speicherkonfiguration in diesem Status haben, um verwendet werden zu können.
-
invalid - hat den Validierungstest nicht bestanden. Muss aktualisiert oder erneut getestet werden.
-
deactivated - wurde von der Eigentümerorganisation deaktiviert.
Änderungsprotokoll
2020-02-27
- Fügt Unterstützung für signierte URLs hinzu. Dadurch werden die
signed_urls_enabledundsigned_urls_expiryzum Speicherkonfigurationsobjektsigned_urls_expiryum die Generierung signierter URLs für Ergebnissesigned_urls_enabledund umsigned_urls_expirywie lange die signierten URLs aktiv sein sollen.
Erstellen Sie POST /configs/storage
Wenn eine neue Speicherkonfiguration erstellt wird, versucht die API, diese durch Erstellen einer storage_config.test Task zu testen. Diese Aufgabe veröffentlicht einfach eine kleine Testnutzlast unter Verwendung der Konfiguration, die anschließend sicher gelöscht werden kann. Wenn der Vorgang erfolgreich ist, wird der Status der Konfiguration auf " valid und kann für Abfragen verwendet werden. Im Falle eines Fehlers wird der Status der Konfiguration auf invalid , dies kann jedoch einfach mit der Testaktion erneut getestet werden.
Die erste gültige Speicherkonfiguration in einer Organisation wird automatisch als Standard der Organisation festgelegt.
Beachten Sie, dass die Erstellung von Speicherkonfigurationen für das url Attribut dedupliziert wird. Daher ist es nicht möglich, zwei Speicherkonfigurationen mit derselben url aber unterschiedlichen credentials zu erstellen.
Parameter
| Name | Art | Beschreibung |
|---|---|---|
url | erforderlich | Die Speicherkonfigurations-URL für Ihren Bucket. |
credentials | erforderlich | Die Anmeldeinformationen für die Speicherkonfiguration für Ihren Bucket. |
CURL verwenden
In diesem Fall stammt der Inhalt des Wörterbuchs für Anmeldeinformationen aus dem Kopieren des Inhalts der JSON-Anmeldeinformationsdatei, die während der Einrichtung des Google Cloud-Dienstkontos generiert wurde.
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" } }'
Mit 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 )
GET /configs/storage/{storage_config ID}
CURL verwenden
curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \ -H 'Authorization: Token <your key_token>'
Mit Ricloud-Py
import ricloud storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)
Liste GET /configs/storage
Speicherkonfigurationen im deactivated Zustand sind standardmäßig ausgeblendet und können nur durch explizite Filterung aufgelistet werden.
Parameter
| Name | Art | Beschreibung |
|---|---|---|
type | Zeichenfolge | Filtern Sie nach dem Typ des Backing Bucket. |
state | Zeichenfolge | Filtern Sie nach dem Status der Konfiguration. |
date_created | Datum / Uhrzeit-Filter | Filtern nach Erstellungsdatum der Ressource. |
CURL verwenden
curl https://ricloud-api.reincubate.com/configs/storage \ -H 'Authorization: Token <your key_token>'
Mit Ricloud-Py
import ricloud storage_configs = ricloud.StorageConfig.list()
Aktualisieren Sie POST /configs/storage/{storage_config ID}
Diese Aktion erstellt eine storage_config.test Task, um die Gültigkeit von Änderungen an der Konfiguration zu überprüfen.
Parameter
| Name | Art | Beschreibung |
|---|---|---|
url | Zeichenfolge | Aktualisieren Sie die URL, um auf einen anderen Bucket oder eine andere Position im Bucket zu verweisen. Beachten Sie, dass der Typ eines Buckets durch diesen Vorgang nicht geändert werden kann. |
credentials | Wörterbuch | Aktualisieren Sie die Anmeldeinformationen. |
state | Zeichenfolge | Nur zu new oder deactivated . |
CURL verwenden
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" }'
Mit 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')
DELETE /configs/storage/{storage_config ID}
Löscht die Speicherkonfiguration vollständig aus der API. Dadurch werden alle zugehörigen Anmeldeinformationen entfernt, die in der API gespeichert sind.
CURL verwenden
curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \ -X DELETE \ -H 'Authorization: Token <your key_token>'
Mit Ricloud-Py
Seit 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()
Testen Sie POST /configs/storage/{storage_config ID}/test
Mit dieser Aktion können Sie die Gültigkeit einer Speicherkonfiguration erneut testen. Der Status der Konfiguration wird abhängig vom Ergebnis des Tests auf valid oder invalid .
Beachten Sie, dass diese Aktion eine Aufgabenressource zurückgibt.
CURL verwenden
curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID>/test \ -H 'Authorization: Token <your key_token>'
Mit 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()