Storage configs

aggiornato
Cover image for: Storage configs

La risorsa di configurazione della memoria descrive dove l'API può memorizzare i dati appartenenti ai risultati dei sondaggi. Tutte le posizioni specificate nelle configurazioni di archiviazione devono essere un bucket di archiviazione nel cloud in Google Cloud Storage o Amazon S3 (AWS) .

attributi

nome genere descrizione
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.

tipi

gs
il tipo di configurazione di archiviazione di Google Cloud Storage . Richiede credenziali dell'account di servizio.
s3
il tipo di configurazione di archiviazione Amazon S3 (AWS) . Richiede credenziali utente AWS.

URL

L'attributo url segue il formato:

<type>://<bucket name>/<path within bucket>

Ad esempio, dato che abbiamo un bucket in Google Cloud Storage con il nome "my-bucket" e vogliamo che l'API pubblichi in una cartella all'interno di questo bucket denominata "results", l' url sarà simile a:

gs://my-bucket/results

Credenziali

Credenziali di Google Cloud Storage

L'API prevede che l'attributo delle credentials sia un dizionario con il formato:

{
    "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"
}

Questo corrisponde esattamente al file JSON di uscita quando si crea un codice di account di servizio tramite la console di Google Cloud Platform.

Per semplificare l'impostazione di una configurazione di archiviazione utilizzando le credenziali del file JSON esportate, ricloud-py include un semplice comando cli:

ricloud storage-config create --url "gs://<bucket name>" --credentials <path to JSON file>

Credenziali Amazon S3

L'API prevedeva che l'attributo delle credentials fosse un dizionario con il formato:

{
    "user_name": "<aws user name>",
    "access_key_id": "<aws user access key ID>",
    "secret_access_key": "<aws user secret access key>",
}

Nel payload delle credenziali riportato sopra, il parametro user_name corrisponde al nome utente dell'utente IAM AWS a cui appartiene la chiave di accesso. Questo può essere utile da includere a fini amministrativi e di controllo.

Questo può essere costruito manualmente dai dettagli mostrati nella console AWS o dal file CSV esportabile tramite il comando cli di ricloud-py :

ricloud storage-config create --url "s3://<bucket name>" --credentials <path to CSV file>

URL firmati

Gli URL firmati sono collegamenti pre-autorizzati a tempo limitato per accedere a un elemento in un bucket di archiviazione cloud. Consentono alle implementazioni di fornire un accesso sicuro a un elemento specifico a cui altrimenti il client non avrebbe credenziali di accesso o nessuna credenziale.

Quando gli URL firmati sono abilitati su una configurazione di archiviazione, tutti i risultati pubblicati utilizzando tale configurazione avranno popolato l'attributo signed_url . Vedi gli attributi dei risultati per maggiori dettagli.

Gli URL firmati sono supportati sia da Google Cloud Storage ( link a documenti URL firmati GCS ) sia da AWS S3 ( link a documenti S3 ).

Un ulteriore requisito per gli URL firmati è che l'utente associato alle credenziali di configurazione dell'archiviazione deve disporre delle autorizzazioni di lettura sugli oggetti nel bucket. In GCS questo è il ruolo "Visualizzatore oggetti di archiviazione". In S3 è l'azione della politica "s3: GetObject".

stati

new
è appena stato creato o aggiornato di recente ma non ancora testato.
valid
ha superato la validazione ed è pronto per essere utilizzato. Un'organizzazione deve avere almeno una configurazione di archiviazione in questo stato per poter essere utilizzata.
invalid
ha fallito il test di validazione. Deve essere aggiornato o ritestato.
deactivated
è stato disattivato dall'organizzazione proprietaria.

changelog

2020/02/27

  • Aggiunge il supporto per gli URL firmati. In questo modo viene aggiunto signed_urls_enabled e signed_urls_expiry sull'oggetto di configurazione della memoria per attivare / disattivare la generazione di URL firmati per i risultati e per quanto tempo devono rimanere attivi gli URL firmati.

Crea POST /configs/storage

Quando viene creata una nuova configurazione di archiviazione, l'API tenterà di testarla creando un'attività storage_config.test . Questo compito pubblicherà semplicemente un payload di prova di piccole dimensioni utilizzando la configurazione, che può essere successivamente cancellata. Se l'operazione ha esito positivo, lo stato della configurazione è impostato su valid e diventa utilizzabile con i sondaggi. In caso di errore, lo stato della configurazione sarà impostato su invalid , ma questo può essere riesaminato facilmente utilizzando l' azione di test .

La prima configurazione di archiviazione valida all'interno di un'organizzazione verrà automaticamente impostata come predefinita dell'organizzazione.

Si noti che la creazione delle configurazioni di archiviazione è deduplicata sull'attributo url . Pertanto, non è possibile creare due configurazioni di archiviazione con lo stesso url ma credentials diverse.

parametri

name type description
url required The storage configuration URL for your bucket.
credentials required The storage configuration credentials for your bucket.

Utilizzando cURL

Qui, il contenuto del dizionario delle credenziali deriva dalla copia dei contenuti del file delle credenziali JSON generato durante l'impostazione dell'account del servizio 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"
  }
}'

Usando 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
)

Recupera GET /configs/storage/{storage_config ID}

Utilizzando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \
  -H 'Authorization: Token <your key_token>'

Usando ricloud-py

import ricloud

storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)

Elenco GET /configs/storage

Le configurazioni di archiviazione nello stato deactivated sono nascoste per impostazione predefinita e possono essere elencate solo mediante filtraggio esplicito.

parametri

nome genere descrizione
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.

Utilizzando cURL

curl https://ricloud-api.reincubate.com/configs/storage \
  -H 'Authorization: Token <your key_token>'

Usando ricloud-py

import ricloud

storage_configs = ricloud.StorageConfig.list()

Aggiorna POST /configs/storage/{storage_config ID}

Questa azione crea un'attività di storage_config.test per verificare la validità di eventuali modifiche apportate alla configurazione.

parametri

nome genere descrizione
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.

Utilizzando 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"
}'

Usando 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')

Elimina DELETE /configs/storage/{storage_config ID}

Elimina completamente la configurazione di archiviazione dall'API. Ciò rimuove qualsiasi informazione relativa alle credenziali memorizzata nell'API.

Utilizzando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \
  -X DELETE \
  -H 'Authorization: Token <your key_token>'

Usando ricloud-py

Dal momento che 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

Questa azione consente di verificare nuovamente la validità di una configurazione di archiviazione. Lo stato della configurazione sarà impostato su valid o invalid base all'esito del test.

Si noti che questa azione restituisce una risorsa di attività.

Utilizzando cURL

curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID>/test \
  -H 'Authorization: Token <your key_token>'

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

Come possiamo aiutare?

Il nostro team di supporto è qui per aiutarti!

I nostri orari di ufficio sono dal lunedì al venerdì, dalle 9:00 alle 17:00 GMT. L'ora è attualmente 6:33 AM GMT.

Miriamo a rispondere a tutti i messaggi entro un giorno lavorativo.

Il nostro fantastico team di supporto

Possiamo migliorare questo articolo?

Ci piace ascoltare gli utenti: perché non mandarci un'email, lasciare un commento o twittare @reincubate?

© 2008 - 2023 Reincubate Ltd. Tutti i diritti riservati. Registrato in Inghilterra e Galles #5189175, VAT GB151788978. Reincubate® e Camo® sono marchi registrati. Politica sulla riservatezza & condizioni. Costruito con a Londra.