manifest

package
v1.15.0 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2022 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Overview

Package manifest provides functionality to create Manifest files.

Package manifest provides functionality to create Manifest files.

Package manifest provides functionality to create Manifest files.

Index

Constants

View Source
const (
	DefaultHealthCheckPath        = "/"
	DefaultHealthCheckGracePeriod = 60
)

Default values for HTTPHealthCheck for a load balanced web service.

View Source
const (
	GithubProviderName     = "GitHub"
	GithubV1ProviderName   = "GitHubV1"
	CodeCommitProviderName = "CodeCommit"
	BitbucketProviderName  = "Bitbucket"
)
View Source
const (
	// LoadBalancedWebServiceType is a web service with a load balancer and Fargate as compute.
	LoadBalancedWebServiceType = "Load Balanced Web Service"
	// RequestDrivenWebServiceType is a Request-Driven Web Service managed by AppRunner
	RequestDrivenWebServiceType = "Request-Driven Web Service"
	// BackendServiceType is a service that cannot be accessed from the internet but can be reached from other services.
	BackendServiceType = "Backend Service"
	// WorkerServiceType is a worker service that manages the consumption of messages.
	WorkerServiceType = "Worker Service"
)
View Source
const (
	OSLinux                 = dockerengine.OSLinux
	OSWindows               = dockerengine.OSWindows
	OSWindowsServer2019Core = "windows_server_2019_core"
	OSWindowsServer2019Full = "windows_server_2019_full"

	ArchAMD64 = dockerengine.ArchAMD64
	ArchX86   = dockerengine.ArchX86
	ArchARM   = dockerengine.ArchARM
	ArchARM64 = dockerengine.ArchARM64

	// Minimum CPU and mem values required for Windows-based tasks.
	MinWindowsTaskCPU    = 1024
	MinWindowsTaskMemory = 2048
)

Platform related settings.

View Source
const (
	GRPCProtocol = "gRPC" // GRPCProtocol is the HTTP protocol version for gRPC.
)
View Source
const (
	// ScheduledJobType is a recurring ECS Fargate task which runs on a schedule.
	ScheduledJobType = "Scheduled Job"
)
View Source
const (
	TCP = "TCP"
)

Variables

View Source
var (
	PublicSubnetPlacement  = Placement("public")
	PrivateSubnetPlacement = Placement("private")
)

AWS VPC subnet placement options.

View Source
var (
	ErrAppRunnerInvalidPlatformWindows = errors.New("Windows is not supported for App Runner services")
)

Error definitions.

PipelineProviders is the list of all available source integrations.

Functions

func DockerfileBuildRequired added in v1.15.0

func DockerfileBuildRequired(svc interface{}) (bool, error)

DockerfileBuildRequired returns if the workload container image should be built from local Dockerfile.

func IsArmArch added in v1.13.0

func IsArmArch(arch string) bool

IsArmArch returns whether or not the arch is ARM.

func IsTypeAService added in v1.7.0

func IsTypeAService(t string) bool

IsTypeAService returns if manifest type is service.

func JobTypes added in v0.4.0

func JobTypes() []string

JobTypes returns the list of supported job manifest types.

func ParsePortMapping added in v1.14.0

func ParsePortMapping(s *string) (port *string, protocol *string, err error)

ParsePortMapping parses port-protocol string into individual port and protocol strings. Valid examples: 2000/udp, or 2000.

func RedirectPlatform added in v1.12.0

func RedirectPlatform(os, arch, wlType string) (platform string, err error)

RedirectPlatform returns a platform that's supported for the given manifest type.

func ServiceTypes

func ServiceTypes() []string

ServiceTypes returns the list of supported service manifest types.

func WorkloadTypes added in v0.5.0

func WorkloadTypes() []string

WorkloadTypes returns the list of all manifest types.

Types

type AdvancedCount added in v1.6.0

type AdvancedCount struct {
	Spot         *int           `yaml:"spot"` // mutually exclusive with other fields
	Range        Range          `yaml:"range"`
	CPU          *Percentage    `yaml:"cpu_percentage"`
	Memory       *Percentage    `yaml:"memory_percentage"`
	Requests     *int           `yaml:"requests"`
	ResponseTime *time.Duration `yaml:"response_time"`
	QueueScaling QueueScaling   `yaml:"queue_delay"`
	// contains filtered or unexported fields
}

AdvancedCount represents the configurable options for Auto Scaling as well as Capacity configuration (spot).

func (*AdvancedCount) IgnoreRange added in v1.6.0

func (a *AdvancedCount) IgnoreRange() bool

IgnoreRange returns whether desiredCount is specified on spot capacity

func (*AdvancedCount) IsEmpty added in v1.6.0

func (a *AdvancedCount) IsEmpty() bool

IsEmpty returns whether AdvancedCount is empty.

func (AdvancedCount) Validate added in v1.11.0

func (a AdvancedCount) Validate() error

Validate returns nil if AdvancedCount is configured correctly.

type Alias added in v1.10.0

type Alias stringSliceOrString

Alias is a custom type which supports unmarshaling "http.alias" yaml which can either be of type string or type slice of string.

func (*Alias) IsEmpty added in v1.11.0

func (e *Alias) IsEmpty() bool

IsEmpty returns empty if Alias is empty.

func (*Alias) ToString added in v1.14.0

func (e *Alias) ToString() string

ToString converts an Alias to a string.

func (*Alias) ToStringSlice added in v1.10.0

func (e *Alias) ToStringSlice() ([]string, error)

ToStringSlice converts an Alias to a slice of string using shell-style rules.

func (*Alias) UnmarshalYAML added in v1.10.0

func (e *Alias) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the Alias struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (Alias) Validate added in v1.11.0

func (Alias) Validate() error

Validate returns nil if Alias is configured correctly.

type AppRunnerInstanceConfig added in v1.7.0

type AppRunnerInstanceConfig struct {
	CPU      *int                 `yaml:"cpu"`
	Memory   *int                 `yaml:"memory"`
	Platform PlatformArgsOrString `yaml:"platform,omitempty"`
}

AppRunnerInstanceConfig contains the instance configuration properties for an App Runner service.

func (AppRunnerInstanceConfig) Validate added in v1.12.0

func (r AppRunnerInstanceConfig) Validate() error

Validate returns nil if AppRunnerInstanceConfig is configured correctly.

type AuthorizationConfig added in v1.2.0

type AuthorizationConfig struct {
	IAM           *bool   `yaml:"iam"`             // Default true
	AccessPointID *string `yaml:"access_point_id"` // Default ""
}

AuthorizationConfig holds options relating to access points and IAM authorization.

func (*AuthorizationConfig) IsEmpty added in v1.11.0

func (a *AuthorizationConfig) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (AuthorizationConfig) Validate added in v1.11.0

func (a AuthorizationConfig) Validate() error

Validate returns nil if AuthorizationConfig is configured correctly.

type BackendService

type BackendService struct {
	Workload             `yaml:",inline"`
	BackendServiceConfig `yaml:",inline"`
	// Use *BackendServiceConfig because of https://github.com/imdario/mergo/issues/146
	Environments map[string]*BackendServiceConfig `yaml:",flow"`
	// contains filtered or unexported fields
}

BackendService holds the configuration to create a backend service manifest.

func NewBackendService

func NewBackendService(props BackendServiceProps) *BackendService

NewBackendService applies the props to a default backend service configuration with minimal task sizes, single replica, no healthcheck, and then returns it.

func (BackendService) ApplyEnv

func (s BackendService) ApplyEnv(envName string) (WorkloadManifest, error)

ApplyEnv returns the service manifest with environment overrides. If the environment passed in does not have any overrides then it returns itself.

func (*BackendService) BuildArgs added in v0.3.0

func (s *BackendService) BuildArgs(wsRoot string) *DockerBuildArgs

BuildArgs returns a docker.BuildArguments object for the service given a workspace root directory.

func (*BackendService) BuildRequired added in v0.5.0

func (s *BackendService) BuildRequired() (bool, error)

BuildRequired returns if the service requires building from the local Dockerfile.

func (*BackendService) EnvFile added in v1.14.0

func (s *BackendService) EnvFile() string

EnvFile returns the location of the env file against the ws root directory.

func (*BackendService) MarshalBinary

func (s *BackendService) MarshalBinary() ([]byte, error)

MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.

func (*BackendService) Port added in v1.10.0

func (s *BackendService) Port() (port uint16, ok bool)

Port returns the exposed the exposed port in the manifest. If the backend service is not meant to be reachable, then ok is set to false.

func (*BackendService) Publish added in v1.10.0

