2012-01-18 26 views
13

Czy można niestandardowe nagłówki na Amazon S3 z dowolnymi nazwami?Niestandardowe nagłówki na Amazon S3

Na przykład używam CDN wskazującego na Amazon S3 jako serwer źródłowy, i aby włączyć zaawansowaną funkcjonalność w CDN, potrzebuję użyć niestandardowego nagłówka "x-coś-coś" ...

Widzę, że można to zrobić z "x-amz-meta- (coś)", ale co z czymś bardziej ogólnym, jak "x- (coś) - (coś)" bez amz?

Amazon S3 custom headers

+0

Czego nie można zrobić z nagłówkami prefiksowanymi w ten sposób? – Kekoa

Odpowiedz

11

Nie sądzę, jest to możliwe z ich current API. Obejmują one główne nagłówki potrzebne do buforowania i współdziałania z przeglądarką.

Sądzę, że są one bezpieczne, pozwalając tylko na x-amz-meta- prefiksowane niestandardowe nagłówki, prawdopodobnie w celu uniknięcia konfliktu z wybranymi przez użytkownika nagłówkami, gdy aktualizują swoje api w przyszłości.

Jeśli potrzebujesz niestandardowych atrybutów dołączonych do obiektów, powinno być trywialnie, aby przeanalizować x-amz-meta- w aplikacji klienckiej.

+5

"Trivial", jeśli kontrolujesz aplikację kliencką ... ale jeśli jest to strona trzecia, nie jest to takie proste! – Jeff

+1

@Jeff Przypuszczam, że jeśli nie masz dostępu bezpośrednio do AWS, jesteś zobowiązany do przestrzegania ograniczeń związanych z tym, czego używasz. – Kekoa

+0

Dzięki, zastanawiałem się, dlaczego nie mogłem samodzielnie ustawić nagłówków niestandardowych. The 'x-amz-meta-'prefix rzeczywiście to zrobił (fakt źle udokumentowany przez Amazon). – Frederic

5

Ten piękny artykuł wyjaśnia wszystko https://medium.com/@tom.cook/edge-lambda-cloudfront-custom-headers-3d134a2c18a2

tldr:

Ty can not-nie tylko z S3. Musisz użyć Cloudfront i lambda poprzez Lambda @ Edge. Jest to integracja między Lambda i CloudFront. Pozwala na uruchomienie Lambdas w ramach CloudFront. To pozwala na zmianę nagłówków między innymi. Więc jeśli masz dobry dostęp do s3 za pośrednictwem CloudFront, to może to być opłacalna opcja.

0

Udało mi się to osiągnąć za pomocą s3cmd tool. Napisałem synchronizacji skrypt, który synchronizuje moje statyczne witryny przy użyciu parametru --cache-control na urządzeniu klienckim AWS, a następnie ręcznie resetuje go i dodaje kilka innych nagłówków dla kilku konkretnych plików:

CD/appropriatedirectory

# Usuń aktualną witrynę
AWS s3 s3 rm: // yourbucket --recursive --exclude 'logs/*'

# Prześlij nowy serwis, ustawienie nagłówka cache do 1 miesiąca dla wszystkich plików synchronizację
AWS S3. s3: // yourbucket --exclude '.idea/*' --exclude '.git/*' --exclude '.gitignore' - cache-control max-age = 2592000

# Zastępuje nagłówki pamięci podręcznej dla niektóre pliki
python/pathToS3cmd/s3cmd modify --add-header = "Kontrola pamięci podręcznej: brak pamięci podręcznej, brak sklepu, konieczność ponownej weryfikacji" s3: //yourbucket/somefile.html
python/pathToS3cmd/s3cmd/s3cmd modify --add-header = "Wygasa: 0" s3: //yourbucket/somefile.html
python/pathToS3cmd/s3cmd/s3cmd modify --add-header = "Pragma: no-cache" s3: // yourbucket /somefile.html

+0

To ma trochę zamieszania w ignorowaniu dzienników, plików IntelliJ i Git. Zostawiłem go jako pomocny przykład praktycznego skryptu synchronizacji. –