AWS SDK for GOを使ってRoute53のレコードを取得する
タイトル通り、サンプル作ってみました
環境
% go version go version go1.4.2 darwin/amd64
準備
- パッケージの取得
% go get -u github.com/aws/aws-sdk-go/ % go get -u github.com/vaughan0/go-ini
go-iniはaws-sdk-goのcredentialsで使ってるらしく、いれていないと以下のエラーがでる
../../../../.golocal/src/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go:8:2: cannot find package "github.com/vaughan0/go-ini" in any of: /usr/local/Cellar/go/1.4.2/libexec/src/github.com/vaughan0/go-ini (from $GOROOT) /Users/ogawa-masaki/.golocal/src/github.com/vaughan0/go-ini (from $GOPATH)
- クレデンシャルの設定
% cat ~/.aws/credentials [default] aws_access_key_id = xxxxxxxxxxxxxxxxxxxx aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
サンプル
登録しているレコード情報を表示するだけです。
package main import( "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awsutil" "github.com/aws/aws-sdk-go/service/route53" ) func main() { domain := "example.internal." client := route53.New(&aws.Config{}) // domainからHostedZoneIDの取得 hzresp, err := client.ListHostedZonesByName(&route53.ListHostedZonesByNameInput{DNSName: aws.String(domain),}) if err != nil { panic(err) } HostedZoneID := hzresp.HostedZones[0].ID // ResourceRecordSetsを取得 rrsresp, err := client.ListResourceRecordSets(&route53.ListResourceRecordSetsInput{HostedZoneID: HostedZoneID}) if err != nil { panic(err) } // 出力 for i := range rrsresp.ResourceRecordSets { fmt.Println(awsutil.StringValue(*rrsresp.ResourceRecordSets[i])) } }