AWS-CLI使い方まとめ(S3編)
本番環境へSSH接続できなくて(権限なし)、DBのdumpファイルをどうやってGETしようか試行錯誤した時の方法です。
セッションマネージャーからAWS-CLIでS3バケットにアップロードして、S3経由で取得できました。
これは色々応用できるなと思い、AWS-CLIの使い方をまとめておきます。
ということでまずはS3操作について...
冒頭でやろうとしていたことに加え、不特定多数に一時的なファイルを配布をする際に使える。
セッションマネージャーからAWS-CLIでS3バケットにアップロードして、S3経由で取得できました。
これは色々応用できるなと思い、AWS-CLIの使い方をまとめておきます。
ということでまずはS3操作について...
事前準備
AWS-CLIのインストール
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html
$ aws --version aws-cli/1.16.170 Python/3.7.4 Darwin/17.5.0 botocore/1.12.160
設定
以下2ファイルを用意 (無ければ作る)
$ cat ~/.aws/config [default] region = ap-northeast-1 $ cat ~/.aws/credentials [default] aws_access_key_id = AAAAAAAAAAAAAAAAAAAA aws_secret_access_key = BBBBBBBBBBBBBBB/CCCCCCCCCCCCCCCCCCCCCCCC
※複数環境を使い分ける場合は、credentialsに設定した[キー]を --profile [キー] で指定する
バケットの一覧
書式
aws s3 ls
使用例
$ aws s3 ls 2019-10-02 12:57:09 test.images 2019-10-25 11:52:43 test.bucket 2019-10-23 17:46:10 test.xxxxxxxx
指定バケット配下のファイルの一覧
書式
aws s3 ls {バケット名}
使用例
$ aws s3 ls test.bucket 2019-10-04 18:24:00 1289018 image-0001.png 2019-10-03 16:09:47 1289018 image-0002.png 2019-10-03 16:11:29 1289018 image-0003.png 2019-10-02 13:12:36 10 test-0001.txt 2019-10-03 16:16:04 10 test-0002.txt
ファイルアップロード
※厳密にはアップロードやダウンロードといったコマンドはなく、cpサブコマンドによって行う書式
aws s3 cp {アップロードするファイル} s3://{アップロード先のバケット}
使用例
$ aws s3 cp test-0003.txt s3://test.bucket upload: ./test-0003.txt to s3://test.bucket/test-0003.txt
ファイルダウンロード
書式
aws s3 cp s3://{バケット+対象ファイル} {ダウンロード先}
使用例
$ aws s3 cp s3://test.bucket/test-0003.txt ./ download: s3://test.bucket/test-0003.txt to ./test.txt
ファイルリネーム/バケット間移動
mvサブコマンドでリネームやバケット間の移動書式
aws s3 mv s3://{バケット+対象ファイル} s3://{バケット+対象ファイル}
使用例
$ aws s3 mv s3://test.bucket/test-0003.txt s3://test.bucket/test-0004.txt move: s3://test.bucket/test-0003.txt to s3://test.bucket/test-0004.txt
ファイル削除
書式
aws s3 rm s3://{削除するファイルのバケット}/{削除するファイル}
使用例
$ aws s3 rm s3://test.bucket/test.txt delete: s3://test.bucket/test.txt
一時的なURLの発行
アップロードしたファイル、もしくはアップロード済みのファイルに一時的にURLを設定して外部からダウンロードできるようする。冒頭でやろうとしていたことに加え、不特定多数に一時的なファイルを配布をする際に使える。
- 書式
aws s3 presign s3://{公開するファイルのバケット}/{公開対象ファイル} ¥ --expire-in {公開する期間(秒)}
※ --expire-inは任意オプションで、省略した場合は3600(1時間)になる
使用例
$ aws s3 presign s3://test.bucket/test-0003.txt --expires-in 60 https://test.bucket.s3.amazonaws.com/test-0003.txt ?AWSAccessKeyId=AAAAAAAAAAAAAAAAAAAA &Signature=RRRRRRRRRRRRRR&Expires=1575446854
↑で返ってきたURLで対象ファイルをダウンロードできる。発行した時間から60秒を過ぎると以下のエラーとなる。
<Error> <Code>AccessDenied</Code> <Message>Request has expired</Message> <Expires>2019-12-04T00:00:00Z</Expires> <ServerTime>2019-12-04T00:00:00Z</ServerTime> <RequestId>nnn</RequestId> <HostId> xxxxxxxx </HostId> </Error>
マニュアル
なお、各サブコマンドについてのマニュアルも用意されているaws s3 [サブコマンド] help
コメント
コメントを投稿