Help us understand the problem. What is going on with this article?

AWS CLIを使ってS3のバケット内オブジェクトのpermission(ACL)を一括変更する

More than 5 years have passed since last update.

背景

s3バケット内のオブジェクトのパーミッションでeveryoneにリード権限がないので、サイトが公開できない...(なぜ、、wordpressとか使っているとたまにある...)

↓↓↓↓↓

_人人人人人人人人人人人人人人人人人人人人人人人人人人人人_
バケット内のオブジェクトに一括でpublic-readの権限を与えたい
 ̄YYYYYYYYYYYYYYYYYYYYYYYYYYYY ̄

↓↓↓↓↓

なんかブラウザのコンソール画面からバケットに権限与えても各オブジェクトのpermissionは変わらないしどうしようと思ってググったところ

下記で公開されているようなsdkを使ってパーミッションを変更するもの等ありました。

、、、がsdk入れるのめんどくさい。。。
AmazonLinuxAMIだからaws-cliは入ってる。これでいけるだろ、いけるに決まってる。
と思い書いてみました。

AWS CLIを使ってS3のバケット内オブジェクトのpermission(ACL)を一括変更する

  • 対象のs3バケットに権限のあるアクセスキーを登録
$ aws configure
AWS Access Key ID []:
AWS Secret Access Key []:
Default region name [ap-northeast-1]:
Default output format [json]:

もしくは

$ export AWS_ACCESS_KEY_ID=xxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=xxxxxxxxxx
$ export AWS_DEFAULT_REGION=ap-northeast-1
$ export AWS_DEFAULT_OUTPUT=json

参考:【AWS】CLIの初期設定について(認証情報とコマンド補完)

  • スクリプト
[直列で実行]
aws s3 ls --recursive s3://{{ bucketName }}/ | awk '{print $4}' | xargs -I{} aws s3api put-object-acl --acl public-read --bucket {{ bucketName }} --key "{}"

[並列で実行]
aws s3 ls --recursive s3://{{ bucketName }}/ | awk '{print $4}' | xargs -P4 -I{} aws s3api put-object-acl --acl public-read --bucket {{ bucketName }} --key "{}"

※ 並列実行は試していないが、直列だと結構時間かかったので...(-P 並列実行数 のオプションをつけて)

  • あるフォルダのみ対象にする
aws s3 ls --recursive s3://{{ bucketName }}/path/ | awk '{print $4}' | xargs -P4 -I{} aws s3api put-object-acl --acl public-read --bucket {{ bucketName }} --key "{}"

こんな感じでできる。
lsの値にpath指定をしてあげればOK!

もっと良い方法ありそうだが、なかなかでてこなかったのでひとまずこれで乗り切りました。
もし良い方法あれば教えてください。

[追記]
s3cmdを入れる方がだいぶ楽だったようです..笑

s3cmd setacl -r --acl-public s3://{{ bucketName }}
eure
オンラインデーティングサービス「Pairs」の運営・開発をしている企業。様々なモダンな技術を駆使してビジネスを成長させています。
https://eure.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした