Beispiel #1
0
func attachGatewayToVpc(ec2Client *ec2.EC2, internetGatewayID string, vpcID string) (success bool, warnings []string, err []error) {
	attachGatewayOutput, attachError := ec2Client.AttachInternetGateway(&ec2.AttachInternetGatewayInput{
		InternetGatewayID: &internetGatewayID,
		VPCID:             &vpcID,
	})
	if attachError != nil {
		err = append(err, attachError)
		log.WithFields(log.Fields{
			"AWS Error":         err,
			"VpcID":             vpcID,
			"InternetGatewayID": internetGatewayID,
			"Output":            attachGatewayOutput,
		}).Error("Error attaching InternetGateway to VPC")
		return false, warnings, err
	}
	return true, warnings, err
}
Beispiel #2
0
func createGateway(svc *ec2.EC2, vpc *ec2.Vpc, subid *string) error {
	cigi := &ec2.CreateInternetGatewayInput{}
	cigo, err := svc.CreateInternetGateway(cigi)
	if err != nil {
		fmt.Println("Failed to create gateway.")
		return err
	}

	//fmt.Println("We have vpcid: " + *vpc.VpcId)
	_, err = svc.AttachInternetGateway(&ec2.AttachInternetGatewayInput{InternetGatewayId: cigo.InternetGateway.InternetGatewayId, VpcId: vpc.VpcId})
	if err != nil {
		fmt.Println("Failed to attach gateway.")
		return err
	}

	defr := "0.0.0.0/0"
	rtid, err := getMainRouteTableFromVPC(svc, vpc.VpcId)
	if err != nil {
		fmt.Println("Failed to get route table from VPC id.")
		panic(err)
	}
	cri := &ec2.CreateRouteInput{DestinationCidrBlock: &defr, GatewayId: cigo.InternetGateway.InternetGatewayId, RouteTableId: rtid}
	_, err = svc.CreateRoute(cri)
	//fmt.Println(cro)
	if err != nil {
		fmt.Println("Failed to create default route.")
		return err
	}

	arti := &ec2.AssociateRouteTableInput{RouteTableId: rtid, SubnetId: subid}
	_, err = svc.AssociateRouteTable(arti)
	//fmt.Println(arto)
	if err != nil {
		fmt.Println("Failed to associate subnet with route table.")
		return err
	}

	return nil

}