AwsConsoleでS3からファイル落とそうとすると,一個ずつポチポチしなきゃいけなくて辛いなーって思ったのでGoで書いてみました。※1
導入
1.aws configureでaccess_key_idとsercret_keyを設定
$ aws configure AWS Access Key ID [NONE]: *** AWS Secret Access Key [NONE]: ***
Regionとかも設定するように進められるけど、今はここで Tokyoに固定しちゃってます。
2.ビルドする
$ go get -d github.com/MacoTasu/g3 $ go build $ go install
これでg3コマンドは使えるようになったはず。
使い方
使い方は簡単でbucketと落としてきたい対象のファイル or ディレクトリー名を指定するだけです。 コマンドを実行したカレントディレクトリに対象のファイル or ディレクトリーを作成します。
$ g3 get <bucketname> <target file or directory>
ex) $ g3 get test // バケット内のファイルを全て落としてくる $ g3 get test test/hoge.png // testディレクトリを作成してhoge.pngを落とす $ g3 get test test/ // testディレクトリを作成して、testディレクトリ以下全てのファイルを落とす (※いずれの場合も上限1000個)
^のような感じに使えます。 正規表現とかでディレクトリ内のファイルの絞込できるともっと便利そうかなとブログ書きながら思った。
最後に
Goを初めて書いたのでコード中に良くないと思われる部分が多々あるかもれしません。 もっと良い書き方などあれば、後学のためにご指摘いただけると幸いです。
参考にした記事
- Configuring the AWS Command Line Interface - AWS Command Line Interface
- http://qiita.com/keisukeP/items/f4d680eb9e8f93263fa9
- go - How to check whether a file or directory denoted by a path exists in golang? - Stack Overflow
- 高速にGo言語のCLIツールをつくるcli-initというツールをつくった | SOTA
- Go言語でコンソールにプログレスバーを表示するライブラリ「pb」 - 雑記
※1.テストコードは書けていません