func (s *BackendService) Publish() []Topic

Publish returns the list of topics where notifications can be published.

func (BackendService) Validate added in v1.11.0

func (b BackendService) Validate() error

Validate returns nil if BackendService is configured correctly.

type BackendServiceConfig

type BackendServiceConfig struct {
	ImageConfig      ImageWithHealthcheckAndOptionalPort `yaml:"image,flow"`
	ImageOverride    `yaml:",inline"`
	TaskConfig       `yaml:",inline"`
	Logging          Logging                   `yaml:"logging,flow"`
	Sidecars         map[string]*SidecarConfig `yaml:"sidecars"` // NOTE: keep the pointers because `mergo` doesn't automatically deep merge map's value unless it's a pointer type.
	Network          NetworkConfig             `yaml:"network"`
	PublishConfig    PublishConfig             `yaml:"publish"`
	TaskDefOverrides []OverrideRule            `yaml:"taskdef_overrides"`
}

BackendServiceConfig holds the configuration that can be overridden per environments.

func (BackendServiceConfig) Validate added in v1.12.0

func (b BackendServiceConfig) Validate() error

Validate returns nil if BackendServiceConfig is configured correctly.

type BackendServiceProps

type BackendServiceProps struct {
	WorkloadProps
	Port        uint16
	HealthCheck ContainerHealthCheck // Optional healthcheck configuration.
	Platform    PlatformArgsOrString // Optional platform configuration.
}

BackendServiceProps represents the configuration needed to create a backend service.

type BitbucketProperties added in v1.3.0

type BitbucketProperties struct {
	RepositoryURL string `structs:"repository" yaml:"repository"`
	Branch        string `structs:"branch" yaml:"branch"`
}

BitbucketProperties contains information for configuring a Bitbucket source provider.

type Build added in v1.6.0

type Build struct {
	Image string `yaml:"image"`
}

Build defines the build project to build and test image.

type BuildArgsOrString added in v0.3.0

type BuildArgsOrString struct {
	BuildString *string
	BuildArgs   DockerBuildArgs
}

BuildArgsOrString is a custom type which supports unmarshaling yaml which can either be of type string or type DockerBuildArgs.

func (*BuildArgsOrString) UnmarshalYAML added in v0.3.0

func (b *BuildArgsOrString) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the BuildArgsOrString struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (BuildArgsOrString) Validate added in v1.11.0

func (b BuildArgsOrString) Validate() error

Validate returns nil if BuildArgsOrString is configured correctly.

type CodeCommitProperties added in v1.1.0

type CodeCommitProperties struct {
	RepositoryURL string `structs:"repository" yaml:"repository"`
	Branch        string `structs:"branch" yaml:"branch"`
}

CodeCommitProperties contains information for configuring a CodeCommit source provider.

type CommandOverride added in v1.3.0

type CommandOverride stringSliceOrString

CommandOverride is a custom type which supports unmarshalling "command" yaml which can either be of type string or type slice of string.

func (*CommandOverride) ToStringSlice added in v1.4.0

func (c *CommandOverride) ToStringSlice() ([]string, error)

ToStringSlice converts an CommandOverride to a slice of string using shell-style rules.

func (*CommandOverride) UnmarshalYAML added in v1.3.0

func (c *CommandOverride) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the CommandOverride struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (CommandOverride) Validate added in v1.11.0

func (CommandOverride) Validate() error

Validate returns nil if CommandOverride is configured correctly.

type ContainerHealthCheck

type ContainerHealthCheck struct {
	Command     []string       `yaml:"command"`
	Interval    *time.Duration `yaml:"interval"`
	Retries     *int           `yaml:"retries"`
	Timeout     *time.Duration `yaml:"timeout"`
	StartPeriod *time.Duration `yaml:"start_period"`
}

ContainerHealthCheck holds the configuration to determine if the service container is healthy. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html

func NewDefaultContainerHealthCheck added in v1.11.0

func NewDefaultContainerHealthCheck() *ContainerHealthCheck

NewDefaultContainerHealthCheck returns container health check configuration that's identical to a load balanced web service's defaults.

func (*ContainerHealthCheck) ApplyIfNotSet added in v1.11.0

func (hc *ContainerHealthCheck) ApplyIfNotSet(other *ContainerHealthCheck)

ApplyIfNotSet changes the healthcheck's fields only if they were not set and the other healthcheck has them set.

func (ContainerHealthCheck) IsEmpty added in v1.11.0

func (hc ContainerHealthCheck) IsEmpty() bool

IsEmpty checks if the health check is empty.

func (ContainerHealthCheck) Validate added in v1.11.0

func (ContainerHealthCheck) Validate() error

Validate returns nil if ContainerHealthCheck is configured correctly.

type Count added in v0.4.0

type Count struct {
	Value         *int          // 0 is a valid value, so we want the default value to be nil.
	AdvancedCount AdvancedCount // Mutually exclusive with Value.
}

Count is a custom type which supports unmarshaling yaml which can either be of type int or type AdvantedCount.

func (*Count) Desired added in v1.6.0

func (c *Count) Desired() (*int, error)

Desired returns the desiredCount to be set on the CFN template

func (*Count) IsEmpty added in v1.6.0

func (c *Count) IsEmpty() bool

IsEmpty returns whether Count is empty.

func (*Count) UnmarshalYAML added in v0.4.0

func (c *Count) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the Count struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (Count) Validate added in v1.11.0

func (c Count) Validate() error

Validate returns nil if Count is configured correctly.

type DeadLetterQueue added in v1.9.0

type DeadLetterQueue struct {
	Tries *uint16 `yaml:"tries"`
}

DeadLetterQueue represents the configurable options for setting up a Dead-Letter Queue.

func (*DeadLetterQueue) IsEmpty added in v1.11.0

func (q *DeadLetterQueue) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (DeadLetterQueue) Validate added in v1.11.0

func (d DeadLetterQueue) Validate() error

Validate returns nil if DeadLetterQueue is configured correctly.

type DependsOn added in v1.11.0

type DependsOn map[string]string

DependsOn represents container dependency for a container.

func (DependsOn) Validate added in v1.11.0

func (d DependsOn) Validate() error

Validate returns nil if DependsOn is configured correctly.

type DockerBuildArgs added in v0.3.0

type DockerBuildArgs struct {
	Context    *string           `yaml:"context,omitempty"`
	Dockerfile *string           `yaml:"dockerfile,omitempty"`
	Args       map[string]string `yaml:"args,omitempty"`
	Target     *string           `yaml:"target,omitempty"`
	CacheFrom  []string          `yaml:"cache_from,omitempty"`
}

DockerBuildArgs represents the options specifiable under the "build" field of Docker Compose services. For more information, see: https://docs.docker.com/compose/compose-file/#build

func (DockerBuildArgs) Validate added in v1.11.0

func (DockerBuildArgs) Validate() error

Validate returns nil if DockerBuildArgs is configured correctly.

type EFSConfigOrBool added in v1.6.0

type EFSConfigOrBool struct {
	Advanced EFSVolumeConfiguration
	Enabled  *bool
}

EFSConfigOrBool contains custom unmarshaling logic for the `efs` field in the manifest.

func (*EFSConfigOrBool) Disabled added in v1.6.0

func (e *EFSConfigOrBool) Disabled() bool

Disabled returns true if Enabled is explicitly set to false. This function is useful for checking that the EFS config has been intentionally turned off and whether we should ignore any values of the struct which have been populated erroneously.

func (*EFSConfigOrBool) IsEmpty added in v1.11.0

func (e *EFSConfigOrBool) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (*EFSConfigOrBool) UnmarshalYAML added in v1.6.0

func (e *EFSConfigOrBool) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implements the yaml(v3) interface. It allows EFS to be specified as a string or a struct alternately.

func (*EFSConfigOrBool) UseManagedFS added in v1.6.0

func (e *EFSConfigOrBool) UseManagedFS() bool

UseManagedFS returns true if the user has specified EFS as a bool, or has only specified UID and GID.

func (EFSConfigOrBool) Validate added in v1.11.0

func (e EFSConfigOrBool) Validate() error

Validate returns nil if EFSConfigOrBool is configured correctly.

type EFSVolumeConfiguration added in v1.2.0

type EFSVolumeConfiguration struct {
	FileSystemID  *string             `yaml:"id"`       // Required. Can be specified as "copilot" or "managed" magic keys.
	RootDirectory *string             `yaml:"root_dir"` // Default "/". For BYO EFS.
	AuthConfig    AuthorizationConfig `yaml:"auth"`     // Auth config for BYO EFS.
	UID           *uint32             `yaml:"uid"`      // UID for managed EFS.
	GID           *uint32             `yaml:"gid"`      // GID for managed EFS.
}

EFSVolumeConfiguration holds options which tell ECS how to reach out to the EFS filesystem.

func (*EFSVolumeConfiguration) EmptyBYOConfig added in v1.6.0

func (e *EFSVolumeConfiguration) EmptyBYOConfig() bool

EmptyBYOConfig returns true if the `id`, `root_directory`, and `auth` fields are all empty. This would mean that no custom EFS information has been specified.

func (*EFSVolumeConfiguration) EmptyUIDConfig added in v1.6.0

func (e *EFSVolumeConfiguration) EmptyUIDConfig() bool

EmptyUIDConfig returns true if the `uid` and `gid` fields are empty. These fields are mutually exclusive with BYO EFS. If they are nonempty, then we should use managed EFS instead.

func (*EFSVolumeConfiguration) IsEmpty added in v1.6.0

func (e *EFSVolumeConfiguration) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (EFSVolumeConfiguration) Validate added in v1.11.0

func (e EFSVolumeConfiguration) Validate() error

Validate returns nil if EFSVolumeConfiguration is configured correctly.

type EntryPointOverride added in v1.3.0

type EntryPointOverride stringSliceOrString

EntryPointOverride is a custom type which supports unmarshalling "entrypoint" yaml which can either be of type string or type slice of string.

func (*EntryPointOverride) ToStringSlice added in v1.4.0

func (e *EntryPointOverride) ToStringSlice() ([]string, error)

ToStringSlice converts an EntryPointOverride to a slice of string using shell-style rules.

func (*EntryPointOverride) UnmarshalYAML added in v1.3.0

func (e *EntryPointOverride) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshalling logic for the EntryPointOverride struct, allowing it to perform more complex unmarshalling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (EntryPointOverride) Validate added in v1.11.0

func (EntryPointOverride) Validate() error

Validate returns nil if EntryPointOverride is configured correctly.

type ErrInvalidPipelineManifestVersion

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

ErrInvalidPipelineManifestVersion occurs when the pipeline.yml file contains invalid schema version during unmarshalling.

func (*ErrInvalidPipelineManifestVersion) Error

func (*ErrInvalidPipelineManifestVersion) Is

Is compares the 2 errors. Only returns true if the errors are of the same type and contain the same information.

type ErrInvalidWorkloadType added in v0.4.0

type ErrInvalidWorkloadType struct {
	Type string
}

ErrInvalidWorkloadType occurs when a user requested a manifest template type that doesn't exist.

func (*ErrInvalidWorkloadType) Error added in v0.4.0

func (e *ErrInvalidWorkloadType) Error() string

type ErrUnknownProvider

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

ErrUnknownProvider occurs CreateProvider() is called with configurations that do not map to any supported provider.

func (*ErrUnknownProvider) Error

func (e *ErrUnknownProvider) Error() string

func (*ErrUnknownProvider) Is

func (e *ErrUnknownProvider) Is(target error) bool

Is compares the 2 errors. Returns true if the errors are of the same type

type ExecuteCommand added in v1.4.0

type ExecuteCommand struct {
	Enable *bool
	Config ExecuteCommandConfig
}

ExecuteCommand is a custom type which supports unmarshaling yaml which can either be of type bool or type ExecuteCommandConfig.

func (*ExecuteCommand) UnmarshalYAML added in v1.4.0

func (e *ExecuteCommand) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the ExecuteCommand struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (ExecuteCommand) Validate added in v1.11.0

func (e ExecuteCommand) Validate() error

Validate returns nil if ExecuteCommand is configured correctly.

type ExecuteCommandConfig added in v1.4.0

type ExecuteCommandConfig struct {
	Enable *bool `yaml:"enable"`
}

ExecuteCommandConfig represents the configuration for ECS Execute Command.

func (ExecuteCommandConfig) IsEmpty added in v1.4.0

func (e ExecuteCommandConfig) IsEmpty() bool

IsEmpty returns whether ExecuteCommandConfig is empty.

func (ExecuteCommandConfig) Validate added in v1.11.0

func (ExecuteCommandConfig) Validate() error

Validate returns nil if ExecuteCommandConfig is configured correctly.

type GitHubProperties

type GitHubProperties struct {
	RepositoryURL string `structs:"repository" yaml:"repository"`
	Branch        string `structs:"branch" yaml:"branch"`
}

GitHubProperties contains information for configuring a GitHubv2 source provider.

type GitHubV1Properties added in v1.4.0

type GitHubV1Properties struct {
	// use tag from https://godoc.org/github.com/fatih/structs#example-Map--Tags
	// to specify the name of the field in the output properties
	RepositoryURL         string `structs:"repository" yaml:"repository"`
	Branch                string `structs:"branch" yaml:"branch"`
	GithubSecretIdKeyName string `structs:"access_token_secret" yaml:"access_token_secret"`
}

GitHubV1Properties contain information for configuring a Githubv1 source provider.

type HTTPHealthCheckArgs added in v0.6.0

type HTTPHealthCheckArgs struct {
	Path               *string        `yaml:"path"`
	SuccessCodes       *string        `yaml:"success_codes"`
	HealthyThreshold   *int64         `yaml:"healthy_threshold"`
	UnhealthyThreshold *int64         `yaml:"unhealthy_threshold"`
	Timeout            *time.Duration `yaml:"timeout"`
	Interval           *time.Duration `yaml:"interval"`
	GracePeriod        *time.Duration `yaml:"grace_period"`
}

HTTPHealthCheckArgs holds the configuration to determine if the load balanced web service is healthy. These options are specifiable under the "healthcheck" field. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html.

func (HTTPHealthCheckArgs) Validate added in v1.11.0

func (h HTTPHealthCheckArgs) Validate() error

Validate returns nil if HTTPHealthCheckArgs is configured correctly.

type HealthCheckArgsOrString added in v0.6.0

type HealthCheckArgsOrString struct {
	HealthCheckPath *string
	HealthCheckArgs HTTPHealthCheckArgs
}

HealthCheckArgsOrString is a custom type which supports unmarshaling yaml which can either be of type string or type HealthCheckArgs.

func (*HealthCheckArgsOrString) IsEmpty added in v1.7.0

func (hc *HealthCheckArgsOrString) IsEmpty() bool

IsEmpty returns true if there are no health check configuration set.

func (*HealthCheckArgsOrString) Path added in v1.7.0

func (hc *HealthCheckArgsOrString) Path() *string

Path returns the default health check path if provided otherwise, returns the path from the advanced configuration.

func (*HealthCheckArgsOrString) UnmarshalYAML added in v0.6.0

func (hc *HealthCheckArgsOrString) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the HealthCheckArgsOrString struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (HealthCheckArgsOrString) Validate added in v1.11.0

func (h HealthCheckArgsOrString) Validate() error

Validate returns nil if HealthCheckArgsOrString is configured correctly.

type IPNet added in v1.11.0

type IPNet string

IPNet represents an IP network string. For example: 10.1.0.0/16

func (IPNet) Validate added in v1.11.0

func (ip IPNet) Validate() error

Validate returns nil if IPNet is configured correctly.

type Image added in v0.4.0

type Image struct {
	Build        BuildArgsOrString `yaml:"build"`           // Build an image from a Dockerfile.
	Location     *string           `yaml:"location"`        // Use an existing image instead.
	Credentials  *string           `yaml:"credentials"`     // ARN of the secret containing the private repository credentials.
	DockerLabels map[string]string `yaml:"labels,flow"`     // Apply Docker labels to the container at runtime.
	DependsOn    DependsOn         `yaml:"depends_on,flow"` // Add any sidecar dependencies.
}

Image represents the workload's container image.

func (*Image) BuildConfig added in v0.4.0

func (i *Image) BuildConfig(rootDirectory string) *DockerBuildArgs

BuildConfig populates a docker.BuildArguments struct from the fields available in the manifest. Prefer the following hierarchy: 1. Specific dockerfile, specific context 2. Specific dockerfile, context = dockerfile dir 3. "Dockerfile" located in context dir 4. "Dockerfile" located in ws root.

func (Image) GetLocation added in v0.5.0

func (i Image) GetLocation() string

GetLocation returns the location of the image.

func (*Image) UnmarshalYAML added in v1.11.0

func (i *Image) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the Image struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (Image) Validate added in v1.11.0

func (i Image) Validate() error

Validate returns nil if Image is configured correctly.

type ImageOverride added in v1.3.0

