Posts AWS 命令配置文件
Post
Cancel

AWS 命令配置文件

aws cli 可以配置多个 Access Key,在访问时手动选择使用哪个Key

~/.aws/credentials内容如下:

1
2
3
4
5
6
7
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[cnnw1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

~/.aws/config 内容如下:

1
2
3
4
5
6
7
[default]
region = us-east-2
output = json 

[profile cnnw1]
region = cn-northwest-1
output = json 

注意: config 文件中的配置项必须添加 profile 前缀,而 credentials 文件中的配置项目则不能添加

使用cnnw1 查询,并且只打印 InstanceIdState.Name

1
2
3
4
5
6
7
8
9
10
$ aws ec2 describe-instances --profile cnnw1 --query 'Reservations[*].Instances[*].{id:InstanceId,st:State.Name}' --output text
i-0f5c2c0e3eb458c1c     stopped
i-081d62db743814df7     stopped
i-029207d69cd39531c     stopped
i-0baadca44017143c3     stopped
i-0b4671b6c02a3a728     stopped
i-09b89b21dbd9fa527     stopped
i-00879b91cf475a597     stopped
i-029053be08666bafd     stopped
i-0c9e6f2adaff0a1db     stopped

Go SDK

profile_exp.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
package main

import (
	"fmt"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/ec2"
	"log"
)

func main() {
	sess := session.Must(session.NewSessionWithOptions(session.Options{
		Profile:           "cnnw1",
		SharedConfigState: session.SharedConfigEnable,
	}))
	cli := ec2.New(sess)

	insts, err := cli.DescribeInstances(nil)
	if err != nil {
		log.Fatal(err)
	}
	for _, r := range insts.Reservations {
		for _, i := range r.Instances {
			fmt.Printf("id :%s,state %s\n", *i.InstanceId, *i.State.Name)
		}
	}
}

程序运行结果如下

id :i-0f5c2c0e3eb458c1c,state stopped
id :i-081d62db743814df7,state stopped
id :i-029207d69cd39531c,state stopped
id :i-0baadca44017143c3,state stopped
id :i-0b4671b6c02a3a728,state stopped
id :i-09b89b21dbd9fa527,state stopped
id :i-00879b91cf475a597,state stopped
id :i-029053be08666bafd,state stopped
id :i-0c9e6f2adaff0a1db,state stopped


参考文献

This post is licensed under CC BY 4.0 by the author.
Contents