Speicherkonfigurationen

Aktualisierte
Cover image for: 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 und signed_urls_expiry zum Speicherkonfigurationsobjekt signed_urls_expiry um die Generierung signierter URLs für Ergebnisse signed_urls_enabled und um signed_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()

Wie können wir helfen?

Unser Support-Team hilft Ihnen gerne weiter!

Unsere Bürozeiten sind Montag bis Freitag von 9 bis 17 Uhr GMT. Die Zeit ist aktuell 3:27 vorm. GMT.

Wir bemühen uns, auf alle Mitteilungen innerhalb eines Arbeitstages zu antworten.

Unser großartiges Supportteam

Können wir diesen Artikel verbessern?

Wir hören gerne von Nutzern: Warum schicken Sie uns nicht eine E-Mail, schreiben Sie einen Kommentar oder tweeten Sie @reincubate?

© 2008 - 2024 Reincubate Ltd. Alle Rechte vorbehalten. Registriert in England und Wales #5189175, VAT GB151788978. Reincubate® und Camo® sind eingetragene Marken. Datenschutz-Bestimmungen & Begriffe.