本文整理汇总了Golang中launchpad/net/goamz/ec2.EC2类的典型用法代码示例。如果您正苦于以下问题:Golang EC2类的具体用法?Golang EC2怎么用?Golang EC2使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了EC2类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: groups
func groups(c cmd, conn *ec2.EC2, _ []string) {
resp, err := conn.SecurityGroups(nil, nil)
check(err, "list groups")
var b bytes.Buffer
printf := func(f string, a ...interface{}) {
fmt.Fprintf(&b, f, a...)
}
for _, g := range resp.Groups {
switch {
case groupsFlags.vv:
printf("%s:%s %s %q\n", g.OwnerId, g.Name, g.Id, g.Description)
for _, p := range g.IPPerms {
printf("\t")
printf("\t-proto %s -from %d -to %d", p.Protocol, p.FromPort, p.ToPort)
for _, g := range p.SourceGroups {
printf(" %s", g.Id)
}
for _, ip := range p.SourceIPs {
printf(" %s", ip)
}
printf("\n")
}
case groupsFlags.v:
printf("%s %s %q\n", g.Name, g.Id, g.Description)
case groupsFlags.ids:
printf("%s\n", g.Id)
default:
printf("%s\n", g.Name)
}
}
os.Stdout.Write(b.Bytes())
}
示例2: revoke
func revoke(c cmd, conn *ec2.EC2, args []string) {
if len(args) < 1 {
c.usage()
}
_, err := conn.RevokeSecurityGroup(parseGroup(args[0]), ipPerms(args[1:]))
check(err, "revokeSecurityGroup")
}
示例3: mkgroup
func mkgroup(c cmd, conn *ec2.EC2, args []string) {
if len(args) != 2 {
c.usage()
}
_, err := conn.CreateSecurityGroup(args[0], args[1])
check(err, "create security group")
}
示例4: instances
func instances(c cmd, conn *ec2.EC2, args []string) {
resp, err := conn.Instances(nil, nil)
if err != nil {
fatalf("cannot get instances: %v", err)
}
var line []string
for _, r := range resp.Reservations {
for _, inst := range r.Instances {
if !instancesFlags.all && inst.State.Name == "terminated" {
continue
}
line = append(line[:0], inst.InstanceId)
if instancesFlags.state {
line = append(line, inst.State.Name)
}
if instancesFlags.addr {
if inst.DNSName == "" {
inst.DNSName = "none"
}
line = append(line, inst.DNSName)
}
fmt.Printf("%s\n", strings.Join(line, " "))
}
}
}
示例5: auth
func auth(c cmd, conn *ec2.EC2, args []string) {
if len(args) < 1 {
c.usage()
}
_, err := conn.AuthorizeSecurityGroup(parseGroup(args[0]), ipPerms(args[1:]))
check(err, "authorizeSecurityGroup")
}
示例6: terminate
func terminate(c cmd, conn *ec2.EC2, args []string) {
if len(args) == 0 {
return
}
_, err := conn.TerminateInstances(args)
if err != nil {
fatalf("cannot terminate instances: %v", err)
}
}
示例7: terminateInstances
func terminateInstances(c *C, e *ec2.EC2, insts []*ec2.Instance) {
var ids []string
for _, inst := range insts {
if inst != nil {
ids = append(ids, inst.InstanceId)
}
}
_, err := e.TerminateInstances(ids)
c.Check(err, IsNil, Commentf("%d INSTANCES LEFT RUNNING!!!", len(ids)))
}
示例8: defaultAMI
func defaultAMI(conn *ec2.EC2) (string, error) {
filter := ec2.NewFilter()
imageName := "amzn-ami-hvm-2014.03.2.x86_64-ebs"
filter.Add("name", imageName)
resp, _ := conn.Images(nil, filter)
if len(resp.Images) == 0 {
return "", fmt.Errorf("Unable to retrieve ami id for image name: %s", imageName)
}
return resp.Images[0].Id, nil
}
示例9: searchByFilter
func searchByFilter(e *ec2.EC2, key, value string) (*ec2.Instance, error) {
filter := ec2.NewFilter()
filter.Add(key, value)
resp, err := e.Instances(nil, filter)
if err != nil {
return nil, errors.New("EC2 API call failed. " +
"Check your AWS credentials and system clock")
}
if len(resp.Reservations) != 1 {
return nil, errors.New("no instance with " + key + "=" + value)
}
return &resp.Reservations[0].Instances[0], nil
}
示例10: setupEC2
func setupEC2(accessKey string, secretKey string, regionName string) (ec2.EC2, error) {
e := ec2.EC2{}
auth := aws.Auth{accessKey, secretKey}
region := aws.Regions[regionName]
if region.Name != regionName {
return e, errors.New("Region is invalid")
}
e.Auth = auth
e.Region = region
return e, nil
}
示例11: delgroup
func delgroup(c cmd, conn *ec2.EC2, args []string) {
hasError := false
for _, g := range args {
var ec2g ec2.SecurityGroup
if secGroupPat.MatchString(g) {
ec2g.Id = g
} else {
ec2g.Name = g
}
_, err := conn.DeleteSecurityGroup(ec2g)
if err != nil {
errorf("cannot delete %q: %v", g, err)
hasError = true
}
}
if hasError {
os.Exit(1)
}
}
示例12: getLocalIP
func getLocalIP(ec2conn *ec2.EC2) string {
f := ec2.NewFilter()
f.Add("tag:server-type", "image-proxy")
resp, err := ec2conn.Instances(nil, f)
if err != nil {
return ""
}
for _, reserv := range resp.Reservations {
for _, instance := range reserv.Instances {
if localAddress(instance.PrivateIPAddress) {
return instance.PrivateIPAddress
}
}
}
return ""
}
示例13: waitForDnsName
func waitForDnsName(ec2Inst *ec2.EC2, instance *ec2.Instance) (*ec2.Instance, error) {
t0 := time.Now()
for instance.DNSName == "" {
instId := instance.InstanceId
if time.Now().Sub(t0) > maxWaitTime {
return nil, fmt.Errorf("ec2: time out waiting for instance %s to start", instId)
}
log.Debugf("ec2: waiting for dnsname for instance %s", instId)
time.Sleep(500 * time.Millisecond)
resp, err := ec2Inst.Instances([]string{instance.InstanceId}, ec2.NewFilter())
if err != nil {
return nil, err
}
if len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 {
return nil, fmt.Errorf("No instances returned")
}
instance = &resp.Reservations[0].Instances[0]
}
return instance, nil
}
示例14: terminateInstances
func terminateInstances(c *C, e *ec2.EC2, ids []string) {
_, err := e.TerminateInstances(ids)
c.Assert(err, IsNil, Commentf("%v INSTANCES LEFT RUNNING!!!", ids))
// We need to wait until the instances are really off, because
// entities that depend on them won't be deleted (i.e. groups,
// NICs, subnets, etc.)
testAttempt := aws.AttemptStrategy{
Total: 10 * time.Minute,
Delay: 5 * time.Second,
}
f := ec2.NewFilter()
f.Add("instance-state-name", "terminated")
idsLeft := make(map[string]bool)
for _, id := range ids {
idsLeft[id] = true
}
for a := testAttempt.Start(); a.Next(); {
c.Logf("waiting for %v to get terminated", ids)
resp, err := e.Instances(ids, f)
if err != nil {
c.Fatalf("not waiting for %v to terminate: %v", ids, err)
}
for _, r := range resp.Reservations {
for _, inst := range r.Instances {
delete(idsLeft, inst.InstanceId)
}
}
ids = []string{}
for id, _ := range idsLeft {
ids = append(ids, id)
}
if len(ids) == 0 {
c.Logf("all instances terminated.")
return
}
}
c.Fatalf("%v INSTANCES LEFT RUNNING!!!", ids)
}
示例15: createGroup
// createGroup creates a new EC2 group and returns it. If it already exists,
// it revokes all its permissions and returns the existing group.
func createGroup(c *C, ec2conn *amzec2.EC2, name, descr string) amzec2.SecurityGroup {
resp, err := ec2conn.CreateSecurityGroup(name, descr)
if err == nil {
return resp.SecurityGroup
}
if err.(*amzec2.Error).Code != "InvalidGroup.Duplicate" {
c.Fatalf("cannot make group %q: %v", name, err)
}
// Found duplicate group, so revoke its permissions and return it.
gresp, err := ec2conn.SecurityGroups(amzec2.SecurityGroupNames(name), nil)
c.Assert(err, IsNil)
gi := gresp.Groups[0]
if len(gi.IPPerms) > 0 {
_, err = ec2conn.RevokeSecurityGroup(gi.SecurityGroup, gi.IPPerms)
c.Assert(err, IsNil)
}
return gi.SecurityGroup
}