Soru AWS S3'te önbellek denetimi nasıl eklenir?


S3cmd komutuyla 20000 dosyayı AWS S3'e taşıdım. Şimdi tüm görüntüler için önbellek denetimi eklemek istiyorum (.jpg)

Bu dosyalar (s3: // bucket-name / images /) içinde bulunur. Tüm görüntüler için önbellek denetimini s3cmd ile nasıl ekleyebilirim veya üstbilgi eklemek için başka bir yol var mı?

Teşekkürler


44
2018-03-19 09:33


Menşei




Cevaplar:


Lütfen mevcut ana akım dalını deneyin (https://github.com/s3tools/s3cmd), şimdi olduğu gibi modify komutu, aşağıdaki gibi kullanılır:

./s3cmd --recursive modify --add-header="Cache-Control:max-age=86400" s3://yourbucket/

56
2018-03-20 03:34



Merhaba, cevabınız için teşekkürler, bunu denedim ve HATA gibi hatayı alıyorum: Geçersiz komut: u'modify ' - Rajaraman
Bu değişiklikten sonra erişim veren dosyalar reddedildi ... - shajin
@Rajaraman bu konuda bir şey biliyor musun? bu adımdan sonra gösterme erişimi reddedildi - shajin
Bu çalışır ... s3cmd sürüm 1.5.0-rc1 ile test edildi AMA !: Bu, nesnenin İçerik türü üstbilgisini "ikili / okt-akış" olarak değiştirir! Tek bir PNG-dosyası ile test edilmiştir. - Hardy
Aynı problemi @Hardy ile yaşadım. Ayrıca tüm dosyalarımdan herkese açık okunabilirliği kaldırdı. Dikkat et. - Andrew Badr


Ayrıca AWS'nin kendi müşterisi ile:

aws s3 sync /path s3://yourbucket/ --recursive --cache-control max-age=604800

34
2017-09-13 16:40



Bu, bilgisayarınızda yerel bir yoldan AWS'ye yüklüyorsanız ve her şeyin doğru önbellek denetimini sürdürmesini istiyorsanız çalışır. - youanden
Bu, önbellek başlıklarını ilk eşitleme zamanında ayarlamaya çalışır, ancak varolan dosyaları güncelleştirmez. Böyle bir güncellemeyi zorlayabilirsiniz find . -type f -exec touch '{}' \;; aws s3 sync /path s3://yourbucket/ --recursive --cache-control max-age=604800 - Matt Byrne
Teşekkürler @MattByrne hile yaptı! - sidonaldson
OP, S3'deki mevcut dosyaları güncellemeyi istiyor, yeni dosyaları yüklemiyor - Beowulfenator
Mi --recursive hala gerekli? CLI belgeleri bir argüman olarak listelenmiyor. docs.aws.amazon.com/cli/latest/reference/s3/sync.html - Corey McMahon


S3'teki bir nesnede önbellek denetimi gibi meta verileri yeniden yüklemek zorunda kalmadan ve üçüncü taraf araçlarını kullanmak zorunda kalmadan ayarlamak için AWS CLI ile aşağıdakileri yapabilirsiniz. Meta verileri seçtiğiniz ayarlarla geçersiz kılarken nesneyi kendisine kopyalar:

aws s3api copy-object --copy-source <bucket-name>/<file> --bucket <bucket-name> --key <file> --metadata-directive REPLACE --cache-control "max-age=3600"

Bu komutu, pakette varolan varolan bir dosya kümesinde yapmak için bir yordamda işleyin:

find . -type f -exec aws s3api copy-object --copy-source <bucket-name>/{} --bucket <bucket-name> --key {} --metadata-directive REPLACE --cache-control "max-age=3600"

değiştirmek <bucket-name> senin kova adıyla

UYARI: Bu, mevcut tüm meta verilerinizi acl gibi dosyalara yazacaktır, sadece komut için ek işaretler ekleyin. --acl public-read İhtiyacınız olanı ayarlamak için (teşekkürler


17
2018-06-02 04:58



Bu, önbellek başlıklarımı belirledi, ancak dosyalarda ayarladığım "herkese açık" izinleri kaldırmıştı (bunları s3 tarafından barındırılan sitemde görüntülenebilir değil). Dosyaları herkese açık tutmak için, --acl public-read. - Jackson


Koyumun mp4, jpg ve diğer dosyaları var. Güncellemek istediğim dosyalar bir "alt-kovada" saklanır (ör: https://s3.amazonaws.com/my.bucket/sub-directory/my-video.mp4). Benim durumumda sadece mp4 dosyalarındaki önbellek denetimini güncellemek istedim:

aws s3 cp \
   s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ \
   --exclude '*.jpg' --exclude '*.png' \
   --cache-control 'max-age=31104000' \
   --recursive

Bunun ne yapacağını test etmek için --dryrun bayrak:

aws s3 cp --dryrun \
   s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ \
   --exclude '*.jpg' --exclude '*.png' \
   --cache-control 'max-age=31104000' \
   --recursive

13
2017-10-06 13:56



Bu hatayı alıyorum: "CopyObject işlemini çağırırken: Bu kopya isteği, nesnenin meta verilerini, depolama sınıfını, web sitesi yönlendirme konumunu veya şifreleme özelliklerini değiştirmeden bir nesneyi kendisine kopyalamaya çalıştığı için yasa dışıdır." - Flimm
Düzeltmek için eklemek zorundaydım --metadata-directive REPLACE --acl public-read. - Flimm


PUT / ObjectName HTTP/1.1 
Host: BucketName .s3.amazonaws.com 
Date: date 
x-amz-meta-Cache-Control : max-age= <value in seconds> 
Authorization: signatureValue 

Her Meta Veri ayarı bir Anahtar-Değer çifti içerir. Önbellek denetimi meta veri anahtarı “Önbellek Kontrolü” ve Değer “max-age=<time for which you want your object to be accessed from cache in seconds>”

Amazon S3 Nesneleri için Cache Control Özel Üstbilgisini, uygun üstbilgilerle HTTP PUT Request'e HTTP PUT Request göndererek iki şekilde ayarlayabilirsiniz:

Önbellek Denetimi Meta Verilerini Amazon S3 REST API PUT Nesne İsteği Kullanarak Ayarlayın - Bir programcı iseniz, Özel Başlıkları PUT Nesne İsteği ile ayarlamak için Amazon S3 REST veya SOAP API'lerini kullanmak üzere kendi yazılım programınızı yazabilirsiniz. Bu web sitesi sadece Amazon S3 REST API'lerini ifade eder, lütfen SOAP API'lerinin nasıl kullanılacağına ilişkin ayrıntılar için AWS dokümantasyon web sitesine bakınız. Buek Explorer Kullanıcı Arabirimini kullanarak Önbellek Denetimi Meta Verilerini Ayarla - Bir yazılım programı yazmak yerine fare tıklamaları kullanarak önbellek denetimi gibi özel HTTP üstbilgileri ayarlamak isterseniz, bunun için Bucket Explorer'ın kullanıcı arabirimini kullanabilirsiniz. Bu Özel HTTP Üstbilgisi ile, istek / yanıt zinciriyle takip edilmesi gereken önbellek davranışını ve önbelleklerin istek veya yanıtı engellemesini önleyebilirsiniz.

daha fazla bilgi için lütfen kontrol edin Amazon S3 Nesnesi için Cache Control Header nasıl ayarlanır?'


3
2018-03-19 09:40





Sadece s3cmd'yi 1.5.1 sürümüne yükseltin ve sorun çözülecek.


1
2018-05-14 05:39





(OP başka bir şekilde istediği için)

Bunu da üzerinden yapabilirsiniz aws-cli, Örneğin. (Hacim: aws-cli/1.8.8 Python/2.7.2 Darwin/12.5.0):

aws s3api put-object \
--bucket mybucket \
--key my/key \
--cache-control max-age=1 \
--body myfile.txt

Bununla birlikte, mevcut herhangi bir nesneyi yeniden yazacağınızı lütfen unutmayın.


1
2017-10-22 12:30





Bunu yapmanın başka bir basit yolu da S3 Tarayıcısını kullanmaktır: http://s3browser.com/ İstediğiniz tüm görüntüleri seçmek için sadece tıklamayı veya ctrl + a tuşlarını vurabilirsiniz; sonra sadece 'Http Headers' sekmesine gidin ve 'Add new header' ve 'Apply changes' tıklayın. Tüm diğer izinlerimi ve başlıklarımı otomatik olarak sakladı.

S3 çok kullanırsanız; Eğer muazzam yüklemeler varsa, onun bir tatlı uygulaması zaten esp (ftp, dropbox veya başka türlü dünyasında daha iyi bir şey yok!)


-2
2017-09-25 17:31