當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。