github.com/awslabs/fargate@v0.2.3/ec2/eni.go (about)

     1  package ec2
     2  
     3  import (
     4  	"github.com/aws/aws-sdk-go/aws"
     5  	awsec2 "github.com/aws/aws-sdk-go/service/ec2"
     6  	"github.com/jpignata/fargate/console"
     7  )
     8  
     9  type Eni struct {
    10  	PublicIpAddress  string
    11  	EniId            string
    12  	SecurityGroupIds []string
    13  }
    14  
    15  func (ec2 *EC2) DescribeNetworkInterfaces(eniIds []string) map[string]Eni {
    16  	enis := make(map[string]Eni)
    17  
    18  	resp, err := ec2.svc.DescribeNetworkInterfaces(
    19  		&awsec2.DescribeNetworkInterfacesInput{
    20  			NetworkInterfaceIds: aws.StringSlice(eniIds),
    21  		},
    22  	)
    23  
    24  	if err != nil {
    25  		console.ErrorExit(err, "Could not describe network interfaces")
    26  	}
    27  
    28  	for _, e := range resp.NetworkInterfaces {
    29  		var securityGroupIds []*string
    30  
    31  		for _, group := range e.Groups {
    32  			securityGroupIds = append(securityGroupIds, group.GroupId)
    33  		}
    34  
    35  		if e.Association != nil {
    36  			eni := Eni{
    37  				EniId:            aws.StringValue(e.NetworkInterfaceId),
    38  				PublicIpAddress:  aws.StringValue(e.Association.PublicIp),
    39  				SecurityGroupIds: aws.StringValueSlice(securityGroupIds),
    40  			}
    41  
    42  			enis[eni.EniId] = eni
    43  		}
    44  	}
    45  
    46  	return enis
    47  }