Aktualizuję istniejące obiekty w module Amazon S3, aby ustawić niektóre metadane. Chciałbym ustawić nagłówek HTTP Expires
dla każdego obiektu, aby lepiej obsługiwać klientów HTTP/1.0.Ustaw nagłówek Expires dla istniejącego obiektu S3 przy użyciu pakietu AWS Java SDK
Używamy AWS Java SDK, która pozwala na zmiany metadanych obiektu bez ponownego przesyłania treści obiektu. Robimy to za pomocą CopyObjectRequest, aby skopiować obiekt do samego siebie. Klasa ObjectMetadata pozwala nam ustawić Cache-Control
, Content-Type
i kilka innych nagłówków. Ale nie nagłówek Expires
.
Wiem, że S3 przechowuje i obsługuje nagłówek Expires
dla obiektów PUT przy użyciu interfejsu API REST. Czy istnieje sposób, aby to zrobić z pakietu Java SDK?
Updated aby wskazać, że używamyCopyObjectRequest
Powinienem był lepiej wyjaśnić, że używamy 'CopyObjectRequest', aby zrobić to teraz. Zaktualizowałem pytanie, aby to odzwierciedlić. – bkirkbri
'ObjectMetadata.setHeader' jest oznaczony jako tylko do użytku wewnętrznego. Czy udało ci się to z powodzeniem? Nasz kod zostanie uruchomiony tylko raz, więc nie będziemy musieli się nim martwić, jeśli Amazon wprowadzi zmiany. Ale YMMV. – bkirkbri
Hmm, nie byłem świadom tego ograniczenia, ale przypomnij sobie, że w pewnym momencie użyłem słowa "Wygasa"; Mogę jednak być w błędzie, o ile często korzystam z innych pakietów SDK do interakcji z S3 (np. C#/Python, które zdecydowanie to wspierają) i mogłem to wymieszać - sam kod nie różni się od innego 'setXYZHeader()' metody obecnie (patrz [ObjectMetadata.java] (https://github.com/amazonwebservices/aws-sdk-for-java/blob/master/src/main/java/com/amazonaws/services/s3/model/ObjectMetadata. java # L141)), więc ograniczenie byłoby oparte na niewidocznym efekcie ubocznym, jeśli takie wystąpią. –