【问题标题】:AWS Golang SDK - How to put DeleteOnTermination on EBS volumes?AWS Golang SDK - 如何将 DeleteOnTermination 放在 EBS 卷上?
【发布时间】:2020-06-14 16:57:00
【问题描述】:

我正在寻找一种使用 AWS Golang SDK 将 DeleteOnTermination 位放入 EBS 卷的方法。 我试过这段代码,但它不起作用:

attach := &ec2.AttachVolumeInput{
        Device:     aws.String(*DeviceName),
        InstanceId: aws.String(*instanceID),
        VolumeId:   aws.String(*VolumeId),
    }

volumeAttach, errAttach := client.AttachVolume(attach)
if errAttach != nil {
    return errAttach
}

volumeAttach.SetDeleteOnTermination(true)

我在文档中没有发现任何有用的线索,而且我找不到是我的错误。 有人有想法吗?

谢谢!

【问题讨论】:

  • “它不起作用”是什么意思?您是否收到任何错误消息,它无法编译?
  • 不,我没有出错。除了音量上的 DeleteOnTermination 位在那之后没有设置外,一切正常。我看起来像 SetDeleteOnTermination 方法只是改变了 volumeAttach 结构的状态。我试图找到一种方法将此结构用作另一种方法或类似方法的参数,但我对文档一无所知,或者我错过了这部分。
  • DeleteOnTerminate 是 BlockLevelMapping 设置。必须检查您指定/更新映射的位置。通常是在创建实例,启动配置,ami,

标签: amazon-web-services go


【解决方案1】:

我的问题已经解决了,解决方法如下:

mappingSpecification := ec2.InstanceBlockDeviceMappingSpecification{
        DeviceName: aws.String(deviceName),
        Ebs: &ec2.EbsInstanceBlockDeviceSpecification{
            DeleteOnTermination: aws.Bool(true),
            VolumeId:            aws.String(volumeId),
        },
    }

    attributeInput := ec2.ModifyInstanceAttributeInput{
        BlockDeviceMappings: []*ec2.InstanceBlockDeviceMappingSpecification{&mappingSpecification},
        InstanceId:          instanceID,
    }

    requestModify, _ := e.client.ModifyInstanceAttributeRequest(&attributeInput)

    errorRequest := requestModify.Send()
    if errorRequest != nil {
        return errorRequest
    }

此代码对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多