/
awsi.go
46 lines (39 loc) · 1.27 KB
/
awsi.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package awsi
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sts"
"github.com/mamemomonga/ec2ctrl/src/configs"
"log"
"os"
)
type AWSi struct {
session *session.Session
configs *configs.Configs
}
func New(configs *configs.Configs) *AWSi {
t := new(AWSi)
t.configs = configs
os.Setenv("AWS_ACCESS_KEY_ID", t.configs.Target.AWS.AccessKeyID)
os.Setenv("AWS_SECRET_ACCESS_KEY", t.configs.Target.AWS.SecretAccessKey)
sess, err := session.NewSession(&aws.Config{Region: aws.String(t.configs.Target.AWS.Region)})
if err != nil {
log.Println(err)
log.Fatal("alert: セッション開始に失敗しました。")
}
t.session = sess
t.checkMatchAccountNumber()
return t
}
func (t *AWSi) checkMatchAccountNumber() {
svc := sts.New(t.session)
r, err := svc.GetCallerIdentity(&sts.GetCallerIdentityInput{})
if err != nil {
log.Println(err)
log.Fatal("alert: アカウント番号取得に失敗しました。認証設定を確認してください")
}
if *r.Account != t.configs.Target.AWS.AccountNumber {
log.Printf("Target:%s Result:%s \n", t.configs.Target.AWS.AccountNumber, *r.Account)
log.Fatal("alert: アカウント番号が合致しません。認証設定を確認してください")
}
}