goamzを使ってGo言語でAWSを操作する
はじめに
goamzはGo言語でAWSを操作するためのパッケージです。元々のパッケージはgo-amz/amzなのですが、そこから様々な形にForkされています。今回は大きく拡張されているcrowdmob/goamzを使って、Go言語からAWSを操作してみたいと思います。
やってみた
GOPATHやGOROOTなどのGo開発環境については既に整っていることを前提とします。
goamzパッケージをインストールする
goamzはリソースごとに分かれています。今回はawsとec2をgo getを使ってインストールしました。
$ go get github.com/crowdmob/goamz/aws $ go get github.com/crowdmob/goamz/ec2
Goプログラムを書く
以下が作成したプログラム。 EC2をRunしています。
$ vi EC2RunInstance.go package main import ( "github.com/crowdmob/goamz/aws" "github.com/crowdmob/goamz/ec2" ) func main() { // Before export env AWS_ACCESS_KEY and AWS_SECRET_ACCESS_KEY auth, err := aws.EnvAuth() if err != nil { panic(err.Error()) } e := ec2.New(auth, aws.APNortheast) options := ec2.RunInstancesOptions{ ImageId: "ami-4985b048", InstanceType: "t2.micro", KeyName: "YUOR_KEYPAIR", SubnetId: "subnet-123456789", } resp, err := e.RunInstances(&options) if err != nil { panic(err.Error()) } for _, instance := range resp.Instances { println("Running: ", instance.InstanceId) } }
Goプログラムをビルドする
上記のプログラムをgo buildします。
$ go build EC2RunInstance.go
ビルドが完了するとバイナリファイル(今回の場合EC2RunInstance)が出来上がります。
$ ls -alF total 28376 drwxr-xr-x 6 smokeymonkey smokeymonkey 204 1 9 16:39 ./ drwxr-xr-x 5 smokeymonkey smokeymonkey 170 1 9 13:59 ../ -rwxr-xr-x 1 smokeymonkey smokeymonkey 7222300 1 9 15:22 EC2RunInstance*
Goプログラムを実行する
実行前にAWS_ACCESS_KEYとAWS_SECRET_ACCESS_KEYを環境変数としてセットします。
$ export AWS_ACCESS_KEY=1234567890 $ export AWS_SECRET_ACCESS_KEY=1234567890
そして実行します!
$ ./EC2RunInstance Running: i-1234567890
EC2がRunしました!
さいごに
DynamoDBやElastiCache、CloudFrontなど、様々なリソースに対応していますので、コマンド一発でシステムを立ち上げちゃうような仕組みも作れそうです。僕自身がまだGo言語に不慣れなためうまく使いこなせていませんが、今後も活用を考えてみたいと思います。