AWS S3에서 캐시 제어를 추가하는 방법은 무엇입니까?
s3cmd 명령으로 20000 개의 파일을 AWS S3로 옮겼습니다. 이제 모든 이미지 (.jpg)에 대한 캐시 제어를 추가하고 싶습니다.
이러한 파일은 (s3 : // bucket-name / images /)에 있습니다. s3cmd로 모든 이미지에 대해 캐시 제어를 추가하려면 어떻게해야합니까? 아니면 헤더를 추가하는 다른 방법이 있습니까?
감사
현재 업스트림 마스터 브랜치 ( https://github.com/s3tools/s3cmd )를 사용해보십시오. 이제 modify
다음과 같이 사용되는 명령이 있습니다.
./s3cmd --recursive modify --add-header="Cache-Control:max-age=86400" s3://yourbucket/
또한 AWS의 자체 클라이언트와 함께 :
aws s3 sync /path s3://yourbucket/ --recursive --cache-control max-age=604800
다시 업로드하지 않고 타사 도구를 사용하지 않고도 S3의 객체에 대한 캐시 제어와 같은 메타 데이터를 조정하려면 AWS CLI를 사용하여 다음을 수행 할 수 있습니다. 선택한 설정으로 메타 데이터를 재정의하면서 개체를 자체로 복사합니다.
aws s3api copy-object --copy-source <bucket-name>/<file> --bucket <bucket-name> --key <file> --metadata-directive REPLACE --cache-control "max-age=3600"
언급 한대로 버킷에 이미 존재하는 기존 파일 세트에서 수행하려면 find에서이 명령을 처리하십시오.
find . -type f -exec aws s3api copy-object --copy-source <bucket-name>/{} --bucket <bucket-name> --key {} --metadata-directive REPLACE --cache-control "max-age=3600"
대체 <bucket-name>
당신의 버킷의 이름으로
경고 : 이것은 acl과 같은 파일에있는 기존의 모든 메타 데이터를 덮어 씁니다. 명령에 추가 플래그를 추가하여 필요한 것을 설정합니다 (예 : --acl public-read
전체 공개 액세스 권한 부여). (@jackson에게 감사드립니다)
내 버킷에는 mp4, jpg 및 기타 파일이 있습니다. 업데이트하려는 파일은 "하위 버킷"(예 : https://s3.amazonaws.com/my.bucket/sub-directory/my-video.mp4 )에 저장됩니다. 제 경우에는 mp4 파일의 캐시 컨트롤 만 업데이트하고 싶었습니다.
aws s3 cp \
s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ \
--exclude '*.jpg' --exclude '*.png' \
--cache-control 'max-age=31104000' \
--recursive
이것이 무엇을하는지 테스트하기 위해 --dryrun
플래그를 사용할 수 있습니다 .
aws s3 cp --dryrun \
s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ \
--exclude '*.jpg' --exclude '*.png' \
--cache-control 'max-age=31104000' \
--recursive
PUT / ObjectName HTTP/1.1
Host: BucketName .s3.amazonaws.com
Date: date
x-amz-meta-Cache-Control : max-age= <value in seconds>
Authorization: signatureValue
모든 메타 데이터 설정에는 키-값 쌍이 포함됩니다. 캐시 제어 메타 데이터 키는 "Cache-Control"이고 값은“max-age=<time for which you want your object to be accessed from cache in seconds>”
두 가지 방법으로 적절한 헤더와 함께 Amazon S3 서버에 HTTP PUT 요청을 전송하여 Amazon S3 객체에 대한 캐시 제어 사용자 지정 헤더를 설정할 수 있습니다.
Amazon S3 REST API PUT 객체 요청을 사용하여 캐시 제어 메타 데이터 설정-프로그래머 인 경우 자체 소프트웨어 프로그램을 작성하여 Amazon S3 REST 또는 SOAP API를 사용하여 PUT 객체 요청으로 사용자 지정 헤더를 설정할 수 있습니다. 이 웹 사이트는 Amazon S3 REST API만을 참조합니다. SOAP API 사용 방법에 대한 자세한 내용은 AWS 설명서 웹 사이트를 참조하십시오. Bucket Explorer 사용자 인터페이스를 사용하여 캐시 제어 메타 데이터 설정-소프트웨어 프로그램을 작성하는 대신 마우스 클릭을 사용하여 캐시 제어와 같은 사용자 지정 HTTP 헤더를 설정하려면 Bucket Explorer의 사용자 인터페이스를 사용할 수 있습니다. 이 사용자 지정 HTTP 헤더를 사용하면 요청 / 응답 체인을 따라야하는 캐싱 동작을 지정하고 캐시가 요청 또는 응답을 방해하지 않도록 할 수 있습니다.
for more information please check How to Set Cache Control Header for Amazon S3 Object?`
If you want to avoid third party tools, and this is a one-time task, you can use the AWS console.
- Browse to your s3 bucket
- Select all of the objects you want to change
- Click Actions -> Change metadata
- Select Cache-Control for the key, input whatever control you want as the value
- Save
Just upgrade the s3cmd to version 1.5.1 and the issue will resolve.
(Since the OP asked for any other way)
You can also do it via aws-cli
, e.g. (v: 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
Although please note that you will rewrite any existing object.
Another really simple way to do this is to use S3 Browser: http://s3browser.com/ You can simply just shift click or ctrl+a to select all the images you want; then just go to the 'Http Headers' tab and click - 'Add new header' & then 'Apply changes'. It automatically kept all my other permissions and headers.
If you use S3 alot; its a sweet app anyways esp if you have enormous uploads (there's nothing better in the world of ftp, dropbox or otherwise!)
참고URL : https://stackoverflow.com/questions/22501465/how-to-add-cache-control-in-aws-s3
'code' 카테고리의 다른 글
OSX의 Hadoop "SCDynamicStore에서 영역 정보를로드 할 수 없음" (0) | 2020.12.14 |
---|---|
Maven으로 jar 소스를 다운로드하는 방법은 무엇입니까? (0) | 2020.12.14 |
매개 변수화 된 빌드에서 매개 변수에 액세스하는 방법은 무엇입니까? (0) | 2020.12.14 |
아이콘 세트를 Android Studio 프로젝트로 가져 오는 방법 (0) | 2020.12.14 |
MongoDB가 서버를 시작할 수 없음 :이 mongod 빌드에서는 기본 스토리지 엔진 'wiredTiger'를 사용할 수 없습니다. (0) | 2020.12.14 |