2017年1月11日水曜日

goamzを使ってGoでAWSに接続してEC2のインスタンス一覧を出そう的なお話

  • このエントリーをはてなブックマークに追加

とりあえずGoを再度勉強し始めたわけで。
今度作るものはPHP使わずGoでやろう的なことなので、まずは簡単なものから。

ってことで今日はEC2のインスタンス一覧を出す的なお話をば。

package main

import (
    "fmt"
    "github.com/goamz/goamz/aws"
    "github.com/goamz/goamz/ec2"
    "time"
)

func main() {
    auth, err := aws.GetAuth("xxxxxxxxxx", "xxxxxxxxxx", "", time.Time{})

    if err != nil {
        panic(err.Error())
    }
    e := ec2.New(auth, aws.APNortheast)

    res, err := e.DescribeInstances(nil, nil)
    if err != nil {
        panic(err.Error())
    }

    for _, r := range res.Reservations {
        for _, i := range r.Instances {
            fmt.Println(
                i.InstanceId,
                i.InstanceType,
                i.PrivateIPAddress,
                i.State.Name,
            )
        }
    }
}

aws/aws-sdk-goじゃなくて goamz/goamzを使うのは、aws-sdk-goはなかなかめんどいからっていう。
それとaws.GetAuthとやっているけど、
export AWS_ACCESS_KEYとAWS_SECRET_ACCESS_KEYをしておいて、aws.EnvAuth()っていうやり方もある。
とりあえずこんな感じ。

Adsense