appbuilder

package
v0.0.0-...-464cf0d Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2025 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RDSAuthTypeIAM = iota
	RDSAuthTypeSecretsManager
)
View Source
const (
	ECSClusterParameter           = "ECSCluster"
	ECSRepoParameter              = "ECSRepo"
	ECSTaskExecutionRoleParameter = "ECSTaskExecutionRole"
	VersionTagParameter           = "VersionTag"
	ListenerARNParameter          = "ListenerARN"
	HostHeaderParameter           = "HostHeader"
	EnvNameParameter              = "EnvName"
	ClusterNameParameter          = "ClusterName"
	VPCParameter                  = "VPCID"
	MetaDeployAssumeRoleParameter = "MetaDeployAssumeRoleArns"
	JWKSParameter                 = "JWKS"
	AWSRegionParameter            = "AWS::Region"
	CORSOriginParameter           = "CORSOrigin"
	SNSPrefixParameter            = "SNSPrefix"
	S3BucketNamespaceParameter    = "S3BucketNamespace"
	O5SidecarImageParameter       = "O5SidecarImage"
	SourceTagParameter            = "SourceTag"
	EventBusARNParameter          = "EventBusARN"
	LoadBalancerSecurityGroup     = "LoadBalancerSecurityGroup"
	SubnetIDsParameter            = "SubnetIDs"

	AWSAccountIDParameter = "AWS::AccountId"

	O5SidecarContainerName = "o5_runtime"
	O5SidecarInternalPort  = 8081

	DeadLetterTargetName = "dead-letter"
	O5MonitorTargetName  = "o5-monitor"
)
View Source
const (
	PolicyNameReadSecrets        = "read-secrets"
	PolicyNameECRPull            = "ecr-pull"
	PolicyNameEventbridgePublish = "eventbridge-publish"
	PolicyNameSNSPublish         = "sns-publish"
	PolicyNameSQSPublish         = "sqs-publish"
	PolicyNameSQSSubscribe       = "sqs-subscribe"
	PolicyNameS3ReadwriteACL     = "s3-readwrite-acl"
	PolicyNameS3ReadWrite        = "s3-readwrite"
	PolicyNameS3ReadOnly         = "s3-read-only"
	PolicyNameS3WriteOnly        = "s3-write-only"
	PolicyNameRDSConnect         = "rds-connect"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AdapterEndpoint

type AdapterEndpoint struct {
	Value *valuePromise
}

type AppInput

type AppInput struct {
	Application *application_pb.Application

	RDSHosts   RDSHostLookup
	VersionTag string
}

func (AppInput) Validate

func (ai AppInput) Validate() error

type AuroraDatabaseRef

type AuroraDatabaseRef struct {
	// contains filtered or unexported fields
}

func (AuroraDatabaseRef) AuroraConnectARN

func (dbDef AuroraDatabaseRef) AuroraConnectARN() cflib.TemplateRef

func (AuroraDatabaseRef) AuroraEndpoint

func (dbDef AuroraDatabaseRef) AuroraEndpoint() cflib.TemplateRef

func (AuroraDatabaseRef) AuroraProxy

func (dbDef AuroraDatabaseRef) AuroraProxy() (*AuroraDatabaseRef, bool)

func (AuroraDatabaseRef) DSNToProxy

func (dbDef AuroraDatabaseRef) DSNToProxy(host string) string

func (AuroraDatabaseRef) IsProxy

func (dbDef AuroraDatabaseRef) IsProxy() bool

func (AuroraDatabaseRef) Name

func (dbDef AuroraDatabaseRef) Name() string

func (AuroraDatabaseRef) SecretValueFrom

func (dbDef AuroraDatabaseRef) SecretValueFrom() (cflib.TemplateRef, bool)

func (AuroraDatabaseRef) ServerGroup

func (dbDef AuroraDatabaseRef) ServerGroup() DatabaseServerGroup

type BucketRef

type BucketRef interface {
	Name() cflib.TemplateRef
	S3URL(subPathPtr *string) cflib.TemplateRef
	GetPermissions() RWPermission
	ARN() cflib.TemplateRef
}

type BucketReference

type BucketReference struct {
	Bucket BucketRef
	Name   string
	// contains filtered or unexported fields
}

type BucketVariable

type BucketVariable struct {
	Value *valuePromise
	// contains filtered or unexported fields
}

type Builder

type Builder struct {
	Globals
	Template *cflib.TemplateBuilder
	// contains filtered or unexported fields
}

func NewBuilder

func NewBuilder(input AppInput) (*Builder, resourceBuilder, error)

func (*Builder) AddPostgresResource

func (bb *Builder) AddPostgresResource(pg *awsdeployer_pb.PostgresDatabaseResource)

func (*Builder) Export

func (bb *Builder) Export() *BuiltApplication

type BuiltApplication

type BuiltApplication struct {
	Template   *cloudformation.Template
	Parameters []*awsdeployer_pb.Parameter

	Databases []*awsdeployer_pb.PostgresDatabaseResource
	Name      string
	Version   string
}

func BuildApplication

func BuildApplication(spec AppInput) (*BuiltApplication, error)

type ContainerDefinition

type ContainerDefinition struct {
	Name string

	Databases  []*DatabaseReference
	Buckets    []*BucketReference
	Secrets    []*SecretReference
	Parameters []*ParameterReference

	AdapterEndpoint *AdapterEndpoint
	// contains filtered or unexported fields
}

func (*ContainerDefinition) ExposePort

func (cd *ContainerDefinition) ExposePort(port int)

func (*ContainerDefinition) ToCloudformation

type DatabaseRef

type DatabaseRef interface {
	// Name as specified in the application o5 file
	Name() string

	ServerGroup() DatabaseServerGroup
	AuroraProxy() (*AuroraDatabaseRef, bool)
	SecretValueFrom() (cflib.TemplateRef, bool)
}

type DatabaseReference

type DatabaseReference struct {
	Name     string
	Database DatabaseRef
	// contains filtered or unexported fields
}

type DatabaseServerGroup

type DatabaseServerGroup struct {
	GroupName           string
	ClientSecurityGroup cflib.TemplateRef
}

type DatabaseVariable

type DatabaseVariable struct {
	Name string

	Value *valuePromise
	// contains filtered or unexported fields
}

type ECSTaskDefinition

type ECSTaskDefinition struct {
	Sidecar *SidecarBuilder
	// contains filtered or unexported fields
}

func NewECSTaskDefinition

func NewECSTaskDefinition(globals Globals, runtimeName string) *ECSTaskDefinition

func (*ECSTaskDefinition) AddEventBridgeTargets

func (td *ECSTaskDefinition) AddEventBridgeTargets(targets []*application_pb.Target)

func (*ECSTaskDefinition) AddNamedPolicies

func (ts *ECSTaskDefinition) AddNamedPolicies(policyNames []string)

func (*ECSTaskDefinition) AddToTemplate

func (td *ECSTaskDefinition) AddToTemplate(template *cflib.TemplateBuilder) (cflib.TemplateRef, error)

func (*ECSTaskDefinition) BuildRuntimeContainer

func (td *ECSTaskDefinition) BuildRuntimeContainer(def *application_pb.Container) error

func (*ECSTaskDefinition) ExposeContainerPort

func (td *ECSTaskDefinition) ExposeContainerPort(containerName string, port int) error

func (*ECSTaskDefinition) ListDatabases

func (td *ECSTaskDefinition) ListDatabases() []*DatabaseReference

type EnvVar

type EnvVar struct {
	Name  string
	Value *valuePromise
}

type Globals

type Globals interface {
	AppName() string
	FindRDSHost(string) (*RDSHost, bool)

	Bucket(string) (BucketRef, bool)
	Secret(string) (SecretRef, bool)
	Database(string) (DatabaseRef, bool)
}

type ListenerRuleSet

type ListenerRuleSet struct {
	Rules []*cflib.Resource[*elbv2.ListenerRule]
}

func NewListenerRuleSet

func NewListenerRuleSet() *ListenerRuleSet

func (*ListenerRuleSet) AddRoute

func (*ListenerRuleSet) AddTemplateResources

func (ll *ListenerRuleSet) AddTemplateResources(template *cflib.TemplateBuilder)

type ParameterReference

type ParameterReference struct {
	Name  string
	Value *valuePromise
	// contains filtered or unexported fields
}

type PolicyBuilder

type PolicyBuilder struct {
	// contains filtered or unexported fields
}

func NewPolicyBuilder

func NewPolicyBuilder() *PolicyBuilder

func (*PolicyBuilder) AddBucketReadOnly

func (pb *PolicyBuilder) AddBucketReadOnly(arn cflib.TemplateRef)

func (*PolicyBuilder) AddBucketReadWrite

func (pb *PolicyBuilder) AddBucketReadWrite(arn cflib.TemplateRef)

func (*PolicyBuilder) AddBucketReadWriteAcl

func (pb *PolicyBuilder) AddBucketReadWriteAcl(arn cflib.TemplateRef)

func (*PolicyBuilder) AddBucketWriteOnly

func (pb *PolicyBuilder) AddBucketWriteOnly(arn cflib.TemplateRef)

func (*PolicyBuilder) AddECRPull

func (pb *PolicyBuilder) AddECRPull()

func (*PolicyBuilder) AddEventBridgePublish

func (pb *PolicyBuilder) AddEventBridgePublish(topicName string)

func (*PolicyBuilder) AddManagedPolicyARN

func (pb *PolicyBuilder) AddManagedPolicyARN(arn string)

func (*PolicyBuilder) AddRDSConnect

func (pb *PolicyBuilder) AddRDSConnect(arn string)

func (*PolicyBuilder) AddReadSecret

func (pb *PolicyBuilder) AddReadSecret(arn string)

func (*PolicyBuilder) AddSNSPublish

func (pb *PolicyBuilder) AddSNSPublish(arn string)

func (*PolicyBuilder) AddSQSPublish

func (pb *PolicyBuilder) AddSQSPublish(arn string)

func (*PolicyBuilder) AddSQSSubscribe

func (pb *PolicyBuilder) AddSQSSubscribe(arn cflib.TemplateRef)

func (*PolicyBuilder) Build

func (pb *PolicyBuilder) Build(familyName string) []iam.Role_Policy

func (*PolicyBuilder) BuildRole

func (pb *PolicyBuilder) BuildRole(familyName string) *iam.Role

type PolicyDocument

type PolicyDocument struct {
	// Version of the policy document
	Version string `json:"Version"`
	// Statement is the list of statements in the policy document
	Statement []StatementEntry `json:"Statement"`
}

type RDSAuthType

type RDSAuthType int

type RDSHost

type RDSHost struct {
	AuthType environment_pb.RDSAuthTypeKey
}

type RDSHostLookup

type RDSHostLookup interface {
	FindRDSHost(string) (*RDSHost, bool)
}

type RDSHostMap

type RDSHostMap map[string]*RDSHost

func (RDSHostMap) FindRDSHost

func (r RDSHostMap) FindRDSHost(serverGroup string) (*RDSHost, bool)

type RWPermission

type RWPermission int
const (
	ReadOnly RWPermission = iota
	WriteOnly
	ReadWrite
)

type RuntimeService

type RuntimeService struct {
	Prefix string
	Name   string

	TargetGroups map[string]*targetGroup

	TaskDefinition *ECSTaskDefinition
	// contains filtered or unexported fields
}

func NewRuntimeService

func NewRuntimeService(globals Globals, spec *application_pb.Runtime) (*RuntimeService, error)

func (*RuntimeService) AddRoutes

func (rs *RuntimeService) AddRoutes(ingress *ListenerRuleSet) error

func (*RuntimeService) AddTemplateResources

func (rs *RuntimeService) AddTemplateResources(template *cflib.TemplateBuilder) error

func (*RuntimeService) LazyTargetGroup

func (rs *RuntimeService) LazyTargetGroup(protocol application_pb.RouteProtocol, targetContainer string, port int) (*targetGroup, error)

func (*RuntimeService) ListDatabaseServerGroups

func (rs *RuntimeService) ListDatabaseServerGroups() []DatabaseServerGroup

type SecretRef

type SecretRef interface {
	ARN() cflib.TemplateRef
	SecretValueFrom(jsonKey string) cflib.TemplateRef
}

type SecretReference

type SecretReference struct {
	Name string
	// contains filtered or unexported fields
}

type SidecarBuilder

type SidecarBuilder struct {
	// contains filtered or unexported fields
}

func NewSidecarBuilder

func NewSidecarBuilder(appName string, policy *PolicyBuilder) *SidecarBuilder

func (*SidecarBuilder) AddAppEndpoint

func (sb *SidecarBuilder) AddAppEndpoint(container string, port int64)

func (*SidecarBuilder) Build

func (*SidecarBuilder) IsRequired

func (sb *SidecarBuilder) IsRequired() bool

func (*SidecarBuilder) ProxyDB

func (sb *SidecarBuilder) ProxyDB(db DatabaseRef) string

func (*SidecarBuilder) PublishToEventBridge

func (sb *SidecarBuilder) PublishToEventBridge()

func (*SidecarBuilder) RunOutbox

func (sb *SidecarBuilder) RunOutbox(db DatabaseRef, delayble bool) error

func (*SidecarBuilder) ServeAdapter

func (sb *SidecarBuilder) ServeAdapter()

func (*SidecarBuilder) ServePublic

func (sb *SidecarBuilder) ServePublic()

func (*SidecarBuilder) SetWorkerConfig

func (sb *SidecarBuilder) SetWorkerConfig(cfg *application_pb.WorkerConfig) error

func (*SidecarBuilder) SubscribeSQS

func (sb *SidecarBuilder) SubscribeSQS(urlRef cflib.TemplateRef, arnRef cflib.TemplateRef) error

type StatementEntry

type StatementEntry struct {
	// Effect is the effect of the statement
	Effect string `json:"Effect"`
	// Action is the list of actions allowed or denied by the statement
	Action []string `json:"Action"`

	// Resource is the list of resources the statement applies to
	Resource []string `json:"Resource,omitempty"`

	Principal map[string]string `json:"Principal,omitempty"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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