s3testerのコンパイル

投稿者: | 8月 20, 2023

オブジェクトストレージのテストで便利なのがs3tester

https://github.com/s3tester/s3tester

オブジェクトストレージにテスト用のバケットを作成して、以下のコマンドラインで簡単にテストができてしまう。

export AWS_ACCESS_KEY_ID=<アクセスキー>
export AWS_SECRET_ACCESS_KEY=<シークレット>
s3tester -bucket=<バケット名> -endpoint="<エンドポイントURL>"

 

しかし、s3testerの最新版バイナリは、Linux/amd64のバイナリしかない。Windowsとかでも使いたかったのに。(古いバージョンだとWindowsバイナリもある。)

ならばs3testerをコンパイルしてしまえというのが今回のテーマ。

 

閑話休題

 

s3testerは、goで記載されている。goはクロスプラットフォームをサポートしているっぽい。なので、これからクロスプラットフォームでバイナリを作る。

 

環境

Ubuntu 22.04.3 amd64でgo1.18.1 

s3testerの要件は、go 1.7以上なので大丈夫っぽい。

 

早速クロスコンパイル

curl -OL https://github.com/s3tester/s3tester/archive/refs/tags/v3.0.0.tar.gz
tar xfz v3.0.0.tar.gz
cd s3tester-3.0.0/
go get github.com/s3tester/s3tester

GOOSにOS、GOARCHにCPUアーキテクチャを書けばいいらしい。

 

以下が試した組み合わせ

#MacOSの場合
env GOOS=darwin GOARCH=arm64 go build -o s3tester_darwin_arm64
env GOOS=darwin GOARCH=amd64 go build -o s3tester_darwin_amd64

#Linuxの場合
env GOOS=linux GOARCH=arm64 go build -o s3tester_linux_arm64
env GOOS=linux GOARCH=amd64 go build -o s3tester_linux_amd64

#Windowsの場合
env GOOS=windows GOARCH=386 go build -o s3tester_windows_386.exe
env GOOS=windows GOARCH=arm64 go build -o s3tester_windows_arm64.exe
env GOOS=windows GOARCH=amd64 go build -o s3tester_windows_amd64.exe

全てのコマンドラインでバイナリがちゃんとできてしまった。ちなみに、サポートしている環境を調べるには

go tool dist list

と実行すると、サポートされるGOOSとGOARCHの組み合わせが出てくる。

Pythonでもクロスプラットフォームのバイナリが作れたが、Linuxの環境だけでクロスプラットフォームバイナリができたのは簡単。これは便利だぁ。今の仕事では1ミリも役に立たないけどGoはありだなぁ。

コメントを残す