Etwa 10 Minuten

So lädst du Dateien auf Amazon S3 hoch und teilst öffentliche Links

Amazon S3 ist der Klassiker unter den Objektspeichern und funktioniert mit Aktars Amazon-S3-Vorlage. Sorgfalt braucht nur der öffentliche Zugriff: S3 blockiert ihn standardmäßig, du fügst also entweder eine Bucket-Policy für öffentliches Lesen hinzu oder setzt CloudFront vor den Bucket.

Was du brauchst

  • Ein AWS-Konto
  • Berechtigung zum Anlegen von S3-Buckets und IAM-Benutzern
  • Aktar auf deinem Mac installiert

Schritt für Schritt

  1. 1

    Bucket erstellen

    Klick in der S3-Konsole auf Create bucket, wähle einen weltweit eindeutigen Namen und die Region, die dir am nächsten liegt, zum Beispiel eu-central-1. Die standardmäßige Objekteigentümerschaft "Bucket owner enforced" kannst du beibehalten: Aktar nutzt keine ACLs.

  2. 2

    Öffentliches Lesen erlauben

    Option A, Bucket-Policy: Deaktiviere im Tab Permissions des Buckets die "Block public access"-Einstellungen, die öffentliche Bucket-Policies blockieren, und füge dann diese Bucket-Policy hinzu (ersetze YOUR-BUCKET):

    {
      "Version": "2012-10-17",
      "Statement": [{
        "Sid": "PublicRead",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::YOUR-BUCKET/*"
      }]
    }

    Option B, CloudFront: Lass den Bucket privat und erstelle eine CloudFront-Distribution mit dem Bucket als Origin (mit Origin Access Control). So bekommst du HTTPS auf einer eigenen Domain und Caching.

  3. 3

    IAM-Benutzer für Aktar anlegen

    Lege in IAM einen Benutzer an und hänge eine Policy an, die nur erlaubt, was Aktar für diesen Bucket braucht:

    {
      "Version": "2012-10-17",
      "Statement": [
        { "Effect": "Allow", "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::YOUR-BUCKET" },
        { "Effect": "Allow",
          "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
          "Resource": "arn:aws:s3:::YOUR-BUCKET/*" }
      ]
    }

    Erstelle dann einen Access Key für den Benutzer und kopiere Access Key ID und Secret Access Key.

  4. 4

    Ziel in Aktar hinzufügen

    Wähle unter Einstellungen → Ziele → Ziel hinzufügen die Option Amazon S3 und gib die Werte unten ein. Endpunkt und Region müssen zur Region des Buckets passen.

  5. 5

    Testen und speichern

    Klick auf Verbindung testen, um zu bestätigen, dass der Bucket beschreibbar ist und die öffentliche URL Dateien ausliefert, und dann auf Sichern.

Einstellungen in Aktar

Trag diese Werte unter Einstellungen → Ziele → Ziel hinzufügen ein. Die Feldnamen entsprechen der App.

FeldBeispielwert
AnbieterAmazon S3
Endpointhttps://s3.eu-central-1.amazonaws.comVerwende die Region deines Buckets.
Regioneu-central-1
Access Key IDAKIA…Vom IAM-Benutzer.
Secret Access Key••••••••
Bucketyour-bucket
Öffentliche Basis-URLyour-bucket.s3.eu-central-1.amazonaws.comOder deine CloudFront-Domain.

Tipps

  • Wenn du Links öffentlich teilst, nimm lieber CloudFront mit eigener Domain: Du bekommst Caching und kannst den Bucket selbst privat halten.
  • Beschränke die IAM-Policy auf einen einzigen Bucket. Aktar braucht nie kontoweite Berechtigungen.
  • Wähle eine Region in deiner Nähe für schnellere Uploads und in der Nähe deines Publikums, wenn du kein CDN nutzt.
  • Für Uploads, die sich selbst löschen, braucht der IAM-Benutzer zusätzlich s3:GetLifecycleConfiguration und s3:PutLifecycleConfiguration für den Bucket, oder du legst die Lifecycle-Regeln selbst an. Mehr dazu unter Uploads automatisch löschen.

Fehlerbehebung

"Verbindung testen" meldet einen Fehler zur Region oder eine Weiterleitung

Endpunkt und Region müssen zu der Region passen, in der der Bucket erstellt wurde, zum Beispiel https://s3.eu-central-1.amazonaws.com mit eu-central-1.

Uploads schlagen mit Access Denied fehl

Der IAM-Benutzer braucht s3:PutObject auf YOUR-BUCKET/* und s3:ListBucket auf den Bucket selbst.

Links liefern 403

Die Bucket-Policy fehlt oder wird noch durch "Block public access" blockiert, oder CloudFront kann den Bucket nicht lesen. Siehe Access-Denied-Fehler.

Kommst du nicht weiter?Schau in die FAQ oder frag auf GitHub.