type ImageOverride struct {
	EntryPoint EntryPointOverride `yaml:"entrypoint"`
	Command    CommandOverride    `yaml:"command"`
}

ImageOverride holds fields that override Dockerfile image defaults.

func (ImageOverride) Validate added in v1.11.0

func (i ImageOverride) Validate() error

Validate returns nil if ImageOverride is configured correctly.

type ImageWithHealthcheck added in v1.8.0

type ImageWithHealthcheck struct {
	Image       Image                `yaml:",inline"`
	HealthCheck ContainerHealthCheck `yaml:"healthcheck"`
}

ImageWithHealthcheck represents a container image with health check.

func (ImageWithHealthcheck) Validate added in v1.11.0

func (i ImageWithHealthcheck) Validate() error

Validate returns nil if ImageWithHealthcheck is configured correctly.

type ImageWithHealthcheckAndOptionalPort added in v1.11.0

type ImageWithHealthcheckAndOptionalPort struct {
	ImageWithOptionalPort `yaml:",inline"`
	HealthCheck           ContainerHealthCheck `yaml:"healthcheck"`
}

ImageWithHealthcheckAndOptionalPort represents a container image with an optional exposed port and health check.

func (ImageWithHealthcheckAndOptionalPort) Validate added in v1.11.0

Validate returns nil if ImageWithHealthcheckAndOptionalPort is configured correctly.

type ImageWithOptionalPort added in v1.11.0

type ImageWithOptionalPort struct {
	Image Image   `yaml:",inline"`
	Port  *uint16 `yaml:"port"`
}

ImageWithOptionalPort represents a container image with an optional exposed port.

func (ImageWithOptionalPort) Validate added in v1.11.0

func (i ImageWithOptionalPort) Validate() error

Validate returns nil if ImageWithOptionalPort is configured correctly.

type ImageWithPort added in v1.7.0

type ImageWithPort struct {
	Image Image   `yaml:",inline"`
	Port  *uint16 `yaml:"port"`
}

ImageWithPort represents a container image with an exposed port.

func (ImageWithPort) Validate added in v1.11.0

func (i ImageWithPort) Validate() error

Validate returns nil if ImageWithPort is configured correctly.

type ImageWithPortAndHealthcheck added in v1.8.0

type ImageWithPortAndHealthcheck struct {
	ImageWithPort `yaml:",inline"`
	HealthCheck   ContainerHealthCheck `yaml:"healthcheck"`
}

ImageWithPortAndHealthcheck represents a container image with an exposed port and health check.

func (ImageWithPortAndHealthcheck) Validate added in v1.11.0

func (i ImageWithPortAndHealthcheck) Validate() error

Validate returns nil if ImageWithPortAndHealthcheck is configured correctly.

type IntRangeBand added in v1.6.0

type IntRangeBand string

IntRangeBand is a number range with maximum and minimum values.

func (IntRangeBand) Parse added in v1.6.0

func (r IntRangeBand) Parse() (min int, max int, err error)

Parse parses Range string and returns the min and max values. For example: 1-100 returns 1 and 100.

func (IntRangeBand) Validate added in v1.11.0

func (r IntRangeBand) Validate() error

Validate returns nil if IntRangeBand is configured correctly.

type Interpolator added in v1.12.0

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

Interpolator substitutes variables in a manifest.

func NewInterpolator added in v1.12.0

func NewInterpolator(appName, envName string) *Interpolator

NewInterpolator initiates a new Interpolator.

func (*Interpolator) Interpolate added in v1.12.0

func (i *Interpolator) Interpolate(s string) (string, error)

Interpolate substitutes environment variables in a string.

type JobFailureHandlerConfig added in v0.5.0

type JobFailureHandlerConfig struct {
	Timeout *string `yaml:"timeout"`
	Retries *int    `yaml:"retries"`
}

JobFailureHandlerConfig represents the error handling configuration for the job.

func (JobFailureHandlerConfig) Validate added in v1.11.0

func (JobFailureHandlerConfig) Validate() error

Validate returns nil if JobFailureHandlerConfig is configured correctly.

type JobTriggerConfig added in v0.5.0

type JobTriggerConfig struct {
	Schedule *string `yaml:"schedule"`
}

JobTriggerConfig represents the configuration for the event that triggers the job.

func (JobTriggerConfig) Validate added in v1.11.0

func (c JobTriggerConfig) Validate() error

Validate returns nil if JobTriggerConfig is configured correctly.

type LoadBalancedWebService

type LoadBalancedWebService struct {
	Workload                     `yaml:",inline"`
	LoadBalancedWebServiceConfig `yaml:",inline"`
	// Use *LoadBalancedWebServiceConfig because of https://github.com/imdario/mergo/issues/146
	Environments map[string]*LoadBalancedWebServiceConfig `yaml:",flow"` // Fields to override per environment.
	// contains filtered or unexported fields
}

LoadBalancedWebService holds the configuration to build a container image with an exposed port that receives requests through a load balancer with AWS Fargate as the compute engine.

func NewLoadBalancedWebService

func NewLoadBalancedWebService(props *LoadBalancedWebServiceProps) *LoadBalancedWebService

NewLoadBalancedWebService creates a new public load balanced web service, receives all the requests from the load balancer, has a single task with minimal CPU and memory thresholds, and sets the default health check path to "/".

func (LoadBalancedWebService) ApplyEnv

func (s LoadBalancedWebService) ApplyEnv(envName string) (WorkloadManifest, error)

ApplyEnv returns the service manifest with environment overrides. If the environment passed in does not have any overrides then it returns itself.

func (*LoadBalancedWebService) BuildArgs added in v0.3.0

func (s *LoadBalancedWebService) BuildArgs(wsRoot string) *DockerBuildArgs

BuildArgs returns a docker.BuildArguments object given a ws root directory.

func (*LoadBalancedWebService) BuildRequired added in v0.5.0

func (s *LoadBalancedWebService) BuildRequired() (bool, error)

BuildRequired returns if the service requires building from the local Dockerfile.

func (*LoadBalancedWebService) EnvFile added in v1.14.0

func (s *LoadBalancedWebService) EnvFile() string

EnvFile returns the location of the env file against the ws root directory.

func (*LoadBalancedWebService) HasAliases added in v1.14.0

func (s *LoadBalancedWebService) HasAliases() bool

HasAliases returns true if the Load-Balanced Web Service uses aliases, either for ALB or NLB.

func (*LoadBalancedWebService) MarshalBinary

func (s *LoadBalancedWebService) MarshalBinary() ([]byte, error)

MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.

func (*LoadBalancedWebService) Port added in v1.10.0

func (s *LoadBalancedWebService) Port() (port uint16, ok bool)

Port returns the exposed port in the manifest. A LoadBalancedWebService always has a port exposed therefore the boolean is always true.

func (*LoadBalancedWebService) Publish added in v1.10.0

func (s *LoadBalancedWebService) Publish() []Topic

Publish returns the list of topics where notifications can be published.

func (LoadBalancedWebService) Validate added in v1.11.0

func (l LoadBalancedWebService) Validate() error

Validate returns nil if LoadBalancedWebService is configured correctly.

type LoadBalancedWebServiceConfig

type LoadBalancedWebServiceConfig struct {
	ImageConfig      ImageWithPortAndHealthcheck `yaml:"image,flow"`
	ImageOverride    `yaml:",inline"`
	RoutingRule      RoutingRuleConfigOrBool `yaml:"http,flow"`
	TaskConfig       `yaml:",inline"`
	Logging          `yaml:"logging,flow"`
	Sidecars         map[string]*SidecarConfig        `yaml:"sidecars"` // NOTE: keep the pointers because `mergo` doesn't automatically deep merge map's value unless it's a pointer type.
	Network          NetworkConfig                    `yaml:"network"`
	PublishConfig    PublishConfig                    `yaml:"publish"`
	TaskDefOverrides []OverrideRule                   `yaml:"taskdef_overrides"`
	NLBConfig        NetworkLoadBalancerConfiguration `yaml:"nlb"`
}

LoadBalancedWebServiceConfig holds the configuration for a load balanced web service.

func (LoadBalancedWebServiceConfig) Validate added in v1.12.0

func (l LoadBalancedWebServiceConfig) Validate() error

Validate returns nil if LoadBalancedWebServiceConfig is configured correctly.

type LoadBalancedWebServiceProps

type LoadBalancedWebServiceProps struct {
	*WorkloadProps
	Path string
	Port uint16

	HTTPVersion string               // Optional http protocol version such as gRPC, HTTP2.
	HealthCheck ContainerHealthCheck // Optional healthcheck configuration.
	Platform    PlatformArgsOrString // Optional platform configuration.
}

