Opslagconfigs
De opslagconfiguratiebron beschrijft waar de API de gegevens behorend bij de resultaten van peilingen kan opslaan. Alle locaties die zijn opgegeven in opslagconfigs, moeten een cloudopslagruimte zijn in Google Cloud Storage of Amazon S3 (AWS) .
attributen
naam | type | Beschrijving |
---|---|---|
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. |
Types
-
gs
- het configuratietype Google Cloud Storage . Vereist serviceaccountgegevens.
-
s3
- het opslagconfiguratietype Amazon S3 (AWS) . Vereist AWS-gebruikersreferenties.
URL's
Het kenmerk url
volgt het formaat:
<type>://<bucket name>/<path within bucket>
Als we bijvoorbeeld een bucket in Google Cloud Storage hebben met de naam 'my-bucket' en we willen dat de API naar een map in deze bucket publiceert met de naam 'resultaten', ziet de url
er als volgt uit:
gs://my-bucket/results
Geloofsbrieven
Inloggegevens voor Google Cloud Storage
De API verwacht dat het kenmerk credentials
een woordenboek is met de indeling:
{ "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" }
Dit komt exact overeen met het JSON-uitvoerbestand bij het maken van een serviceaccountsleutel via de Google Cloud Platform-console.
Om het instellen van een opslagconfiguratie met behulp van de geëxporteerde JSON-bestandsreferenties te vereenvoudigen, bevat ricloud-py een eenvoudige cli-opdracht:
ricloud storage-config create --url "gs://<bucket name>" --credentials <path to JSON file>
Amazon S3-inloggegevens
De API verwachtte dat het kenmerk credentials
een woordenboek is met de indeling:
{ "user_name": "<aws user name>", "access_key_id": "<aws user access key ID>", "secret_access_key": "<aws user secret access key>", }
In de credentials payload hierboven komt de parameter user_name
overeen met de gebruikersnaam van de AWS IAM-gebruiker waartoe de toegangssleutel behoort. Dit kan handig zijn om op te nemen voor administratieve en auditdoeleinden.
Dit kan handmatig worden geconstrueerd uit de details die in de AWS-console worden getoond, of uit het exporteerbare CSV-bestand via de cli-opdracht van ricloud-py :
ricloud storage-config create --url "s3://<bucket name>" --credentials <path to CSV file>
Ondertekende URL's
Ondertekende URL's zijn tijdelijke, vooraf geautoriseerde links voor toegang tot een item in een cloudopslagbucket. Ze laten implementaties veilige toegang geven tot een specifiek item waar de klant anders geen toegangsrechten voor zou hebben, of helemaal geen referenties.
Wanneer ondertekende URL's zijn ingeschakeld in een opslagconfiguratie, wordt voor elk resultaat dat met die configuratie is signed_url
kenmerk signed_url
ingevuld. Zie resultaatkenmerken voor meer details.
Ondertekende URL's worden ondersteund door zowel Google Cloud Storage ( link naar documenten met GCS-ondertekende URL's ) als AWS S3 ( link naar S3-documenten ).
Een extra vereiste voor ondertekende URL's is dat de gebruiker die is gekoppeld aan de referenties van de opslagconfiguratie leesrechten moet hebben op objecten in de bucket. In GCS is dit de rol van "Storage Object Viewer". In S3 is de beleidsactie "s3: GetObject".
Staten
-
new
- is zojuist gemaakt of recentelijk bijgewerkt, maar nog niet getest.
-
valid
- is verstreken validatie en is klaar om te worden gebruikt. Een organisatie moet ten minste één opslagconfiguratie in deze status hebben om bruikbaar te zijn.
-
invalid
- heeft de validatietest mislukt. Moet worden bijgewerkt of opnieuw worden getest.
-
deactivated
- is uitgeschakeld door de eigenaarorganisatie.
Changelog
2020-02-27
- Voegt ondersteuning toe voor ondertekende URL's. Dit voegt
signed_urls_enabled
ensigned_urls_expiry
aan het opslagconfiguratieobject om het genereren van ondertekende URL's voor resultaten in te schakelen en hoe lang de ondertekende URL's actief moeten zijn.
Maak POST /configs/storage
Wanneer een nieuwe opslagconfiguratie wordt gemaakt, probeert de API deze te testen door een taak storage_config.test
te maken. Deze taak publiceert eenvoudigweg een kleine testpayload met behulp van de config, die daarna veilig kan worden verwijderd. Als de bewerking slaagt, is de toestand van de configuratie ingesteld op valid
en wordt deze bruikbaar voor polls. In het geval van een fout, zal de toestand van de config op invalid
worden ingesteld, maar dit kan eenvoudig opnieuw worden getest met behulp van de testactie .
De eerste geldige opslagconfiguratie binnen een organisatie wordt automatisch ingesteld als de standaardinstelling van de organisatie.
Houd er rekening mee dat het maken van opslagconfiguren wordt gededupliceerd op het kenmerk url
. Daarom is het niet mogelijk om twee opslagconfigs met dezelfde url
maar met verschillende credentials
.
parameters
name | type | description |
---|---|---|
url |
required | The storage configuration URL for your bucket. |
credentials |
required | The storage configuration credentials for your bucket. |
CURL gebruiken
Hier is de inhoud van het referentieswoordenboek afkomstig van het kopiëren van de inhoud van het JSON-inloggegevensbestand dat is gegenereerd tijdens het instellen van de Google Cloud Service-account.
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" } }'
Ricloud-py gebruiken
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 )
Ophalen GET /configs/storage/{storage_config ID}
CURL gebruiken
curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \ -H 'Authorization: Token <your key_token>'
Ricloud-py gebruiken
import ricloud storage_config = ricloud.StorageConfig.retrieve(<storage_config ID>)
Lijst GET /configs/storage
Opslagconfiguren in de deactivated
status zijn standaard verborgen en kunnen alleen worden weergegeven door expliciete filtering.
parameters
naam | type | Beschrijving |
---|---|---|
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 gebruiken
curl https://ricloud-api.reincubate.com/configs/storage \ -H 'Authorization: Token <your key_token>'
Ricloud-py gebruiken
import ricloud storage_configs = ricloud.StorageConfig.list()
Update POST /configs/storage/{storage_config ID}
Met deze actie wordt een taak storage_config.test
gemaakt om de geldigheid van eventuele wijzigingen in de configuratie te controleren.
parameters
naam | type | Beschrijving |
---|---|---|
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 gebruiken
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" }'
Ricloud-py gebruiken
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')
Verwijderen DELETE /configs/storage/{storage_config ID}
Verwijdert de opslagconfiguratie volledig van de API. Hiermee wordt alle gerelateerde inloggegevens verwijderd die zijn opgeslagen in de API.
CURL gebruiken
curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID> \ -X DELETE \ -H 'Authorization: Token <your key_token>'
Ricloud-py gebruiken
Sinds 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
Met deze actie kunt u de geldigheid van een opslagconfiguratie opnieuw testen. De status van de config zal worden ingesteld op valid
of invalid
afhankelijk van de uitkomst van de test.
Merk op dat deze actie een taakresource retourneert.
CURL gebruiken
curl https://ricloud-api.reincubate.com/configs/storage/<storage_config ID>/test \ -H 'Authorization: Token <your key_token>'
Ricloud-py gebruiken
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()