AWS CLI S3
公開ドキュメントにする場合には --acl public-read が必要
バケット一覧
code:shell
$ aws s3 ls
特定バケット
code:shell
$ aws s3 ls s3://mybucket
バケット作成
code:shell
$ aws s3 mb s3://backetname
ファイルアップロード
ファイルのみ
code:shell
$ aws s3 sync test.html s3://backetname/
ディレクトリもアップロード
code:shell
$ aws s3 sync . s3://backetname/
--exact-timestamps
オプションつけないとファイルサイズが同じ場合には同期されないので、タイムスタンプベースだとこのオプションを付ける必要がある
複数ファイルのダウンロード
code:shell
$ aws s3 ls s3://example/ | awk '{print $4}' | xargs -I@@ aws s3 cp s3://example/@@ .
サイズの取得
code:shell
$ aws s3 ls s3://example/test/ --recursive --human --sum
公開設定
静的ウェブサイトホスティング有効化
code:shell
$ aws s3 website s3://backetname/ --index-document index.html
バケットポリシー
code:json
{
"Version": "2012-10-17",
"Id": "PublicRead",
"Statement": [
{
"Sid": "ReadAccess",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::backetnonamae/*"
}
]
}
バケットポリシー適用
code:shell
$ aws s3api put-bucket-policy --bucket ${BUCKET_NAME} --policy file://${PUBLIC_POLICY}
ACL 取得
code:shell
$ aws s3api get-bucket-acl --bucket <bucketname>
有効期限をつける(12 時間)
code:shell
$ aws s3 presign s3://backetname/access.log --expires-in 43200
コマンド実行すると URL が表示される