정적 .json 및 .md 파일을 포함하는 중첩 된 “폴더”구조를 가진 큰 S3 버킷이 있습니다. 이러한 파일은 S3 text/plain
에서 올바른 application/json
및 text/markdown
.
새 업로드에 올바른 콘텐츠 유형이 포함되도록 버킷 기본값을 업데이트했습니다.
“확장”을 걷고 특정 확장자와 일치하는 파일의 컨텐츠 유형을 업데이트하는 가장 좋은 방법은 무엇입니까?
답변
다음은 aws cli 도구로이를 수행하는 방법의 예입니다. cp 도구를 사용하면 재귀 옵션을 사용할 수 있지만 s3api 도구로는 할 수 없다고 생각합니다. 이 경우 많은 SVG를 수정하고 있습니다. –dryrun 옵션을 해제 할 준비가되면 제거하십시오.
aws s3 cp \
--exclude "*" \
--include "*.svg" \
--content-type="image/svg+xml" \
--metadata-directive="REPLACE" \
--recursive \
--dryrun \
s3://mybucket/static/ \
s3://mybucket/static/
답변
boto / python 또는 다른 AWS API를 사용하여 손을 더럽 히지 않으려면 플래그 $ aws s3api copy-object
와 함께 --content-type
객체를 복사하여 새 콘텐츠 유형을 설정하는 것이 가장 좋습니다 .
다음 은 s3api에 대한 설명서 입니다.
전체 버킷에서 재귀 적으로 실행하기 전에 먼저 테스트해야한다는 것은 말할 필요도 없습니다.
답변
파고 난 후에 s3cmd
도구가 이것을 할 수 있음을 발견했습니다 . 예를 들어 JSON 파일을 application / json으로 설정하려면 다음을 수행하십시오.
s3cmd --recursive modify --acl-public \
--add-header='content-type':'application/json' \
--exclude '' --include '.json' \
s3://bucket/
답변
앞에서 언급했듯이 aws
Amazon의 도구를 사용하고 s3api를 사용하여 객체를 복사 metadata-directive=REPLACE
하고 콘텐츠 유형을 변경하는 데 사용할 수 있습니다.
때로는 데이터베이스에 저장된 파일 이름을 반복하고 싶기 때문에 여기에 넣습니다. 이것이 cli를 통해 수행 할 수있는 방법입니다.
aws s3api copy-object \
--content-type="application/vnd.android.package-archive" \
--metadata-directive="REPLACE" \
--copy-source "MYBUCKET/FILE.apk" \
--bucket "MYBUCKET" \
--key "FILE.apk" \
--acl public-read