Cloud-Speicher
S3-kompatibler Objektspeicher mit vorsignierten URLs, Multipart-Uploads und Bereichs-Lesevorgängen.
Entry-Typen
| Kind | Beschreibung |
|---|---|
config.aws |
AWS-Anmeldedaten und Regionskonfiguration |
cloudstorage.s3 |
S3-Bucket-Verbindung |
AWS-Konfiguration
- name: aws_config
kind: config.aws
region: ${env:AWS_REGION}
access_key_id: ${env:AWS_ACCESS_KEY_ID}
secret_access_key: ${env:AWS_SECRET_ACCESS_KEY}
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
region |
string | Ja | AWS-Region. Über ${env:NAME} bereitstellen, wenn sie sich je Deployment unterscheidet |
access_key_id |
string | Nein | AWS Access Key ID (inline oder ${env:NAME}) |
secret_access_key |
string | Nein | AWS Secret Access Key (inline oder ${env:NAME}) |
Anmeldedaten werden zur Dekodierzeit aus der Umgebungs-Registry aufgelöst. Sowohl access_key_id als auch secret_access_key müssen sich zu nicht-leeren Werten auflösen, damit statische Anmeldedaten greifen; andernfalls wird die AWS SDK Standard-Anmeldekette verwendet (IAM-Rollen, Instanzprofile, etc.).
Requests werden vom AWS SDK mit AWS Signature Version 4 unter Verwendung der aufgelösten Anmeldedaten signiert. Es ist keine Signierungskonfiguration erforderlich.
<feld>_env-Direktive (region_env, access_key_id_env, secret_access_key_env), die sich genauso auflöst. Diese Form ist veraltet — migrieren Sie sie auf den oben gezeigten ${env:NAME}-Platzhalter.
config.aws-Eintrag kann über AWS-gestützte Dienste hinweg wiederverwendet werden. queue.driver.sqs referenziert denselben Eintrag über sein config:-Feld.
S3-Speicher
- name: files
kind: cloudstorage.s3
bucket: "my-bucket"
config: app.infra:aws_config
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
bucket |
string | Bedingt | S3-Bucket-Name. Über ${env:NAME} bereitstellen, wenn er sich je Deployment unterscheidet |
config |
reference | Ja | AWS-Konfigurations-Entry-Referenz |
endpoint |
string | Nein | Benutzerdefinierter Endpunkt für S3-kompatible Dienste (inline oder ${env:NAME}) |
S3-kompatible Dienste
Für MinIO oder andere S3-kompatible Dienste setzen Sie einen benutzerdefinierten Endpunkt:
- name: local_storage
kind: cloudstorage.s3
bucket: "local-bucket"
config: app.infra:aws_config
endpoint: "http://localhost:9000"
Wenn ein Endpunkt angegeben wird, wird Pfadstil-Zugriff automatisch aktiviert.
Multipart-Uploads
Vorsignierte Multipart-Uploads sind eine Fähigkeit des Providers, kein Feature der Runtime. Der cloudstorage.s3-Typ implementiert sie; ein Provider, der das Multipart-Protokoll nicht unterstützt, lässt create_multipart_upload, presigned_part_urls, complete_multipart_upload und abort_multipart_upload mit errors.UNAVAILABLE fehlschlagen.
Teile eines Uploads, der nie abgeschlossen oder abgebrochen wird, bleiben gespeichert und werden berechnet. Anwendungen brechen auf jedem Fehlerpfad ab, aber bei einem abgestürzten Client läuft nichts mehr, was diesen Abbruch ausführen könnte. Als Absicherung eine AbortIncompleteMultipartUpload-Lifecycle-Regel auf dem Bucket konfigurieren:
{
"Rules": [
{
"ID": "abort-incomplete-multipart",
"Status": "Enabled",
"Filter": { "Prefix": "" },
"AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 }
}
]
}
Bereichs-Lesevorgänge
open_reader liest ein Objekt über Ranged-GETs und fixiert das ETag des Objekts bei jedem Lesevorgang mit If-Match. Ein Provider, der beim initialen Stat kein ETag zurückgibt, lässt den Aufruf mit errors.UNAVAILABLE fehlschlagen, und ein Provider, der If-Match ignoriert, verliert den Überschreibschutz - der Lesevorgang kann dann nicht erkennen, dass er zwei Objektgenerationen vermischt hat.
Lua-API
Siehe Cloud-Storage-Modul für Operationen (list, upload, download, delete, vorsignierte URLs, Multipart-Uploads, Bereichs-Reader).
Siehe auch
- Cloud-Storage-Modul - Lua-API-Referenz
- Dateisystem - Lokale Dateisystem-Einträge
- Queue - Der SQS-Handler nutzt dieselben
config.aws-Einträge