LoadBalancedWebServiceProps contains properties for creating a new load balanced fargate service manifest.

type Logging added in v0.4.0

type Logging struct {
	Retention      *int              `yaml:"retention"`
	Image          *string           `yaml:"image"`
	Destination    map[string]string `yaml:"destination,flow"`
	EnableMetadata *bool             `yaml:"enableMetadata"`
	SecretOptions  map[string]Secret `yaml:"secretOptions"`
	ConfigFile     *string           `yaml:"configFilePath"`
	Variables      map[string]string `yaml:"variables"`
	Secrets        map[string]Secret `yaml:"secrets"`
}

Logging holds configuration for Firelens to route your logs.

func (*Logging) GetEnableMetadata added in v1.2.0

func (lc *Logging) GetEnableMetadata() *string

GetEnableMetadata returns the configuration values and sane default for the EnableMEtadata field

func (*Logging) IsEmpty added in v1.11.0

func (lc *Logging) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (*Logging) LogImage added in v1.2.0

func (lc *Logging) LogImage() *string

LogImage returns the default Fluent Bit image if not otherwise configured.

func (Logging) Validate added in v1.11.0

func (l Logging) Validate() error

Validate returns nil if Logging is configured correctly.

type MountPointOpts added in v1.2.0

type MountPointOpts struct {
	ContainerPath *string `yaml:"path"`
	ReadOnly      *bool   `yaml:"read_only"`
}

MountPointOpts is shared between Volumes for the main container and MountPoints for sidecars.

func (MountPointOpts) Validate added in v1.11.0

func (m MountPointOpts) Validate() error

Validate returns nil if MountPointOpts is configured correctly.

type NLBHealthCheckArgs added in v1.14.0

type NLBHealthCheckArgs struct {
	Port               *int           `yaml:"port"`
	HealthyThreshold   *int64         `yaml:"healthy_threshold"`
	UnhealthyThreshold *int64         `yaml:"unhealthy_threshold"`
	Timeout            *time.Duration `yaml:"timeout"`
	Interval           *time.Duration `yaml:"interval"`
}

NLBHealthCheckArgs holds the configuration to determine if the network load balanced web service is healthy. These options are specifiable under the "healthcheck" field. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html.

func (NLBHealthCheckArgs) Validate added in v1.14.0

func (h NLBHealthCheckArgs) Validate() error

Validate returns nil if NLBHealthCheckArgs is configured correctly.

type NetworkConfig added in v1.3.0

type NetworkConfig struct {
	VPC vpcConfig `yaml:"vpc"`
}

NetworkConfig represents options for network connection to AWS resources within a VPC.

func (*NetworkConfig) IsEmpty added in v1.11.0

func (c *NetworkConfig) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (*NetworkConfig) UnmarshalYAML added in v1.3.0

func (c *NetworkConfig) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML ensures that a NetworkConfig always defaults to public subnets. If the user specified a placement that's not valid then throw an error.

func (NetworkConfig) Validate added in v1.11.0

func (n NetworkConfig) Validate() error

Validate returns nil if NetworkConfig is configured correctly.

type NetworkLoadBalancerConfiguration added in v1.13.0

type NetworkLoadBalancerConfiguration struct {
	Port            *string            `yaml:"port"`
	HealthCheck     NLBHealthCheckArgs `yaml:"healthcheck"`
	TargetContainer *string            `yaml:"target_container"`
	TargetPort      *int               `yaml:"target_port"`
	SSLPolicy       *string            `yaml:"ssl_policy"`
	Stickiness      *bool              `yaml:"stickiness"`
	Aliases         Alias              `yaml:"alias"`
}

NetworkLoadBalancerConfiguration holds options for a network load balancer

func (*NetworkLoadBalancerConfiguration) IsEmpty added in v1.13.0

func (NetworkLoadBalancerConfiguration) Validate added in v1.13.0

Validate returns nil if NetworkLoadBalancerConfiguration is configured correctly.

type OverrideRule added in v1.10.0

type OverrideRule struct {
	Path  string    `yaml:"path"`
	Value yaml.Node `yaml:"value"`
}

OverrideRule holds the manifest overriding rule for CloudFormation template.

func (OverrideRule) Validate added in v1.11.0

func (r OverrideRule) Validate() error

Validate returns nil if OverrideRule is configured correctly.

type Percentage added in v1.11.0

type Percentage int

Percentage represents a valid percentage integer ranging from 0 to 100.

func (Percentage) Validate added in v1.11.0

func (p Percentage) Validate() error

Validate returns nil if Percentage is configured correctly.

type PipelineManifest

type PipelineManifest struct {
	// Name of the pipeline
	Name    string                     `yaml:"name"`
	Version PipelineSchemaMajorVersion `yaml:"version"`
	Source  *Source                    `yaml:"source"`
	Build   *Build                     `yaml:"build"`
	Stages  []PipelineStage            `yaml:"stages"`
	// contains filtered or unexported fields
}

PipelineManifest contains information that defines the relationship and deployment ordering of your environments.

func NewPipelineManifest added in v0.4.0

func NewPipelineManifest(pipelineName string, provider Provider, stages []PipelineStage) (*PipelineManifest, error)

NewPipelineManifest returns a pipeline manifest object.

func UnmarshalPipeline

func UnmarshalPipeline(in []byte) (*PipelineManifest, error)

UnmarshalPipeline deserializes the YAML input stream into a pipeline manifest object. It returns an error if any issue occurs during deserialization or the YAML input contains invalid fields.

func (*PipelineManifest) MarshalBinary

func (m *PipelineManifest) MarshalBinary() ([]byte, error)

MarshalBinary serializes the pipeline manifest object into byte array that represents the pipeline.yml document.

func (PipelineManifest) Validate added in v1.15.0

func (p PipelineManifest) Validate() error

Validate returns nil if the pipeline manifest is configured correctly.

type PipelineSchemaMajorVersion

type PipelineSchemaMajorVersion int

PipelineSchemaMajorVersion is the major version number of the pipeline manifest schema

const (
	// Ver1 is the current schema major version of the pipeline.yml file.
	Ver1 PipelineSchemaMajorVersion = iota + 1
)

type PipelineStage

type PipelineStage struct {
	Name             string   `yaml:"name"`
	RequiresApproval bool     `yaml:"requires_approval,omitempty"`
	TestCommands     []string `yaml:"test_commands,omitempty"`
}

PipelineStage represents a stage in the pipeline manifest

type Placement added in v1.11.0

type Placement string

Placement represents where to place tasks (public or private subnets).

func (Placement) Validate added in v1.11.0

func (p Placement) Validate() error

Validate returns nil if Placement is configured correctly.

type PlatformArgs added in v1.10.0

type PlatformArgs struct {
	OSFamily *string `yaml:"osfamily,omitempty"`
	Arch     *string `yaml:"architecture,omitempty"`
}

PlatformArgs represents the specifics of a target OS.

func (*PlatformArgs) String added in v1.12.0

func (p *PlatformArgs) String() string

String implements the fmt.Stringer interface.

func (PlatformArgs) Validate added in v1.11.0

func (p PlatformArgs) Validate() error

Validate returns nil if PlatformArgs is configured correctly.

type PlatformArgsOrString added in v1.10.0

type PlatformArgsOrString struct {
	*PlatformString
	PlatformArgs PlatformArgs
}

PlatformArgsOrString is a custom type which supports unmarshaling yaml which can either be of type string or type PlatformArgs.

func (*PlatformArgsOrString) Arch added in v1.12.0

func (p *PlatformArgsOrString) Arch() string

Arch returns the architecture of PlatformArgsOrString.

func (*PlatformArgsOrString) IsEmpty added in v1.12.0

func (p *PlatformArgsOrString) IsEmpty() bool

IsEmpty returns if the platform field is empty.

func (*PlatformArgsOrString) OS added in v1.12.0

func (p *PlatformArgsOrString) OS() string

OS returns the operating system family.

func (*PlatformArgsOrString) UnmarshalYAML added in v1.10.0

func (p *PlatformArgsOrString) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the PlatformArgsOrString struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (PlatformArgsOrString) Validate added in v1.11.0

func (p PlatformArgsOrString) Validate() error

Validate returns nil if PlatformArgsOrString is configured correctly.

type PlatformString added in v1.11.0

type PlatformString string

PlatformString represents the string format of Platform.

func (PlatformString) Validate added in v1.11.0

func (p PlatformString) Validate() error

Validate returns nil if PlatformString is configured correctly.

type Provider

type Provider interface {
	fmt.Stringer
	Name() string
	Properties() map[string]interface{}
}

Provider defines a source of the artifacts that will be built and deployed via a pipeline

func NewProvider

func NewProvider(configs interface{}) (Provider, error)

NewProvider creates a source provider based on the type of the provided provider-specific configurations

type PublishConfig added in v1.8.3

type PublishConfig struct {
	Topics []Topic `yaml:"topics"`
}

PublishConfig represents the configurable options for setting up publishers.

func (PublishConfig) Validate added in v1.11.0

func (p PublishConfig) Validate() error

Validate returns nil if PublishConfig is configured correctly.

type QueueScaling added in v1.11.0

type QueueScaling struct {
	AcceptableLatency *time.Duration `yaml:"acceptable_latency"`
	AvgProcessingTime *time.Duration `yaml:"msg_processing_time"`
}

QueueScaling represents the configuration to scale a service based on a SQS queue.

func (*QueueScaling) AcceptableBacklogPerTask added in v1.11.0

func (qs *QueueScaling) AcceptableBacklogPerTask() (int, error)

AcceptableBacklogPerTask returns the total number of messages that each task can accumulate in the queue while maintaining the AcceptableLatency given the AvgProcessingTime.

func (*QueueScaling) IsEmpty added in v1.11.0

func (qs *QueueScaling) IsEmpty() bool

IsEmpty returns true if the QueueScaling is set.

func (QueueScaling) Validate added in v1.11.0

func (qs QueueScaling) Validate() error

Validate returns nil if QueueScaling is configured correctly.

type Range added in v0.4.0

type Range struct {
	Value       *IntRangeBand // Mutually exclusive with RangeConfig
	RangeConfig RangeConfig
}

Range contains either a Range or a range configuration for Autoscaling ranges.

func (*Range) IsEmpty added in v1.11.0

func (r *Range) IsEmpty() bool

IsEmpty returns whether Range is empty.

func (*Range) Parse added in v0.4.0

func (r *Range) Parse() (min int, max int, err error)

Parse extracts the min and max from RangeOpts.

func (*Range) UnmarshalYAML added in v1.6.0

func (r *Range) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML overrides the default YAML unmarshaling logic for the RangeOpts struct, allowing it to perform more complex unmarshaling behavior. This method implements the yaml.Unmarshaler (v3) interface.

func (Range) Validate added in v1.11.0

func (r Range) Validate() error

Validate returns nil if Range is configured correctly.

type RangeConfig added in v1.6.0

type RangeConfig struct {
	Min      *int `yaml:"min"`
	Max      *int `yaml:"max"`
	SpotFrom *int `yaml:"spot_from"`
}

RangeConfig containers a Min/Max and an optional SpotFrom field which specifies the number of services you want to start placing on spot. For example, if your range is 1-10 and `spot_from` is 5, up to 4 services will be placed on dedicated Fargate capacity, and then after that, any scaling event will place additioanl services on spot capacity.

func (*RangeConfig) IsEmpty added in v1.6.0

func (r *RangeConfig) IsEmpty() bool

IsEmpty returns whether RangeConfig is empty.

func (RangeConfig) Validate added in v1.11.0

func (r RangeConfig) Validate() error

Validate returns nil if RangeConfig is configured correctly.

type RequestDrivenWebService added in v1.7.0

type RequestDrivenWebService struct {
	Workload                      `yaml:",inline"`
	RequestDrivenWebServiceConfig `yaml:",inline"`
	Environments                  map[string]*RequestDrivenWebServiceConfig `yaml:",flow"` // Fields to override per environment.
	// contains filtered or unexported fields
}

RequestDrivenWebService holds the configuration to create a Request-Driven Web Service.

func NewRequestDrivenWebService added in v1.7.0

func NewRequestDrivenWebService(props *RequestDrivenWebServiceProps) *RequestDrivenWebService

NewRequestDrivenWebService creates a new Request-Driven Web Service manifest with default values.

func (RequestDrivenWebService) ApplyEnv added in v1.7.0

func (s RequestDrivenWebService) ApplyEnv(envName string) (WorkloadManifest, error)

ApplyEnv returns the service manifest with environment overrides. If the environment passed in does not have any overrides then it returns itself.

func (*RequestDrivenWebService) BuildArgs added in v1.7.0

func (s *RequestDrivenWebService) BuildArgs(wsRoot string) *DockerBuildArgs

BuildArgs returns a docker.BuildArguments object given a ws root directory.

func (*RequestDrivenWebService) BuildRequired added in v1.7.0

func (s *RequestDrivenWebService) BuildRequired() (bool, error)

BuildRequired returns if the service requires building from the local Dockerfile.

func (*RequestDrivenWebService) ContainerPlatform added in v1.12.0

func (s *RequestDrivenWebService) ContainerPlatform() string

ContainerPlatform returns the platform for the service.

func (*RequestDrivenWebService) MarshalBinary added in v1.7.0

func (s *RequestDrivenWebService) MarshalBinary() ([]byte, error)

MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.

func (*RequestDrivenWebService) Port added in v1.10.0

func (s *RequestDrivenWebService) Port() (port uint16, ok bool)

Port returns the exposed the exposed port in the manifest. A RequestDrivenWebService always has a port exposed therefore the boolean is always true.

func (*RequestDrivenWebService) Publish added in v1.10.0

func (s *RequestDrivenWebService) Publish() []Topic

Publish returns the list of topics where notifications can be published.

func (RequestDrivenWebService) Validate added in v1.11.0

func (r RequestDrivenWebService) Validate() error

Validate returns nil if RequestDrivenWebService is configured correctly.

type RequestDrivenWebServiceConfig added in v1.7.0

type RequestDrivenWebServiceConfig struct {
	RequestDrivenWebServiceHttpConfig `yaml:"http,flow"`
	InstanceConfig                    AppRunnerInstanceConfig              `yaml:",inline"`
	ImageConfig                       ImageWithPort                        `yaml:"image"`
	Variables                         map[string]string                    `yaml:"variables"`
	StartCommand                      *string                              `yaml:"command"`
	Tags                              map[string]string                    `yaml:"tags"`
	PublishConfig                     PublishConfig                        `yaml:"publish"`
	Network                           RequestDrivenWebServiceNetworkConfig `yaml:"network"`
}

RequestDrivenWebServiceConfig holds the configuration that can be overridden per environments.

func (RequestDrivenWebServiceConfig) Validate added in v1.12.0

func (r RequestDrivenWebServiceConfig) Validate() error

Validate returns nil if RequestDrivenWebServiceConfig is configured correctly.

type RequestDrivenWebServiceHttpConfig added in v1.7.0

type RequestDrivenWebServiceHttpConfig struct {
	HealthCheckConfiguration HealthCheckArgsOrString `yaml:"healthcheck"`
	Alias                    *string                 `yaml:"alias"`
}

RequestDrivenWebServiceHttpConfig represents options for configuring http.

func (RequestDrivenWebServiceHttpConfig) Validate added in v1.11.0

Validate returns nil if RequestDrivenWebServiceHttpConfig is configured correctly.

type RequestDrivenWebServiceNetworkConfig added in v1.13.0

type RequestDrivenWebServiceNetworkConfig struct {
	VPC rdwsVpcConfig `yaml:"vpc"`
}

RequestDrivenWebServiceNetworkConfig represents options for network connection to AWS resources for a Request-Driven Web Service.

func (*RequestDrivenWebServiceNetworkConfig) IsEmpty added in v1.13.0

IsEmpty returns empty if the struct has all zero members.

func (RequestDrivenWebServiceNetworkConfig) Validate added in v1.13.0

Validate returns nil if RequestDrivenWebServiceNetworkConfig is configured correctly.

type RequestDrivenWebServicePlacement added in v1.13.0

type RequestDrivenWebServicePlacement Placement

RequestDrivenWebServicePlacement represents where to place tasks for a Request-Driven Web Service.

func (RequestDrivenWebServicePlacement) Validate added in v1.13.0

Validate returns nil if RequestDrivenWebServicePlacement is configured correctly.

type RequestDrivenWebServiceProps added in v1.7.0

type RequestDrivenWebServiceProps struct {
	*WorkloadProps
	Port     uint16
	Platform PlatformArgsOrString
}

RequestDrivenWebServiceProps contains properties for creating a new request-driven web service manifest.

type RoutingRuleConfigOrBool added in v1.14.0

type RoutingRuleConfigOrBool struct {
	RoutingRuleConfiguration
	Enabled *bool
}

RoutingRuleConfigOrBool holds advanced configuration for routing rule or a boolean switch.

func (*RoutingRuleConfigOrBool) Disabled added in v1.14.0

func (r *RoutingRuleConfigOrBool) Disabled() bool

Disabled returns true if the routing rule configuration is explicitly disabled.

func (*RoutingRuleConfigOrBool) UnmarshalYAML added in v1.14.0

func (r *RoutingRuleConfigOrBool) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implements the yaml(v3) interface. It allows https routing rule to be specified as a bool or a struct alternately.

func (RoutingRuleConfigOrBool) Validate added in v1.14.0

func (r RoutingRuleConfigOrBool) Validate() error

Validate returns nil if RoutingRuleConfigOrBool is configured correctly.

type RoutingRuleConfiguration added in v1.14.0

type RoutingRuleConfiguration struct {
	Path                *string                 `yaml:"path"`
	ProtocolVersion     *string                 `yaml:"version"`
	HealthCheck         HealthCheckArgsOrString `yaml:"healthcheck"`
	Stickiness          *bool                   `yaml:"stickiness"`
	Alias               Alias                   `yaml:"alias"`
	DeregistrationDelay *time.Duration          `yaml:"deregistration_delay"`
	// TargetContainer is the container load balancer routes traffic to.
	TargetContainer          *string `yaml:"target_container"`
	TargetContainerCamelCase *string `yaml:"targetContainer"` // "targetContainerCamelCase" for backwards compatibility
	AllowedSourceIps         []IPNet `yaml:"allowed_source_ips"`
}

RoutingRuleConfiguration holds the path to route requests to the service.

func (RoutingRuleConfiguration) Validate added in v1.14.0

func (r RoutingRuleConfiguration) Validate() error

Validate returns nil if RoutingRuleConfiguration is configured correctly.

type SQSQueue added in v1.9.0

type SQSQueue struct {
	Retention  *time.Duration  `yaml:"retention"`
	Delay      *time.Duration  `yaml:"delay"`
	Timeout    *time.Duration  `yaml:"timeout"`
	DeadLetter DeadLetterQueue `yaml:"dead_letter"`
}

SQSQueue represents the configurable options for setting up a SQS Queue.

func (*SQSQueue) IsEmpty added in v1.11.0

func (q *SQSQueue) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (SQSQueue) Validate added in v1.11.0

func (q SQSQueue) Validate() error

Validate returns nil if SQSQueue is configured correctly.

type SQSQueueOrBool added in v1.11.0

type SQSQueueOrBool struct {
	Advanced SQSQueue
	Enabled  *bool
}

SQSQueueOrBool contains custom unmarshaling logic for the `queue` field in the manifest.

func (*SQSQueueOrBool) IsEmpty added in v1.11.0

func (q *SQSQueueOrBool) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (*SQSQueueOrBool) UnmarshalYAML added in v1.11.0

func (q *SQSQueueOrBool) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implements the yaml(v3) interface. It allows SQSQueue to be specified as a string or a struct alternately.

func (SQSQueueOrBool) Validate added in v1.11.0

func (q SQSQueueOrBool) Validate() error

Validate returns nil if SQSQueue is configured correctly.

type ScheduledJob added in v0.4.0

type ScheduledJob struct {
	Workload           `yaml:",inline"`
	ScheduledJobConfig `yaml:",inline"`
	Environments       map[string]*ScheduledJobConfig `yaml:",flow"`
	// contains filtered or unexported fields
}

ScheduledJob holds the configuration to build a container image that is run periodically in a given environment with timeout and retry logic.

func NewScheduledJob added in v0.4.0

func NewScheduledJob(props *ScheduledJobProps) *ScheduledJob

NewScheduledJob creates a new scheduled job object.

func (ScheduledJob) ApplyEnv added in v0.5.0

func (j ScheduledJob) ApplyEnv(envName string) (WorkloadManifest, error)

ApplyEnv returns the manifest with environment overrides.

func (*ScheduledJob) BuildArgs added in v0.5.0

func (j *ScheduledJob) BuildArgs(wsRoot string) *DockerBuildArgs

BuildArgs returns a docker.BuildArguments object for the job given a workspace root.

func (*ScheduledJob) BuildRequired added in v0.5.0

func (j *ScheduledJob) BuildRequired() (bool, error)

BuildRequired returns if the service requires building from the local Dockerfile.

func (*ScheduledJob) EnvFile added in v1.14.0

func (j *ScheduledJob) EnvFile() string

EnvFile returns the location of the env file against the ws root directory.

func (*ScheduledJob) MarshalBinary added in v0.4.0

func (j *ScheduledJob) MarshalBinary() ([]byte, error)

MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.

func (*ScheduledJob) Publish added in v1.10.0

func (j *ScheduledJob) Publish() []Topic

Publish returns the list of topics where notifications can be published.

func (ScheduledJob) Validate added in v1.11.0

func (s ScheduledJob) Validate() error

Validate returns nil if ScheduledJob is configured correctly.

type ScheduledJobConfig added in v0.4.0

type ScheduledJobConfig struct {
	ImageConfig             ImageWithHealthcheck `yaml:"image,flow"`
	ImageOverride           `yaml:",inline"`
	TaskConfig              `yaml:",inline"`
	Logging                 Logging                   `yaml:"logging,flow"`
	Sidecars                map[string]*SidecarConfig `yaml:"sidecars"` // NOTE: keep the pointers because `mergo` doesn't automatically deep merge map's value unless it's a pointer type.
	On                      JobTriggerConfig          `yaml:"on,flow"`
	JobFailureHandlerConfig `yaml:",inline"`
	Network                 NetworkConfig  `yaml:"network"`
	PublishConfig           PublishConfig  `yaml:"publish"`
	TaskDefOverrides        []OverrideRule `yaml:"taskdef_overrides"`
}

ScheduledJobConfig holds the configuration for a scheduled job

func (ScheduledJobConfig) Validate added in v1.12.0

func (s ScheduledJobConfig) Validate() error

Validate returns nil if ScheduledJobConfig is configured correctly.

type ScheduledJobProps added in v0.4.0

type ScheduledJobProps struct {
	*WorkloadProps
	Schedule    string
	Timeout     string
	HealthCheck ContainerHealthCheck // Optional healthcheck configuration.
	Platform    PlatformArgsOrString // Optional platform configuration.
	Retries     int
}

ScheduledJobProps contains properties for creating a new scheduled job manifest.

type Secret added in v1.15.0

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

Secret represents an identifier for sensitive data stored in either SSM or SecretsManager.

func (*Secret) IsSecretsManagerName added in v1.15.0

func (s *Secret) IsSecretsManagerName() bool

IsSecretsManagerName returns true if the secret refers to the name of a secret stored in SecretsManager.

func (*Secret) UnmarshalYAML added in v1.15.0

func (s *Secret) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implements the yaml.Unmarshaler (v3) interface to override the default YAML unmarshaling logic.

func (Secret) Validate added in v1.15.0

func (s Secret) Validate() error

Validate is a no-op for Secrets.

func (*Secret) Value added in v1.15.0

func (s *Secret) Value() string

Value returns the secret value provided by clients.

type SidecarConfig

type SidecarConfig struct {
	Port          *string              `yaml:"port"`
	Image         *string              `yaml:"image"`
	Essential     *bool                `yaml:"essential"`
	CredsParam    *string              `yaml:"credentialsParameter"`
	Variables     map[string]string    `yaml:"variables"`
	Secrets       map[string]Secret    `yaml:"secrets"`
	MountPoints   []SidecarMountPoint  `yaml:"mount_points"`
	DockerLabels  map[string]string    `yaml:"labels"`
	DependsOn     DependsOn            `yaml:"depends_on"`
	HealthCheck   ContainerHealthCheck `yaml:"healthcheck"`
	ImageOverride `yaml:",inline"`
}

SidecarConfig represents the configurable options for setting up a sidecar container.

func (SidecarConfig) Validate added in v1.11.0

func (s SidecarConfig) Validate() error

Validate returns nil if SidecarConfig is configured correctly.

type SidecarMountPoint added in v1.2.0

type SidecarMountPoint struct {
	SourceVolume   *string `yaml:"source_volume"`
	MountPointOpts `yaml:",inline"`
}

SidecarMountPoint is used to let sidecars mount volumes defined in `storage`

func (SidecarMountPoint) Validate added in v1.11.0

func (s SidecarMountPoint) Validate() error

Validate returns nil if SidecarMountPoint is configured correctly.

type Source

type Source struct {
	ProviderName string                 `yaml:"provider"`
	Properties   map[string]interface{} `yaml:"properties"`
}

Source defines the source of the artifacts to be built and deployed.

func (Source) IsCodeStarConnection added in v1.5.0

func (s Source) IsCodeStarConnection() bool

IsCodeStarConnection indicates to the manifest if this source requires a CSC connection.

type Storage added in v1.2.0

type Storage struct {
	Ephemeral *int               `yaml:"ephemeral"`
	Volumes   map[string]*Volume `yaml:"volumes"` // NOTE: keep the pointers because `mergo` doesn't automatically deep merge map's value unless it's a pointer type.
}

Storage represents the options for external and native storage.

func (*Storage) IsEmpty added in v1.11.0

func (s *Storage) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (Storage) Validate added in v1.11.0

func (s Storage) Validate() error

Validate returns nil if Storage is configured correctly.

type SubscribeConfig added in v1.9.0

type SubscribeConfig struct {
	Topics []TopicSubscription `yaml:"topics"`
	Queue  SQSQueue            `yaml:"queue"`
}

SubscribeConfig represents the configurable options for setting up subscriptions.

func (*SubscribeConfig) IsEmpty added in v1.11.0

func (s *SubscribeConfig) IsEmpty() bool

IsEmpty returns empty if the struct has all zero members.

func (SubscribeConfig) Validate added in v1.11.0

func (s SubscribeConfig) Validate() error

Validate returns nil if SubscribeConfig is configured correctly.

type TaskConfig

type TaskConfig struct {
	CPU            *int                 `yaml:"cpu"`
	Memory         *int                 `yaml:"memory"`
	Platform       PlatformArgsOrString `yaml:"platform,omitempty"`
	Count          Count                `yaml:"count"`
	ExecuteCommand ExecuteCommand       `yaml:"exec"`
	Variables      map[string]string    `yaml:"variables"`
	EnvFile        *string              `yaml:"env_file"`
	Secrets        map[string]Secret    `yaml:"secrets"`
	Storage        Storage              `yaml:"storage"`
}

TaskConfig represents the resource boundaries and environment variables for the containers in the task.

func (*TaskConfig) ContainerPlatform added in v1.12.0

func (t *TaskConfig) ContainerPlatform() string

ContainerPlatform returns the platform for the service.

func (TaskConfig) IsARM added in v1.13.0

func (t TaskConfig) IsARM() bool

IsARM returns whether or not the service is building with an ARM Arch.

func (TaskConfig) IsWindows added in v1.12.0

func (t TaskConfig) IsWindows() bool

IsWindows returns whether or not the service is building with a Windows OS.

func (TaskConfig) Validate added in v1.11.0

func (t TaskConfig) Validate() error

Validate returns nil if TaskConfig is configured correctly.

type Topic added in v1.8.3

type Topic struct {
	Name *string `yaml:"name"`
}

Topic represents the configurable options for setting up a SNS Topic.

func (Topic) Validate added in v1.11.0

func (t Topic) Validate() error

Validate returns nil if Topic is configured correctly.

type TopicSubscription added in v1.9.0

type TopicSubscription struct {
	Name    *string        `yaml:"name"`
	Service *string        `yaml:"service"`
	Queue   SQSQueueOrBool `yaml:"queue"`
}

TopicSubscription represents the configurable options for setting up a SNS Topic Subscription.

func (TopicSubscription) Validate added in v1.11.0

func (t TopicSubscription) Validate() error

Validate returns nil if TopicSubscription is configured correctly.

type Volume added in v1.2.0

type Volume struct {
	EFS            EFSConfigOrBool `yaml:"efs"`
	MountPointOpts `yaml:",inline"`
}

Volume is an abstraction which merges the MountPoint and Volumes concepts from the ECS Task Definition

func (*Volume) EmptyVolume added in v1.6.0

func (v *Volume) EmptyVolume() bool

EmptyVolume returns true if the EFS configuration is nil or explicitly/implicitly disabled.

func (Volume) Validate added in v1.11.0

func (v Volume) Validate() error

Validate returns nil if Volume is configured correctly.

type WorkerService added in v1.9.0

type WorkerService struct {
	Workload            `yaml:",inline"`
	WorkerServiceConfig `yaml:",inline"`
	// Use *WorkerServiceConfig because of https://github.com/imdario/mergo/issues/146
	Environments map[string]*WorkerServiceConfig `yaml:",flow"`
	// contains filtered or unexported fields
}

WorkerService holds the configuration to create a worker service.

func NewWorkerService added in v1.9.0

func NewWorkerService(props WorkerServiceProps) *WorkerService

NewWorkerService applies the props to a default Worker service configuration with minimal cpu/memory thresholds, single replica, no healthcheck, and then returns it.

func (WorkerService) ApplyEnv added in v1.9.0

func (s WorkerService) ApplyEnv(envName string) (WorkloadManifest, error)

ApplyEnv returns the service manifest with environment overrides. If the environment passed in does not have any overrides then it returns itself.

func (*WorkerService) BuildArgs added in v1.9.0

func (s *WorkerService) BuildArgs(wsRoot string) *DockerBuildArgs

BuildArgs returns a docker.BuildArguments object for the service given a workspace root directory

func (*WorkerService) BuildRequired added in v1.9.0

func (s *WorkerService) BuildRequired() (bool, error)

BuildRequired returns if the service requires building from the local Dockerfile.

func (*WorkerService) EnvFile added in v1.14.0

func (s *WorkerService) EnvFile() string

EnvFile returns the location of the env file against the ws root directory.

func (*WorkerService) MarshalBinary added in v1.9.0

func (s *WorkerService) MarshalBinary() ([]byte, error)

MarshalBinary serializes the manifest object into a binary YAML document. Implements the encoding.BinaryMarshaler interface.

func (*WorkerService) Publish added in v1.12.0

func (s *WorkerService) Publish() []Topic

Publish returns the list of topics where notifications can be published.

func (*WorkerService) Subscriptions added in v1.10.0

func (s *WorkerService) Subscriptions() []TopicSubscription

Subscriptions returns a list of TopicSubscriotion objects which represent the SNS topics the service receives messages from.

func (WorkerService) Validate added in v1.11.0

func (w WorkerService) Validate() error

Validate returns nil if WorkerService is configured correctly.

type WorkerServiceConfig added in v1.9.0

type WorkerServiceConfig struct {
	ImageConfig      ImageWithHealthcheck `yaml:"image,flow"`
	ImageOverride    `yaml:",inline"`
	TaskConfig       `yaml:",inline"`
	Logging          Logging                   `yaml:"logging,flow"`
	Sidecars         map[string]*SidecarConfig `yaml:"sidecars"` // NOTE: keep the pointers because `mergo` doesn't automatically deep merge map's value unless it's a pointer type.
	Subscribe        SubscribeConfig           `yaml:"subscribe"`
	PublishConfig    PublishConfig             `yaml:"publish"`
	Network          NetworkConfig             `yaml:"network"`
	TaskDefOverrides []OverrideRule            `yaml:"taskdef_overrides"`
}

WorkerServiceConfig holds the configuration that can be overridden per environments.

func (WorkerServiceConfig) Validate added in v1.12.0

func (w WorkerServiceConfig) Validate() error

Validate returns nil if WorkerServiceConfig is configured correctly.

type WorkerServiceProps added in v1.9.0

type WorkerServiceProps struct {
	WorkloadProps

	HealthCheck ContainerHealthCheck // Optional healthcheck configuration.
	Platform    PlatformArgsOrString // Optional platform configuration.
	Topics      []TopicSubscription  // Optional topics for subscriptions
}

WorkerServiceProps represents the configuration needed to create a worker service.

type Workload added in v0.4.0

type Workload struct {
	Name *string `yaml:"name"`
	Type *string `yaml:"type"` // must be one of the supported manifest types.
}

Workload holds the basic data that every workload manifest file needs to have.

func (Workload) Validate added in v1.12.0

func (w Workload) Validate() error

Validate returns nil if Workload is configured correctly.

type WorkloadManifest added in v1.8.0

type WorkloadManifest interface {
	ApplyEnv(envName string) (WorkloadManifest, error)
	Validate() error
}

WorkloadManifest represents a workload manifest.

func UnmarshalWorkload added in v0.4.0

func UnmarshalWorkload(in []byte) (WorkloadManifest, error)

UnmarshalWorkload deserializes the YAML input stream into a workload manifest object. If an error occurs during deserialization, then returns the error. If the workload type in the manifest is invalid, then returns an ErrInvalidManifestType.

type WorkloadProps added in v0.4.0

type WorkloadProps struct {
	Name       string
	Dockerfile string
	Image      string
}

WorkloadProps contains properties for creating a new workload manifest.

Jump to

Keyboard shortcuts

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