This is the beginning of hopefully many new posts with golang snippets from my blog. List all of your running (or pending) EC2 instances with Amazon's golang sdk.
For a list of filters or instance attributes consult the official documentation.
package main
import (
"fmt"
"github.com/awslabs/aws-sdk-go/aws"
"github.com/awslabs/aws-sdk-go/gen/ec2"
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
aws_user := os.Getenv("AWS_ACCESS_KEY_ID")
aws_pass := os.Getenv("AWS_SECRET_ACCESS_KEY")
creds := aws.Creds(aws_user, aws_pass, "")
client := ec2.New(creds, "us-west-1", nil)
// Only grab instances that are running or just started
filters := []ec2.Filter{
ec2.Filter{
aws.String("instance-state-name"),
[]string{"running", "pending"},
},
}
request := ec2.DescribeInstancesRequest{Filters: filters}
result, err := client.DescribeInstances(&request)
check(err)
for _, reservation := range result.Reservations {
for _, instance := range reservation.Instances {
fmt.Println(*instance.InstanceID)
}
}
}
fmt.Println(*instance.InstanceID)
should befmt.Println(*instance.InstanceId)