Około 10 min

Jak przesyłać pliki do Amazon S3 i udostępniać publiczne linki

Amazon S3 to pierwowzór magazynów obiektowych i działa z ustawieniem Amazon S3 w Aktarze. Uwagi wymaga tylko publiczny dostęp: S3 domyślnie go blokuje, więc musisz dodać politykę bucketu zezwalającą na publiczny odczyt albo postawić przed bucketem CloudFront.

Czego potrzebujesz

  • Konto AWS
  • Uprawnienia do tworzenia bucketów S3 i użytkowników IAM
  • Aktar zainstalowany na Macu

Krok po kroku

  1. 1

    Utwórz bucket

    W konsoli S3 kliknij Create bucket, wybierz globalnie unikalną nazwę i najbliższy region, np. eu-central-1. Możesz zostawić domyślne ustawienie własności obiektów „Bucket owner enforced”: Aktar nie korzysta z ACL.

  2. 2

    Zezwól na publiczny odczyt

    Opcja A, polityka bucketu: na karcie Permissions bucketu wyłącz te ustawienia „Block public access”, które blokują publiczne polityki bucketu, a potem dodaj tę politykę (zastąp YOUR-BUCKET):

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

    Opcja B, CloudFront: zostaw bucket prywatny i utwórz dystrybucję CloudFront z bucketem jako źródłem (z Origin Access Control). Dostajesz HTTPS we własnej domenie i buforowanie.

  3. 3

    Utwórz użytkownika IAM dla Aktara

    W IAM utwórz użytkownika i dołącz politykę, która pozwala tylko na to, czego Aktar potrzebuje w tym buckecie:

    {
      "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/*" }
      ]
    }

    Następnie utwórz dla użytkownika access key i skopiuj Access Key ID oraz Secret Access Key.

  4. 4

    Dodaj miejsce docelowe w Aktarze

    W Ustawienia → Miejsca docelowe → Dodaj miejsce docelowe wybierz Amazon S3 i wpisz poniższe wartości. Endpoint i region muszą odpowiadać regionowi bucketu.

  5. 5

    Przetestuj i zachowaj

    Kliknij Testuj połączenie, by upewnić się, że do bucketu można zapisywać, a publiczny URL serwuje pliki, a potem Zachowaj.

Ustawienia w Aktarze

Wpisz te wartości w Ustawienia → Miejsca docelowe → Dodaj miejsce docelowe. Nazwy pól odpowiadają tym w aplikacji.

PolePrzykładowa wartość
DostawcaAmazon S3
Endpointhttps://s3.eu-central-1.amazonaws.comUżyj regionu swojego bucketu.
Regioneu-central-1
Access Key IDAKIA…Od użytkownika IAM.
Secret Access Key••••••••
Bucketyour-bucket
Publiczny bazowy URLyour-bucket.s3.eu-central-1.amazonaws.comAlbo Twoja domena CloudFront.

Wskazówki

  • Jeśli udostępniasz linki publicznie, wybierz CloudFront z własną domeną: zyskujesz buforowanie, a sam bucket może pozostać prywatny.
  • Ogranicz politykę IAM do jednego bucketu. Aktar nigdy nie potrzebuje uprawnień do całego konta.
  • Wybierz region blisko siebie, by przesyłanie było szybsze, i blisko odbiorców, jeśli nie używasz CDN.
  • Aby przesłane pliki same się usuwały, użytkownik IAM potrzebuje też s3:GetLifecycleConfiguration i s3:PutLifecycleConfiguration dla bucketu, albo dodajesz reguły cyklu życia samodzielnie. Zobacz pliki, które same się usuwają.

Rozwiązywanie problemów

Testuj połączenie zgłasza błąd regionu lub przekierowania

Endpoint i region muszą odpowiadać regionowi, w którym utworzono bucket, np. https://s3.eu-central-1.amazonaws.com z eu-central-1.

Przesyłanie kończy się błędem Access Denied

Użytkownik IAM potrzebuje s3:PutObject dla YOUR-BUCKET/* i s3:ListBucket dla samego bucketu.

Linki zwracają 403

Brakuje polityki bucketu albo nadal blokuje ją „Block public access”, lub CloudFront nie może odczytać bucketu. Zobacz błędy Access Denied.

Nadal coś nie działa?Przejrzyj FAQ albo zapytaj na GitHubie.