Amazon S3에서 특정 확장자의 파일에 대한 콘텐츠 유형을 반복적으로 변경

Amazon S3에서 특정 확장자의 파일에 대한 콘텐츠 유형을 반복적으로 변경

정적 .json 및 .md 파일을 포함하는 중첩된 "폴더" 구조를 가진 대형 S3 버킷이 있습니다. 이러한 파일은 S3에서 text/plain올바른 application/jsontext/markdown.

새 업로드가 올바른 콘텐츠 유형을 갖도록 버킷 기본값을 업데이트했습니다.

"트리"를 탐색하고 특정 확장자와 일치하는 파일의 콘텐츠 유형을 업데이트하는 가장 좋은 방법은 무엇입니까?

답변1

다음은 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/

답변2

약간의 조사 끝에 이 도구가 이 작업을 수행할 수 있다는 사실을 발견했습니다 s3cmd. 예를 들어 JSON 파일을 application/json으로 설정하려면 다음을 수행하세요.

s3cmd --recursive modify --acl-public \
       --add-header='content-type':'application/json' \
       --exclude '' --include '.json' \
       s3://bucket/

답변3

boto/python 또는 다른 AWS API를 사용하여 손을 더럽히고 싶지 않은 한, 가장 좋은 방법은 플래그 $ aws s3api copy-object와 함께 --content-type객체를 자체적으로 복사하여 새 콘텐츠 유형을 설정하는 것입니다.

여기에선적 서류 비치s3api용.

전체 버킷에서 재귀적으로 실행하기 전에 먼저 이를 테스트해야 한다는 것은 말할 필요도 없습니다.

답변4

앞서 언급했듯이 Amazon의 도구를 사용 aws하고 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

관련 정보