s3get

s3getはワンバイナリでS3からファイルをダウンロードするためのツール。
AWS CLIを使わずにS3からファイルをダウンロードしたい場合に利用できる。

リポジトリ

livesense-inc/go-aws-s3get

インストール

上記GitHubのページからReleasesへ移動し、動作環境に合わせたバイナリをダウンロードする。
実行権限をつけてパスの通ったディレクトリに配置すると使用できる。

例えばApple SiliconのmacOSで使う場合は以下のようにする。

$ curl -L https://github.com/livesense-inc/go-aws-s3get/releases/download/v0.2.0/s3get-darwin-arm64 -o s3get
$ chmod +x s3get
$ ./s3get --version
s3get version 0.2.0 (rev:8ca0265)

使い方

以下のコマンドでs3://バケット名/path/to/fileのファイルをダウンロードしてファイル名に保存する。

s3get -i アクセスキー -s シークレットキー -r リージョン s3://バケット名/path/to/file ファイル名

アクエスキー、シークレットキー、リージョンはAWS CLIなどのAWS関連ツールと同様、環境変数AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONで指定できる。

export AWS_ACCESS_KEY_ID=アクセスキー
export AWS_SECRET_ACCESS_KEY=シークレットキー
export AWS_REGION=リージョン(ap-northeast-1など)

ダウンロードファイルを標準出力へ直接流す

AWS CLIのs3サブコマンドと同様に出力ファイル名の部分で-を指定すると、ダウンロードしたファイルを標準出力へ直接流せる。
参考: AWS CLIでS3のファイルをcatしたい

$ s3get -i アクセスキー -s シークレットキー -r リージョン s3://バケット名/path/to/file - | grep "2023-03-29 10:00" | less

S3にシェルスクリプトを置いておいて、それをダウンロードして実行する、といった使い方をすると便利。

$ s3get -i アクセスキー -s シークレットキー -r リージョン s3://バケット名/path/to/script.sh - | bash

この方法であればダウンロードしたファイルを削除する必要がないため、一時ファイルを作成しないで済む。