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
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
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
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
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
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.
| Pole | Przykładowa wartość |
|---|---|
| Dostawca | Amazon S3 |
| Endpoint | https://s3.eu-central-1.amazonaws.comUżyj regionu swojego bucketu. |
| Region | eu-central-1 |
| Access Key ID | AKIA…Od użytkownika IAM. |
| Secret Access Key | •••••••• |
| Bucket | your-bucket |
| Publiczny bazowy URL | your-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:GetLifecycleConfigurationis3:PutLifecycleConfigurationdla 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.