aws-sdk-goで指定したProfileのCredentialを利用しアクセスを行う
aws-sdk-go 正式版は Coming Soonです。
※ aws-sdkの開発が進み、当初記載していた方法ではアクセスできなくなってしまったので、新しい方法に更新しました。
前提条件
~/.aws/credentials
にProfileに紐づくID,Secret情報が設定されているとします。
(credentialファイル指定はメソッドの引数で行えますが、ここではデフォルト設定の上記ファイルとします)
~/.aws/credentials
[test]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYY
方法
NewSharedCredentials
を利用します。
aws-sdk-goのNewSharedCredentialsメソッド(GoDoc)
cred, _ := credentials.NewSharedCredentials("", profile_name)
svc := ec2.New(&aws.Config{Credentials: cred, Region: "ap-northeast-1"})
サンプルコード
上記を用いて利用するProfile指定し、
任意のNameタグでフィルターしたDescriveInstancesのうち、Nameタグ、InstanceID、 Status を返すスクリプトを作ってみました。
以下のような感じです。(※エラー処理はしてません。。)
descrive_ec2_instances.go
package main
import (
"fmt"
"github.com/awslabs/aws-sdk-go/aws"
"github.com/awslabs/aws-sdk-go/aws/credentials"
"github.com/awslabs/aws-sdk-go/service/ec2"
)
func main() {
profile := "test" // your profile name
name := "*test*" // search string (NameTag)
svc := ec2.New(&aws.Config{
Credentials: credentials.NewSharedCredentials("", profile),
Region: "ap-northeast-1",
})
params := &ec2.DescribeInstancesInput{
Filters: []*ec2.Filter{
&ec2.Filter{
Name: aws.String("tag:Name"),
Values: []*string{
aws.String(name),
},
},
},
}
res, _ := svc.DescribeInstances(params)
for _, i := range res.Reservations[0].Instances {
var nt string
for _, t := range i.Tags {
if *t.Key == "Name" {
nt = *t.Value
break
}
}
fmt.Println(nt, *i.InstanceID, *i.State.Name)
}
}
実行するとちゃんと指定したProfileのCredentialで動いています。
aws-sdk-go 待ち遠しいですね!
Author And Source
この問題について(aws-sdk-goで指定したProfileのCredentialを利用しアクセスを行う), 我々は、より多くの情報をここで見つけました https://qiita.com/simeji/items/17f738a4800e9a18888d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .