awscinfra

package
v0.0.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 19, 2023 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssociateRouteTableToSubnet

func AssociateRouteTableToSubnet(meta pgocomp.Meta, provider *aws.Provider, subnet *ec2.Subnet, routeTable *ec2.RouteTable) *pgocomp.ComponentWithMeta[*ec2.RouteTableAssociation]

AssociateRouteTableToSubnet associates a subnet to a route table

func AttachInternetGatewayToVPC

func AttachInternetGatewayToVPC(meta pgocomp.Meta, provider *aws.Provider, vpc *ec2.Vpc, igw *ec2.InternetGateway) *pgocomp.ComponentWithMeta[*ec2.InternetGatewayAttachment]

AttachInternetGatewayToVPC takes a meta, a vpc, an internet gateway and returnas an InternetGatewayAttachment Component

func CreateAndAttachDefaultRoute

func CreateAndAttachDefaultRoute(meta pgocomp.Meta, provider *aws.Provider, rt *ec2.RouteTable, igw *ec2.InternetGateway, iga *ec2.InternetGatewayAttachment) *pgocomp.ComponentWithMeta[*ec2.Route]

CreateAndAttachDefaultRoute takes a meta, a route table, an internetgateway and an internet gateway attachment and returns a Route Component

func CreateAndAttachTCPIngressSecurityGroupRule

func CreateAndAttachTCPIngressSecurityGroupRule(meta pgocomp.Meta, provider *aws.Provider, sg *ec2.SecurityGroup, fromPort, toPort int, cidrBlocks pulumi.StringArray) *pgocomp.ComponentWithMeta[*ec2.SecurityGroupRule]

CreateAndAttachTCPIngressSecurityGroupRule takes a meta, a security group, some nework parameters and returns a SecurityGroupRule Component

func CreateCertificate

func CreateCertificate(meta pgocomp.Meta, params CertificateParameters, provider *aws.Provider) *pgocomp.ComponentWithMeta[*acm.Certificate]

CreateCertificate creates a new certificate with a CertificateParameters

func CreateECSCluster

func CreateECSCluster(meta pgocomp.Meta, params ECSClusterParameters, provider *aws.Provider) *pgocomp.ComponentWithMeta[*ecs.Cluster]

CreateECSCluster creates a new ECSCluster

func CreateECSClusterComponent

func CreateECSClusterComponent(meta pgocomp.Meta, params ECSClusterParameters, provider *aws.Provider, vpc *ec2.Vpc, subnets []*ec2.Subnet, tgs map[string]*lb.TargetGroup, sgs []*ec2.SecurityGroup) *pgocomp.ComponentWithMeta[*ECSClusterComponent]

CreateECSClusterComponent takes some paramenters and creates a new Network Partition

func CreateEcsFargateServiceComponent

func CreateEcsFargateServiceComponent(
	meta pgocomp.Meta,
	params ECSServiceParameters,
	provider *aws.Provider,
	vpc *ec2.Vpc,
	cluster *ecs.Cluster,
	subnets []*ec2.Subnet,
	targetGroups map[string]*lb.TargetGroup,
) *pgocomp.ComponentWithMeta[*ecs.Service]

CreateEcsFargateServiceComponent is

func CreateInternetGateway

func CreateInternetGateway(meta pgocomp.Meta, provider *aws.Provider, vpc *ec2.Vpc) *pgocomp.ComponentWithMeta[*ec2.InternetGateway]

CreateInternetGateway takes a meta, a vpc and returns an InternetGateway component

func CreateListener

func CreateListener(meta pgocomp.Meta, params LBListenerParameters, provider *aws.Provider, loadBalancer *lb.LoadBalancer, tgs map[string]*lb.TargetGroup, sg *ec2.SecurityGroup, certs map[string]*acm.Certificate) *pgocomp.ComponentWithMeta[*lb.Listener]

CreateListener creates a new Listener Component

func CreateLoadBalancerAndAssociateToSubnets

func CreateLoadBalancerAndAssociateToSubnets(meta pgocomp.Meta, lbType LBType, provider *aws.Provider, subnets []*ec2.Subnet, sg *ec2.SecurityGroup) *pgocomp.ComponentWithMeta[*lb.LoadBalancer]

CreateLoadBalancerAndAssociateToSubnets creates a new LoadBalancer Component

func CreateLoadBalancerComponent

func CreateLoadBalancerComponent(meta pgocomp.Meta, params LoadBalancerParameters, provider *aws.Provider, vpc *ec2.Vpc, subnets []*ec2.Subnet, tgs map[string]*pgocomp.GetComponentWithMetaResponse[*lb.TargetGroup], certs map[string]*acm.Certificate) *pgocomp.ComponentWithMeta[*LoadBalancerComponent]

CreateLoadBalancerComponent takes some paramenters and creates a new Network Partition

func CreateNetworkPartition

func CreateNetworkPartition(meta pgocomp.Meta, params NetworkPartitionParameters, provider *aws.Provider, vpc *ec2.Vpc, rt *ec2.RouteTable, certs map[string]*acm.Certificate) *pgocomp.ComponentWithMeta[*NetworkPartitionComponent]

CreateNetworkPartition takes some paramenters and creates a new Network Partition

func CreateProvider

func CreateProvider(meta pgocomp.Meta, region string) *pgocomp.ComponentWithMeta[*aws.Provider]

CreateProvider takes a name and a region and returns an aws.Provider Component

func CreateRouteTable

func CreateRouteTable(meta pgocomp.Meta, provider *aws.Provider, vpc *ec2.Vpc) *pgocomp.ComponentWithMeta[*ec2.RouteTable]

CreateRouteTable takes a name and a vpc and returns a RouteTable Component

func CreateSecurityGroup

func CreateSecurityGroup(meta pgocomp.Meta, provider *aws.Provider, vpc *ec2.Vpc) *pgocomp.ComponentWithMeta[*ec2.SecurityGroup]

CreateSecurityGroup takes a name and a vpc and returns a SecurityGroup Component

func CreateSecurityGroupRuleForTargetGroup

func CreateSecurityGroupRuleForTargetGroup(meta pgocomp.Meta, provider *aws.Provider, sg *ec2.SecurityGroup, tg *lb.TargetGroup, vpc *ec2.Vpc) *pgocomp.ComponentWithMeta[*ec2.SecurityGroupRule]

CreateSecurityGroupRuleForTargetGroup ...

func CreateSubnet

func CreateSubnet(meta pgocomp.Meta, params SubnetParameters, az string, provider *aws.Provider, vpc *ec2.Vpc, rt *ec2.RouteTable) *pgocomp.ComponentWithMeta[*ec2.Subnet]

CreateSubnet takes a meta, some parameters and a vpc and returns a SubnetComponent

func CreateSubnetAndAssociateToRoute

func CreateSubnetAndAssociateToRoute(meta pgocomp.Meta, params SubnetParameters, az string, provider *aws.Provider, vpc *ec2.Vpc, rt *ec2.RouteTable) *pgocomp.ComponentWithMeta[*ec2.Subnet]

CreateSubnetAndAssociateToRoute takes a meta, some parameters and a vpc and returns a SubnetComponent

func CreateTargetGroup

func CreateTargetGroup(meta pgocomp.Meta, params LBTargetGroupParameters, provider *aws.Provider, vpc *ec2.Vpc) *pgocomp.ComponentWithMeta[*lb.TargetGroup]

CreateTargetGroup creates a new LoadBalancer Component

func CreateVPC

func CreateVPC(meta pgocomp.Meta, params VpcParameters, provider *aws.Provider) *pgocomp.ComponentWithMeta[*ec2.Vpc]

CreateVPC takes a meta, a list of parameters and a provides and returns a Vpc Component

func CreateVpcComponent

func CreateVpcComponent(params VpcParameters) *pgocomp.ComponentWithMeta[*VpcComponent]

CreateVpcComponent creates a Region Component thar comprises of a Vpc and its subcomponents

func New

New create a new infrastructure

Types

type CertificateParameters

type CertificateParameters struct {
	pgocomp.Meta
	Domain           string
	ValidationMethod CertificateValidationMethod
}

CertificateParameters creates a new certificate

type CertificateValidationMethod

type CertificateValidationMethod string

CertificateValidationMethod is the method used to validate the certificate. By DNS or EMAIL

const (
	//ValidationByDNS validates the certificate by a CNAME field in the DNS server. auto renew
	ValidationByDNS CertificateValidationMethod = "DNS"
	//ValidationByEmail validates by email.. manually renewed
	ValidationByEmail CertificateValidationMethod = "EMAIL"
)

type ContainerDefinition

type ContainerDefinition struct {
	Name         string                    `json:"name"`
	Image        string                    `json:"image"`
	Essential    *bool                     `json:"essential,omitempty"`
	PortMappings []ContainerPortMapping    `json:"portMappings,omitempty"`
	Environment  []ContainerEnvironmentVar `json:"environment,omitempty"`
	EntryPoint   []string                  `json:"entryPoint,omitempty"`
	Command      []string                  `json:"command,omitempty"`
	CPU          int64                     `json:"cpu,omitempty"`
	Memory       int64                     `json:"memory,omitempty"`
}

ContainerDefinition defines containers to be used in the Infra

func (*ContainerDefinition) ECSNativeTaskDefinitionContainerDefinitionArgs

func (c *ContainerDefinition) ECSNativeTaskDefinitionContainerDefinitionArgs() ecsn.TaskDefinitionContainerDefinitionArgs

ECSNativeTaskDefinitionContainerDefinitionArgs transformas a container parameter into a Ecs native container defitinion

func (*ContainerDefinition) ECSNativeTaskDefinitionKeyValuePairArray

func (c *ContainerDefinition) ECSNativeTaskDefinitionKeyValuePairArray() (array ecsn.TaskDefinitionKeyValuePairArray)

ECSNativeTaskDefinitionKeyValuePairArray transforms this container into a ECS Native KeyValue Pair Array

func (*ContainerDefinition) ECSNativeTaskDefinitionPortMappingArray

func (c *ContainerDefinition) ECSNativeTaskDefinitionPortMappingArray() (array ecsn.TaskDefinitionPortMappingArray)

ECSNativeTaskDefinitionPortMappingArray transforms this configuration into a ECS Native Port Mapping Array

type ContainerEnvironmentVar

type ContainerEnvironmentVar struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

ContainerEnvironmentVar ...

type ContainerPortMapping

type ContainerPortMapping struct {
	ContainerPort         int        `json:"containerPort"`
	HostPort              int        `json:"hostPort"`
	Protocol              TGProtocol `json:"protocol"`
	TargetGroupLookupName string     `json:"-"`
}

ContainerPortMapping are the ports the the container exposes

func (*ContainerPortMapping) ECSNativeTaskDefinitionPortMappingAppProtocol

func (p *ContainerPortMapping) ECSNativeTaskDefinitionPortMappingAppProtocol() ecsn.TaskDefinitionPortMappingAppProtocol

ECSNativeTaskDefinitionPortMappingAppProtocol transforms ContainerPortMapping into a ecs native TaskDefinitionPortMappings

func (*ContainerPortMapping) ECSNativeTaskDefinitionPortMappingArgs

func (p *ContainerPortMapping) ECSNativeTaskDefinitionPortMappingArgs() (array ecsn.TaskDefinitionPortMappingArgs)

ECSNativeTaskDefinitionPortMappingArgs transforms this configuration into a ECS Native Port Mapping Args

type ECSClusterComponent

type ECSClusterComponent struct {
	Cluster         *pgocomp.GetComponentWithMetaResponse[*ecs.Cluster]
	FargateServices map[string]*pgocomp.GetComponentWithMetaResponse[*ecs.Service]
}

ECSClusterComponent holds the created cluster components

type ECSClusterParameters

type ECSClusterParameters struct {
	pgocomp.Meta
	Services []ECSServiceParameters
}

ECSClusterParameters are parameters to create an ECS Cluster

type ECSServiceParameters

type ECSServiceParameters struct {
	pgocomp.Meta
	DesiredCount   int
	CPU            int
	Memory         int
	AssignPublicIP bool
	Containers     []ContainerDefinition
}

ECSServiceParameters defines containers to be used in the Infra

func (*ECSServiceParameters) ECSNativeTaskDefinitionContainerDefinitionArray

func (c *ECSServiceParameters) ECSNativeTaskDefinitionContainerDefinitionArray() (array ecsn.TaskDefinitionContainerDefinitionArray)

ECSNativeTaskDefinitionContainerDefinitionArray transform containers into a ECS Native array

func (*ECSServiceParameters) ECSTaskDefinitionContainerDefinitionArray

func (c *ECSServiceParameters) ECSTaskDefinitionContainerDefinitionArray() (string, error)

ECSTaskDefinitionContainerDefinitionArray transform containers into a json definition

type GatewayParameters

type GatewayParameters struct {
	pgocomp.Meta
}

GatewayParameters are parameters used by the CreateSubnet function

type InfraComponent

type InfraComponent struct {
	Vpcs map[string]*pgocomp.GetComponentWithMetaResponse[*VpcComponent]
}

InfraComponent b

type InfraParameters

type InfraParameters struct {
	pgocomp.Meta
	Vpcs []VpcParameters
}

InfraParameters is a configuration for a

type LBListenerParameters

type LBListenerParameters struct {
	pgocomp.Meta
	Port                  int
	Protocol              LBProtocol
	TargetGroupLookupName string
	Rules                 []LBRuleParameters
	CertificateLookupName string
}

LBListenerParameters is the paramenters for a listener

type LBProtocol

type LBProtocol string

LBProtocol is the network protocol tobe balanced

const (
	//HTTP is the Hyper Text Protocol
	HTTP LBProtocol = "HTTP"
	//HTTP2 is the Hyper Text Protocol version 2
	HTTP2 LBProtocol = "HTTP2"
	//GRPC is the Google remote procedure call procotol used to change Protobuf messages
	GRPC LBProtocol = "GRPC"
)

type LBRuleConditionParameters

type LBRuleConditionParameters struct {
	RuleConditionType LBRuleConditionType
	PathPatterns      []string
	HostHeaders       []string
	HTTPHeader        struct {
		Name   string
		Values []string
	}
	QueryString []struct {
		Key   string
		Value string
	}
	SourceIPs []string
}

LBRuleConditionParameters ...

type LBRuleConditionType

type LBRuleConditionType int

LBRuleConditionType ...

const (
	//PathPattern ...
	PathPattern LBRuleConditionType = iota
	//HostHeader ...
	HostHeader
	//HTTPHeader ...
	HTTPHeader
	//QueryString ...
	QueryString
	//SourceIP ...
	SourceIP
)

type LBRuleParameters

type LBRuleParameters struct {
	pgocomp.Meta
	TargetGroupLookupName string
	Priority              int
	Conditions            []LBRuleConditionParameters
}

LBRuleParameters is the paramenters for a listener

type LBTargetGroupHealthCHeck added in v0.0.12

type LBTargetGroupHealthCHeck struct {
	Disabled           bool
	HealthyThreshold   int
	Path               string
	UnhealthyThreshold int
	Timeout            int
	StatusCodeRange    string
}

LBTargetGroupHealthCHeck ...

type LBTargetGroupParameters

type LBTargetGroupParameters struct {
	pgocomp.Meta
	Port        int
	Protocol    TGProtocol
	TargetType  TargetType
	HealthCheck LBTargetGroupHealthCHeck
}

LBTargetGroupParameters is the paramenters for a listener

type LBType

type LBType string

LBType is the type of the network load balander

const (
	//Classic is the classic elastic load balancer that works on layer 4 and 7
	Classic LBType = "gateway"

	//Application is the application load balancer that works on layer 7
	Application LBType = "application"

	//Network is the network load balancer that works on layer 4
	Network LBType = "network"
)

type LoadBalancerComponent

type LoadBalancerComponent struct {
	LoadBalancer  *pgocomp.GetComponentWithMetaResponse[*lb.LoadBalancer]
	SecurityGroup *pgocomp.GetComponentWithMetaResponse[*ec2.SecurityGroup]
	Listeners     map[string]*pgocomp.GetComponentWithMetaResponse[*lb.Listener]
}

LoadBalancerComponent is the response of CreateLoadBalancerComponent function

type LoadBalancerParameters

type LoadBalancerParameters struct {
	pgocomp.Meta
	Type       LBType
	IsInternal bool
	Listeners  []LBListenerParameters
}

LoadBalancerParameters are parameters used by the CreateSubnet function

type NetworkPartitionComponent

NetworkPartitionComponent is the response of CreateBlockComponent

type NetworkPartitionParameters

type NetworkPartitionParameters struct {
	pgocomp.Meta
	IsPublic       bool
	Subnets        []SubnetParameters
	LoadBalancers  []LoadBalancerParameters
	LBTargetGroups []LBTargetGroupParameters
	ECSClusters    []ECSClusterParameters
}

NetworkPartitionParameters defines the parameter for a network block, like public or private

type ProviderParameters

type ProviderParameters struct {
	pgocomp.Meta
	Region string
}

ProviderParameters are used to create new region infrastructure

type SingleRegionInfra

type SingleRegionInfra struct {
	Region *pgocomp.GetComponentWithMetaResponse[*VpcComponent]
}

SingleRegionInfra is the return type of the function NewBasicNetworkComponent

type SubnetParameters

type SubnetParameters struct {
	pgocomp.Meta
	CidrBlock string
}

SubnetParameters are parameters used by the CreateSubnet function

type TGProtocol

type TGProtocol string

TGProtocol is the network protocol tobe balanced

const (
	//TGProtoHTTP ...
	TGProtoHTTP TGProtocol = "HTTP"
	//TGProtoUDP ...
	TGProtoUDP TGProtocol = "UDP"
	//TGProtoTCP ...
	TGProtoTCP TGProtocol = "TCP"
	//TGProtoTCPUDP ...
	TGProtoTCPUDP TGProtocol = "TCP_UDP"
	//TGProtoHTTPS ...
	TGProtoHTTPS TGProtocol = "HTTPS"
	//TGProtoTLS ...
	TGProtoTLS TGProtocol = "TLS"
)

type TargetType

type TargetType string

TargetType the Target type of a Target group

const (
	//TGIp is a target group that will group members by their ip adresses
	TGIp TargetType = "ip"
	//TGInstance is a target group that will group members by their instances
	TGInstance TargetType = "instance"
)

type VpcComponent

VpcComponent is the return type of the function NewBasicNetworkComponent

type VpcParameters

type VpcParameters struct {
	pgocomp.Meta
	Provider     ProviderParameters
	CidrBlock    string
	Partitions   []NetworkPartitionParameters
	Certificates []CertificateParameters
}

VpcParameters are the parameters of the function NewBasicNetworkComponent

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL