(特に)静的.jsonファイルと.mdファイルを含むネストされた「フォルダー」構造を持つ大きなS3バケットがあります。これらのファイルはtext/plain、正しいapplication/jsonおよびではなく、S3によって提供されていますtext/markdown。
バケットのデフォルトを更新して、新しいアップロードが正しいコンテンツタイプになるようにしました。
「ツリー」をたどり、特定の拡張子に一致するファイルのコンテンツタイプを更新する最良の方法は何ですか?
(特に)静的.jsonファイルと.mdファイルを含むネストされた「フォルダー」構造を持つ大きなS3バケットがあります。これらのファイルはtext/plain、正しいapplication/jsonおよびではなく、S3によって提供されています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/
--acl=...
                    掘り下げた後、s3cmdツールでこれができることがわかりました。たとえば、JSONファイルをapplication / jsonに設定するには:
s3cmd --recursive modify --acl-public \
       --add-header='content-type':'application/json' \
       --exclude '' --include '.json' \
       s3://bucket/
前述のように、awsAmazonのツールを使用し、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