Object Storage: CLI- en SDK-naslag
Kort antwoord
Je verbindt met Object Storage via de AWS CLI, rclone of boto3 door elke tool te wijzen naar het S3 endpoint en de inloggegevens van je Worldstream-project. Geen van deze tools praat standaard met Object Storage, en geen ervan praat met AWS.
Worldstream is niet Amazon AWS: Deze tools spreken het S3-protocol, niet specifiek AWS. Elke aanroep heeft je Worldstream S3 endpoint expliciet nodig, of dat nu
--endpoint-urlis bij de AWS CLI,endpointin een rclone remote, ofendpoint_urlin boto3. Laat je dit weg, dan valt de tool terug op zijn eigen AWS-standaardwaarden, en die bereiken je buckets niet. Deaws_*-veldnamen (aws_access_key_id,aws_secret_access_key) zijn gewoon hoe de AWS CLI en boto3 hun inloggegevens noemen; ze bevatten je Worldstream Access Key en Secret Key, geen AWS-account.
Waar vind je je verbindingsgegevens
Open Object Storage in Portal en selecteer je project. De S3 Endpoint, Region, Access Key en Secret Key staan per project vermeld. Toon of roteer de keys daar; raad niet naar de endpoint slug, die is uniek voor jouw project.
Portalvelden koppelen aan elke tool
| Portalveld | AWS CLI | rclone | boto3 |
|---|---|---|---|
| S3 Endpoint | --endpoint-url bij elke opdracht | endpoint in de remote-configuratie | endpoint_url |
| Region | aws configure set default.region | region in de remote-configuratie | region_name |
| Access Key | aws configure set aws_access_key_id | access_key_id | aws_access_key_id |
| Secret Key | aws configure set aws_secret_access_key | secret_access_key | aws_secret_access_key |
AWS CLI
Stel je inloggegevens en region eenmalig in, en geef daarna --endpoint-url mee bij elke aanroep. Dat vergeet je makkelijk bij een losse opdracht; lijkt een aanroep vast te lopen of raakt hij AWS in plaats van Worldstream, controleer dan eerst de endpoint flag.
aws configure set aws_access_key_id "<access-key>"
aws configure set aws_secret_access_key "<secret-key>"
aws configure set default.region "<region>"
ENDPOINT="<s3-endpoint>"
BUCKET="<bucket-name>"
aws s3api list-buckets --endpoint-url "$ENDPOINT"
aws s3api put-object --endpoint-url "$ENDPOINT" --bucket "$BUCKET" --key path/to/object.txt --body ./object.txtrclone
Voeg een remote toe aan ~/.config/rclone/rclone.conf met provider = Other, en gebruik hem dan zoals elke andere rclone remote.
[worldstream]
type = s3
provider = Other
access_key_id = <access-key>
secret_access_key = <secret-key>
endpoint = <s3-endpoint>
region = <region>rclone lsd worldstream:
rclone copy ./data worldstream:my-bucket/backups/ --progress
rclone sync ./local worldstream:my-bucket/path/De S3-backend van rclone dekt niet het hele S3 API-oppervlak, en wat hij wel dekt verschilt per rclone-versie. Gebruik voor lifecycle, Object Lock en ownership liever aws s3api of boto3.
boto3 (Python)
import boto3
from botocore.client import Config
s3 = boto3.client(
"s3",
endpoint_url="<s3-endpoint>",
aws_access_key_id="<access-key>",
aws_secret_access_key="<secret-key>",
region_name="<region>",
config=Config(signature_version="s3v4"),
)
s3.upload_file("./object.txt", "my-bucket", "path/to/object.txt")
s3.download_file("my-bucket", "path/to/object.txt", "./downloaded.txt")Wat wordt ondersteund
Object Storage spreekt het S3-protocol, dus de standaard objectbewerkingen werken via elke S3-tool: put, get, head, copy, delete, en multipart upload voor grote bestanden. Hoeveel van het bredere S3 API-oppervlak wordt gedekt verschilt, dus check de eigen gids Object Storage CLI & SDK in Portal onder Support → Documentation voor de actuele lijst voordat je tegen een specifieke API-aanroep aan bouwt.
Eén ding om vooraf te beslissen: Object Lock is een optie bij het aanmaken van een bucket, en kan daarna niet meer worden uitgeschakeld. Wil je het, zet het dan aan bij het aanmaken.
Limieten: Grootte- en aantallimieten worden door de API zelf afgedwongen. Loop je tegen een limiet aan, dan geeft de S3-compatible API een foutmelding die de limiet direct benoemt, en dat is op het moment zelf het gezaghebbende antwoord.
Een bucket koppelen als lokale schijf
Sommige teams koppelen een bucket als bestandssysteem met community-tools zoals rclone mount, s3fs-fuse of goofys, allemaal gericht op je Worldstream S3 endpoint zoals hierboven. Dit zijn tools van derden, niet iets wat Worldstream bouwt of officieel documenteert, dus test ze tegen je eigen workload voordat je erop vertrouwt in productie.