引き続き、Golang を勉強中であります
以下の点について勉強しました
出来たもの
以下のように使います
環境
$ sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1421 $ go version go version go1.8.3 darwin/amd64
ヘルプ
$ ./ec2Ctrl -h Usage of ./ec2Ctrl: -instances string Instance ID 又は Instance Tag 名を指定. -profile string Profile 名を指定. -region string Region 名を指定. (default "ap-northeast-1") -start Instance を起動. -stop Instance を停止.
EC2 一覧の取得
$ ./ec2Ctrl -profile=your-profile +------------------+---------------------+--------------+-----------------+---------------+----------------+---------+ | TAG:NAME | INSTANCEID | INSTANCETYPE | AZ | PRIVATEIP | PUBLICIP | STATUS | +------------------+---------------------+--------------+-----------------+---------------+----------------+---------+ | dev-aaa2 | i-xxxxxxxxxxxxxxxxx | t2.micro | ap-northeast-1a | 172.xx.y.187 | Not assignment | stopped | | aaaaaa | i-xxxxxxxx | t2.micro | ap-northeast-1a | 172.xx.z.39 | Not assignment | stopped | | HOGEHOGE | i-x1x1x1x1x1x1x1x1x | t2.micro | ap-northeast-1a | 172.xx.y.89 | Not assignment | stopped | | DEV-bbb | i-yyyyyyyy | t2.medium | ap-northeast-1a | 172.xx.xx.139 | Not assignment | stopped | | dev-hogehoge | i-pppppppp | t2.micro | ap-northeast-1a | 172.xx.y.117 | 52.xxx.xxx.123 | stopped | | kawahara-sandbox | i-x2x2x2x2x2x2x2x2x | t2.micro | ap-northeast-1a | 172.xx.p.28 | Not assignment | stopped | +------------------+---------------------+--------------+-----------------+---------------+----------------+---------+
EC2 の起動
$ ./ec2Ctrl -start -instances=HOGEHOGE,kawahara-sandbox +------------------+---------------------+--------------+-----------------+-------------+----------------+---------+ | TAG:NAME | INSTANCEID | INSTANCETYPE | AZ | PRIVATEIP | PUBLICIP | STATUS | +------------------+---------------------+--------------+-----------------+-------------+----------------+---------+ | HOGEHOGE | i-x1x1x1x1x1x1x1x1x | t2.micro | ap-northeast-1a | 172.xx.y.89 | Not assignment | stopped | | kawahara-sandbox | i-x2x2x2x2x2x2x2x2x | t2.micro | ap-northeast-1a | 172.xx.p.28 | Not assignment | stopped | +------------------+---------------------+--------------+-----------------+-------------+----------------+---------+ 上記のインスタンスを操作しますか?(y/n): y EC2 を起動します. i-x1x1x1x1x1x1x1x1x を起動しました. i-x2x2x2x2x2x2x2x2x を起動しました.
EC2 の停止
$ ./ec2Ctrl -stop -instances=HOGEHOGE,kawahara-sandbox +------------------+---------------------+--------------+-----------------+-------------+----------------+---------+ | TAG:NAME | INSTANCEID | INSTANCETYPE | AZ | PRIVATEIP | PUBLICIP | STATUS | +------------------+---------------------+--------------+-----------------+-------------+----------------+---------+ | HOGEHOGE | i-x1x1x1x1x1x1x1x1x | t2.micro | ap-northeast-1a | 172.xx.y.89 | 52.xxx.xxx.123 | running | | kawahara-sandbox | i-x2x2x2x2x2x2x2x2x | t2.micro | ap-northeast-1a | 172.xx.p.28 | 13.xxx.z.123 | running | +------------------+---------------------+--------------+-----------------+-------------+----------------+---------+ 上記のインスタンスを操作しますか?(y/n): y EC2 を停止します. i-x1x1x1x1x1x1x1x1x を停止しました. i-x2x2x2x2x2x2x2x2x を停止しました.
まとめ
describe や start や stop のパラメータは
以下のような xxxxxxxxInput
関数を使って定義する。
params := &ec2.DescribeInstancesInput { InstanceIds: instances, } res, err := ec2Client.DescribeInstances(params) if err != nil { fmt.Println(err.Error()) os.Exit(1) }
意外に start や stop のサンプルが無くて焦った
色々とググった結果、結局以下の公式サンプルにたどり着いた。
やっぱり、最初は公式ドキュメントを見るべき。反省。
以上
メモでした。