maco's life

最近は技術以外のことを主に記載しています。

S3から複数のファイルを落としてくるコマンドをGoで作ってみた

AwsConsoleでS3からファイル落とそうとすると,一個ずつポチポチしなきゃいけなくて辛いなーって思ったのでGoで書いてみました。※1

github.com

導入

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を初めて書いたのでコード中に良くないと思われる部分が多々あるかもれしません。 もっと良い書き方などあれば、後学のためにご指摘いただけると幸いです。

参考にした記事

※1.テストコードは書けていません