Managed AddonsObject Storage (S3)

Managed Object Storage

Managed Object Storage auf Lizard (lizard.build) ist S3-kompatibler Speicher für Uploads, Assets und Backups. lizard add s3 erstellt ihn mit einem privaten Bucket namens default und fünf Variablen, von S3_ENDPOINT bis S3_REGION, die jedes AWS SDK mit Path-Style-Adressierung verwenden kann. Jedes Managed Object Storage-Add-on kann bis zu 16 GiB speichern, und Sie zahlen für die gespeicherten Bytes. Um Dateien ohne Authentifizierung bereitzustellen, machen Sie den Bucket im S3-Browser des Dashboards öffentlich. Einen Überblick und die Preise finden Sie auf der Seite zu Managed Object Storage.

Bereitstellen

lizard add s3

Das erste S3-Add-on heißt s3, daher funktionieren ${{s3.S3_ENDPOINT}} und ähnliche sofort.

Umgebungsvariablen

VariableBeschreibung
S3_ENDPOINTS3-kompatible Endpoint-URL
S3_DEFAULT_BUCKETDer automatisch erstellte Bucket-Name (default)
S3_ACCESS_KEY_IDAccess Key
S3_SECRET_ACCESS_KEYSecret Key
S3_REGIONRegion

Einen Service verbinden

lizard secrets set \
  S3_ENDPOINT='${{s3.S3_ENDPOINT}}' \
  S3_DEFAULT_BUCKET='${{s3.S3_DEFAULT_BUCKET}}' \
  S3_ACCESS_KEY_ID='${{s3.S3_ACCESS_KEY_ID}}' \
  S3_SECRET_ACCESS_KEY='${{s3.S3_SECRET_ACCESS_KEY}}' \
  S3_REGION='${{s3.S3_REGION}}' \
  --service api
lizard redeploy --service api

Verwendung mit einem AWS SDK

Der Endpoint ist S3-kompatibel. Setzen Sie path-style-Adressierung:

import { S3Client } from "@aws-sdk/client-s3";
 
const s3 = new S3Client({
  endpoint: process.env.S3_ENDPOINT,
  region: process.env.S3_REGION,
  forcePathStyle: true, // required
  credentials: {
    accessKeyId: process.env.S3_ACCESS_KEY_ID!,
    secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,
  },
});

Öffentliche Dateien

Buckets sind standardmäßig privat. Objekte in einem Bucket, den Sie öffentlich machen, werden ohne Authentifizierung auf zwei Arten bereitgestellt:

  1. Gateway-URL (im Dashboard angezeigt):
    https://s3-<region>.onlizard.com/<addonId>/<bucket>/<key>
    <region> ist der Wert von S3_REGION (eu-west-1 oder us-east-1).
  2. Plattform-Proxy (der Dashboard-Host, mit langlebigen unveränderlichen Cache-Headern):
    <dashboard-host>/api/s3/<addonId>/public/<bucket>/<key>

Sobald Sie den Bucket default öffentlich machen, werden seine Objekte bereitgestellt unter:

<dashboard-host>/api/s3/<addonId>/public/default/<key>

Der S3-Browser hat für jeden Bucket zwei Schalter. Öffentliche Ansicht (Public view) lässt jeden die Objekte lesen. Öffentliches Bearbeiten (Public edit) lässt jeden Objekte hochladen und löschen. Schalten Sie es also nur für einen Bucket ein, den jeder ändern darf.

Um ein einzelnes Objekt aus einem privaten Bucket für eine Weile zu teilen, geben Sie einen temporären Link aus. Er funktioniert ohne Zugangsdaten, bis er abläuft (standardmäßig nach einer Stunde, höchstens nach 7 Tagen):

lizard s3 url report.pdf --expires 86400

Presigned URLs aus einem AWS SDK funktionieren ebenfalls.

Objekte durchsuchen

Öffnen Sie den S3-Browser im Dashboard (lizard open), um Objekte hochzuladen und zu löschen, Ordner zu erstellen und Buckets öffentlich oder privat zu machen. In der CLI lädt lizard s3 upload <file> eine Datei hoch, lizard s3 list listet Objekte auf und lizard s3 url <key> gibt einen temporären Link aus; siehe lizard s3.

Bucket-ACL-Änderungen (einen Bucket öffentlich/privat machen) sind in der CLI noch nicht verfügbar — verwalten Sie sie im Dashboard.

Speicherlimit

Jedes Managed Object Storage-Add-on kann bis zu 16 GiB an Objekten speichern, zusammen für seinen Bucket default und alle weiteren, die Sie anlegen. Ein weiteres Add-on (lizard add s3) hat eigene 16 GiB. Sie zahlen für gespeicherte Bytes, nicht für eine reservierte Größe; lizard scale --storage ändert dieses Limit nicht.

Siehe auch

Aktualisiert