Memo/AmazonWebServices/awscli/S3

http://dexlab.net/pukiwiki/index.php?Memo%2FAmazonWebServices%2Fawscli%2FS3
 

S3

  • バケット作成:LocationConstraint?を指定しないとUSリージョンに作成される
    1. aws s3api create-bucket --bucket mybucket --create-bucket-configuration LocationConstraint=ap-northeast-1
  • その他
    1. # バケット一覧
    2. aws s3 ls s3://mybucket
    3.  
    4. # s3バケットを再帰的にローカルにコピー
    5. aws s3 cp s3://mybucket/myfolder myfolder --recursive
    6.  
    7. # s3バケットとローカルを同期
    8. aws s3 sync s3://mybucket/myfolder myfolder --exclude *.tmp
    9.  
    10. # デフォルトに指定したリージョン以外の操作には --region オプションを付ける
    11. aws s3 cp s3://mybucket/myfolder myfolder --recursive --region ap-northeast-1

バケット内のファイルサイズ取得


バケット内一括削除

  • 確認は無いので注意
    1. aws s3 rm s3://mybucket/ --recursive

バケットライフサイクルの指定

  • JSONが複雑なのでManagement Consoleで設定して、その値を取得すると楽
    1. aws s3api get-bucket-lifecycle --bucket mybucket > bucket-lifecycle.30.json
    2.  
    3. cat bucket-lifecycle.30.json
    4. {
    5.     "Rules": [
    6.         {
    7.             "Status": "Enabled",
    8.             "Prefix": "",
    9.             "Expiration": {
    10.                 "Days": 30
    11.             },
    12.             "ID": "lifecycle-30"
    13.         }
    14.     ]
    15. }
    16.  
    17. aws s3api put-bucket-lifecycle --bucket mybucket --lifecycle-configuration file://bucket-lifecycle.30.json

S3 Bucketのリージョンを調べる

  • 結果が 「null」 は 「us-east-1」
    1. AWS_PROFILE=default
    2. AWS_BUCKETS="example-us example-jp"
    3. for bucket in $AWS_BUCKETS; do \
    4. echo "-- $bucket"; aws s3api get-bucket-location --bucket $bucket --profile $AWS_PROFILE; \
    5. done
    6.  
    7. -- example-us
    8. {
    9.     "LocationConstraint": null
    10. }
    11. -- example-jp
    12. {
    13.     "LocationConstraint": "ap-northeast-1"
    14. }

S3 sync

  • 例: test01とtest02だけをダウンロードしたい
    mybucket
      |-test01
      |-test02
      |-test03
  1. aws s3 sync s3://mybucket/ ./ --exclude "*" --include "test01/*" --include "test02/*"

S3のbucket policy取得

  1. AWS_PROFILE=default
  2. for bucket in $(aws --profile $AWS_PROFILE s3api list-buckets --query "Buckets[].[Name]" --output text); do \
  3. region=$(aws --profile $AWS_PROFILE s3api get-bucket-location --bucket $bucket --output text); \
  4. echo "---- $bucket"; \
  5. aws --profile $AWS_PROFILE --region $region s3api get-bucket-policy --bucket $bucket; \
  6. done > $AWS_PROFILE.s3.bucket-policy.json

署名付きオブジェクトURLの生成

  • AWS CLI v1.10.59から presign が実装された。例:1時間で有効期限が切れるURLを発行。IAMでS3Readonly権限を付与したアカウントを用意した後、
    1. aws s3 presign s3://mybucket/example.txt --expires-in 3600
  • AWS CLI(2015-10-15)では未実装だが、botoに実装済みなので、短いスクリプトで生成できるようだ

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-22 (木) 12:37:43 (122d)