This is the beginning of hopefully many new posts with golang snippets from [my blog](http://www.heystephenwood.com/). 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](http://godoc.org/github.com/awslabs/aws-sdk-go/gen/ec2#Instance). ```go 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) } } } ```