本文整理汇总了Golang中gopkg/in/amz/v3/ec2.EC2类的典型用法代码示例。如果您正苦于以下问题:Golang EC2类的具体用法?Golang EC2怎么用?Golang EC2使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了EC2类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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())
}
开发者ID:rogpeppe,项目名称:misc,代码行数:32,代码来源:ec2.go
示例2: listVolumes
func listVolumes(client *ec2.EC2, filter *ec2.Filter) ([]string, error) {
resp, err := client.Volumes(nil, filter)
if err != nil {
return nil, err
}
volumeIds := make([]string, 0, len(resp.Volumes))
for _, vol := range resp.Volumes {
var isRootDisk bool
for _, att := range vol.Attachments {
if att.Device == rootDiskDeviceName {
isRootDisk = true
break
}
}
if isRootDisk {
// We don't want to list root disks in the output.
// These are managed by the instance provisioning
// code; they will be created and destroyed with
// instances.
continue
}
volumeIds = append(volumeIds, vol.Id)
}
return volumeIds, nil
}
开发者ID:bac,项目名称:juju,代码行数:25,代码来源:ebs.go
示例3: 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")
}
开发者ID:rogpeppe,项目名称:misc,代码行数:7,代码来源:ec2.go
示例4: 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")
}
开发者ID:rogpeppe,项目名称:misc,代码行数:7,代码来源:ec2.go
示例5: Create
/**
* Create new volume
*/
func Create(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) {
options := ec2.CreateVolume{
VolumeType: volume.Type,
VolumeSize: volume.Size,
}
if volume.AvailableZone == "" {
options.AvailZone = DefaultAvailableZone
}
if volume.Type == "io1" {
options.IOPS = volume.IOPS
}
resp, err := ec2Ref.CreateVolume(options)
if err != nil {
return ec2.Volume{}, err
}
volumeRef := resp.Volume
_, err = ec2Ref.CreateTags([]string{volumeRef.Id}, []ec2.Tag{{"Name", volume.Name}})
if err != nil {
return ec2.Volume{}, err
}
mergeVolumes(volume, &volumeRef)
err = WaitUntilState(ec2Ref, volume, "available")
if err != nil {
return ec2.Volume{}, err
}
return volumeRef, nil
}
开发者ID:ffhenkes,项目名称:cloud-machine,代码行数:37,代码来源:volume.go
示例6: 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")
}
开发者ID:rogpeppe,项目名称:misc,代码行数:7,代码来源:ec2.go
示例7: 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, " "))
}
}
}
开发者ID:rogpeppe,项目名称:misc,代码行数:25,代码来源:ec2.go
示例8: Terminate
func Terminate(ec2Ref *ec2.EC2, instance Instance) error {
logger.Println("Terminating instance", instance.Id)
_, err := ec2Ref.TerminateInstances([]string{instance.Id})
if err == nil {
logger.Printf("Instance <%s> was destroyed!\n", instance.Id)
}
return err
}
开发者ID:heryvictor,项目名称:cloud-machine,代码行数:9,代码来源:instance.go
示例9: 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)
}
}
开发者ID:rogpeppe,项目名称:misc,代码行数:9,代码来源:ec2.go
示例10: Create
// Create new instance
func Create(ec2Ref *ec2.EC2, instance *Instance) (ec2.Instance, error) {
options := ec2.RunInstances{
ImageId: instance.ImageID,
InstanceType: instance.Type,
KeyName: instance.KeyName,
SecurityGroups: make([]ec2.SecurityGroup, len(instance.SecurityGroups)),
SubnetId: instance.SubnetID,
EBSOptimized: instance.EBSOptimized,
DisableAPITermination: !instance.EnableAPITermination,
AvailZone: instance.AvailableZone,
}
if instance.CloudConfig != "" {
userdata, err := ioutil.ReadFile(instance.CloudConfig)
if err != nil {
panic(err.Error())
}
options.UserData = userdata
}
if instance.ShutdownBehavior != "" {
options.ShutdownBehavior = instance.ShutdownBehavior
}
if instance.PlacementGroupName != "" {
options.PlacementGroupName = instance.PlacementGroupName
}
for i, securityGroup := range instance.SecurityGroups {
options.SecurityGroups[i] = ec2.SecurityGroup{Id: securityGroup}
}
resp, err := ec2Ref.RunInstances(&options)
if err != nil {
return ec2.Instance{}, err
} else if len(resp.Instances) == 0 {
return ec2.Instance{}, errors.New("Any instance was created!")
}
ec2Instance := resp.Instances[0]
tags := append(instance.Tags, ec2.Tag{"Name", instance.Name})
_, err = ec2Ref.CreateTags([]string{ec2Instance.InstanceId}, tags)
if err != nil {
return ec2.Instance{}, err
}
mergeInstances(instance, &ec2Instance)
err = WaitUntilState(ec2Ref, instance, "running")
if err != nil {
return ec2.Instance{}, err
}
return ec2Instance, nil
}
开发者ID:NeowayLabs,项目名称:cloud-machine,代码行数:57,代码来源:instance.go
示例11: describeVolume
func describeVolume(client *ec2.EC2, volumeId string) (*ec2.Volume, error) {
resp, err := client.Volumes([]string{volumeId}, nil)
if err != nil {
return nil, errors.Annotate(err, "querying volume")
}
if len(resp.Volumes) == 0 {
return nil, errors.NotFoundf("%v", volumeId)
} else if len(resp.Volumes) != 1 {
return nil, errors.Errorf("expected one volume, got %d", len(resp.Volumes))
}
return &resp.Volumes[0], nil
}
开发者ID:bac,项目名称:juju,代码行数:12,代码来源:ebs.go
示例12: AttachVolumes
func AttachVolumes(ec2Ref *ec2.EC2, InstanceId string, volumes []volume.Volume) error {
for _, myVolume := range volumes {
_, err := ec2Ref.AttachVolume(myVolume.Id, InstanceId, myVolume.Device)
if err != nil {
reqError := err.(*ec2.Error)
if reqError.Code != "VolumeInUse" {
return err
}
}
}
return nil
}
开发者ID:ffhenkes,项目名称:cloud-machine,代码行数:13,代码来源:machine.go
示例13: AttachVolumes
// AttachVolumes ...
func AttachVolumes(ec2Ref *ec2.EC2, InstanceID string, volumes []volume.Volume) error {
for _, volumeConfig := range volumes {
_, err := ec2Ref.AttachVolume(volumeConfig.ID, InstanceID, volumeConfig.Device)
if err != nil {
reqError := err.(*ec2.Error)
if reqError.Code != "VolumeInUse" {
return err
}
}
}
return nil
}
开发者ID:NeowayLabs,项目名称:cloud-machine,代码行数:14,代码来源:machine.go
示例14: Load
/**
* Load a instance passing its Id
*/
func Load(ec2Ref *ec2.EC2, instance *Instance) (ec2.Instance, error) {
if instance.Id == "" {
return ec2.Instance{}, errors.New("To load a instance you need to pass its Id")
}
resp, err := ec2Ref.Instances([]string{instance.Id}, nil)
if err != nil {
return ec2.Instance{}, err
} else if len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 {
return ec2.Instance{}, errors.New(fmt.Sprintf("Any instance was found with instance Id <%s>", instance.Id))
}
instanceRef := resp.Reservations[0].Instances[0]
mergeInstances(instance, &instanceRef)
return instanceRef, nil
}
开发者ID:heryvictor,项目名称:cloud-machine,代码行数:20,代码来源:instance.go
示例15: Load
/**
* Load a volume passing its Id
*/
func Load(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) {
if volume.Id == "" {
return ec2.Volume{}, errors.New("To load a volume you need to pass its Id")
}
resp, err := ec2Ref.Volumes([]string{volume.Id}, nil)
if err != nil {
return ec2.Volume{}, err
} else if len(resp.Volumes) == 0 {
return ec2.Volume{}, errors.New(fmt.Sprintf("Any volume was found with volume Id <%s>", volume.Id))
}
volumeRef := resp.Volumes[0]
mergeVolumes(volume, &volumeRef)
return volumeRef, nil
}
开发者ID:ffhenkes,项目名称:cloud-machine,代码行数:20,代码来源:volume.go
示例16: Load
// Load a volume passing its Id
func Load(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) {
if volume.ID == "" {
return ec2.Volume{}, errors.New("To load a volume you need to pass its Id")
}
resp, err := ec2Ref.Volumes([]string{volume.ID}, nil)
if err != nil {
return ec2.Volume{}, err
} else if len(resp.Volumes) == 0 {
return ec2.Volume{}, fmt.Errorf("Any volume was found with volume Id <%s>", volume.ID)
}
ec2Volume := resp.Volumes[0]
mergeVolumes(volume, &ec2Volume)
return ec2Volume, nil
}
开发者ID:NeowayLabs,项目名称:cloud-machine,代码行数:18,代码来源:volume.go
示例17: update
func (c instanceCache) update(ec2client *ec2.EC2, ids ...string) error {
if len(ids) == 1 {
if _, ok := c[ids[0]]; ok {
return nil
}
}
filter := ec2.NewFilter()
filter.Add("instance-state-name", "running")
resp, err := ec2client.Instances(ids, filter)
if err != nil {
return errors.Annotate(err, "querying instance details")
}
for j := range resp.Reservations {
r := &resp.Reservations[j]
for _, inst := range r.Instances {
c[inst.InstanceId] = inst
}
}
return nil
}
开发者ID:pmatulis,项目名称:juju,代码行数:20,代码来源:ebs.go
示例18: Create
// Create new volume
func Create(ec2Ref *ec2.EC2, volume *Volume) (ec2.Volume, error) {
options := ec2.CreateVolume{
VolumeType: volume.Type,
AvailZone: volume.AvailableZone,
}
if volume.Size > 0 {
options.VolumeSize = volume.Size
}
if volume.SnapshotID != "" {
options.SnapshotId = volume.SnapshotID
}
if volume.Type == "io1" {
options.IOPS = volume.IOPS
}
resp, err := ec2Ref.CreateVolume(options)
if err != nil {
return ec2.Volume{}, err
}
ec2Volume := resp.Volume
tags := append(volume.Tags, ec2.Tag{"Name", volume.Name})
_, err = ec2Ref.CreateTags([]string{ec2Volume.Id}, tags)
if err != nil {
return ec2.Volume{}, err
}
mergeVolumes(volume, &ec2Volume)
err = WaitUntilState(ec2Ref, volume, "available")
if err != nil {
return ec2.Volume{}, err
}
return ec2Volume, nil
}
开发者ID:NeowayLabs,项目名称:cloud-machine,代码行数:40,代码来源:volume.go
示例19: detachVolumes
func detachVolumes(client *ec2.EC2, attachParams []storage.VolumeAttachmentParams) ([]error, error) {
results := make([]error, len(attachParams))
for i, params := range attachParams {
_, err := client.DetachVolume(params.VolumeId, string(params.InstanceId), "", false)
// Process aws specific error information.
if err != nil {
if ec2Err, ok := err.(*ec2.Error); ok {
switch ec2Err.Code {
// attachment not found means this volume is already detached.
case attachmentNotFound:
err = nil
}
}
}
if err != nil {
results[i] = errors.Annotatef(
err, "detaching %v from %v", params.Volume, params.Machine,
)
}
}
return results, nil
}
开发者ID:bac,项目名称:juju,代码行数:22,代码来源:ebs.go
示例20: delgroup
func delgroup(c cmd, conn *ec2.EC2, args []string) {
run := parallel.NewRun(40)
for _, g := range args {
g := g
run.Do(func() error {
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)
return errgo.Newf("error")
}
return nil
})
}
if run.Wait() != nil {
os.Exit(1)
}
}
开发者ID:rogpeppe,项目名称:misc,代码行数:23,代码来源:ec2.go
注:本文中的gopkg/in/amz/v3/ec2.EC2类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论