LoginSignup
10
9

More than 5 years have passed since last update.

aws-sdk-goで指定したProfileのCredentialを利用しアクセスを行う

Last updated at Posted at 2015-04-16

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 を返すスクリプトを作ってみました。
以下のような感じです。(※エラー処理はしてません。。)

:octocat:gist

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 待ち遠しいですね!

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9