Amazon web services AWS Golang SDK-如何在EBS卷上放置DeleteOnTermination?

Amazon web services AWS Golang SDK-如何在EBS卷上放置DeleteOnTermination?,amazon-web-services,go,Amazon Web Services,Go,我正在寻找一种使用AWS Golang SDK在EBS卷上添加DeleteOnTermination位的方法。 我尝试过此代码,但它不起作用: attach := &ec2.AttachVolumeInput{ Device: aws.String(*DeviceName), InstanceId: aws.String(*instanceID), VolumeId: aws.String(*VolumeId), }

我正在寻找一种使用AWS Golang SDK在EBS卷上添加DeleteOnTermination位的方法。 我尝试过此代码,但它不起作用:

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)
我在文档中找不到任何有用的线索,也找不到是我的错误。 有人有主意吗


谢谢大家!

我已经解决了我的问题,以下是解决方案:

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
    }

此代码适用于我。

我已经解决了我的问题,以下是解决方案:

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
    }

这个代码对我有用。

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