当前位置: 首页>>代码示例>>Golang>>正文


Golang EC2.DetachNetworkInterface方法代码示例

本文整理汇总了Golang中github.com/aws/aws-sdk-go/service/ec2.EC2.DetachNetworkInterface方法的典型用法代码示例。如果您正苦于以下问题:Golang EC2.DetachNetworkInterface方法的具体用法?Golang EC2.DetachNetworkInterface怎么用?Golang EC2.DetachNetworkInterface使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/aws/aws-sdk-go/service/ec2.EC2的用法示例。


在下文中一共展示了EC2.DetachNetworkInterface方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: deleteLingeringLambdaENIs

func deleteLingeringLambdaENIs(conn *ec2.EC2, d *schema.ResourceData) error {
	lambdaENIs := getLambdaENIs(conn, d)

	for i := 0; i < len(lambdaENIs); i++ {
		params := &ec2.DetachNetworkInterfaceInput{
			AttachmentId: lambdaENIs[i].Attachment.AttachmentId,
		}
		_, err := conn.DetachNetworkInterface(params)

		if err != nil {
			return err
		}
	}

	all_enis_detached := false
	for all_enis_detached == false {
		all_enis_detached = true
		lambdaENIs = getLambdaENIs(conn, d)
		for i := 0; i < len(lambdaENIs); i++ {
			if *lambdaENIs[i].Status != "available" {
				all_enis_detached = false
			}
		}
		time.Sleep(time.Second)
	}

	for i := 0; i < len(lambdaENIs); i++ {
		params := &ec2.DeleteNetworkInterfaceInput{
			NetworkInterfaceId: lambdaENIs[i].NetworkInterfaceId,
		}
		_, err := conn.DeleteNetworkInterface(params)

		if err != nil {
			return err
		}
	}

	return nil
}
开发者ID:clearcare,项目名称:terraform,代码行数:39,代码来源:resource_aws_security_group.go

示例2: deleteLingeringLambdaENIs

// The AWS Lambda service creates ENIs behind the scenes and keeps these around for a while
// which would prevent SGs attached to such ENIs from being destroyed
func deleteLingeringLambdaENIs(conn *ec2.EC2, d *schema.ResourceData) error {
	// Here we carefully find the offenders
	params := &ec2.DescribeNetworkInterfacesInput{
		Filters: []*ec2.Filter{
			&ec2.Filter{
				Name:   aws.String("group-id"),
				Values: []*string{aws.String(d.Id())},
			},
			&ec2.Filter{
				Name:   aws.String("description"),
				Values: []*string{aws.String("AWS Lambda VPC ENI: *")},
			},
			&ec2.Filter{
				Name:   aws.String("requester-id"),
				Values: []*string{aws.String("*:awslambda_*")},
			},
		},
	}
	networkInterfaceResp, err := conn.DescribeNetworkInterfaces(params)
	if err != nil {
		return err
	}

	// Then we detach and finally delete those
	v := networkInterfaceResp.NetworkInterfaces
	for _, eni := range v {
		if eni.Attachment != nil {
			detachNetworkInterfaceParams := &ec2.DetachNetworkInterfaceInput{
				AttachmentId: eni.Attachment.AttachmentId,
			}
			_, detachNetworkInterfaceErr := conn.DetachNetworkInterface(detachNetworkInterfaceParams)

			if detachNetworkInterfaceErr != nil {
				return detachNetworkInterfaceErr
			}

			log.Printf("[DEBUG] Waiting for ENI (%s) to become detached", *eni.NetworkInterfaceId)
			stateConf := &resource.StateChangeConf{
				Pending: []string{"true"},
				Target:  []string{"false"},
				Refresh: networkInterfaceAttachedRefreshFunc(conn, *eni.NetworkInterfaceId),
				Timeout: 10 * time.Minute,
			}
			if _, err := stateConf.WaitForState(); err != nil {
				return fmt.Errorf(
					"Error waiting for ENI (%s) to become detached: %s", *eni.NetworkInterfaceId, err)
			}
		}

		deleteNetworkInterfaceParams := &ec2.DeleteNetworkInterfaceInput{
			NetworkInterfaceId: eni.NetworkInterfaceId,
		}
		_, deleteNetworkInterfaceErr := conn.DeleteNetworkInterface(deleteNetworkInterfaceParams)

		if deleteNetworkInterfaceErr != nil {
			return deleteNetworkInterfaceErr
		}
	}

	return nil
}
开发者ID:partamonov,项目名称:terraform,代码行数:63,代码来源:resource_aws_security_group.go


注:本文中的github.com/aws/aws-sdk-go/service/ec2.EC2.DetachNetworkInterface方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。