share facebook facebook twitter menu hatena pocket slack

2017.08.09 WED

俺の郷 〜 EC2 を起動したり停止したり、一覧を取得する郷 〜

川原 洋平

WRITTEN BY 川原 洋平

引き続き、Golang を勉強中であります

以下の点について勉強しました

  • AWS SDK for Go の使い方諸々

出来たもの

gist.github.com

以下のように使います

環境

$ 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 のサンプルが無くて焦った

色々とググった結果、結局以下の公式サンプルにたどり着いた。


docs.aws.amazon.com

やっぱり、最初は公式ドキュメントを見るべき。反省。

以上

メモでした。

元記事はこちら

俺の郷 〜 EC2 を起動したり停止したり、一覧を取得する郷 〜