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 | Typ | Bezeichnung |
---|---|---|
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. |
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_enabled
undsigned_urls_expiry
zum Speicherkonfigurationsobjektsigned_urls_expiry
um die Generierung signierter URLs für Ergebnissesigned_urls_enabled
und umsigned_urls_expiry
wie 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 | type | description |
---|---|---|
url |
required | The storage configuration URL for your bucket. |
credentials |
required | The storage configuration credentials for your 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 | Typ | Bezeichnung |
---|---|---|
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. |
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 | Typ | Bezeichnung |
---|---|---|
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 . |
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()