この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
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言語に不慣れなためうまく使いこなせていませんが、今後も活用を考えてみたいと思います。