stack

package
v1.20.0 Latest Latest
Warning

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

Go to latest
Published: Jul 18, 2022 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Overview

Package stack provides functionality to transform manifest files and additional runtime configuration into CloudFormation stacks.

Index

Constants

View Source
const (
	EnvParamAliasesKey      = "Aliases"
	EnvParamALBWorkloadsKey = "ALBWorkloads"

	EnvParamServiceDiscoveryEndpoint = "ServiceDiscoveryEndpoint"

	// Output keys.
	EnvOutputVPCID          = "VpcId"
	EnvOutputPublicSubnets  = "PublicSubnets"
	EnvOutputPrivateSubnets = "PrivateSubnets"

	// Default parameter values.
	DefaultVPCCIDR = "10.0.0.0/16"
)
View Source
const (
	LBWebServiceDNSDelegatedParamKey = "DNSDelegated"
	LBWebServiceNLBAliasesParamKey   = "NLBAliases"
	LBWebServiceNLBPortParamKey      = "NLBPort"
)

Parameter logical IDs for a load balanced web service.

View Source
const (
	WorkloadAppNameParamKey           = "AppName"
	WorkloadEnvNameParamKey           = "EnvName"
	WorkloadNameParamKey              = "WorkloadName"
	WorkloadContainerImageParamKey    = "ContainerImage"
	WorkloadContainerPortParamKey     = "ContainerPort"
	WorkloadAddonsTemplateURLParamKey = "AddonsTemplateURL"
)

Parameter logical IDs common across workloads.

View Source
const (
	WorkloadTaskCPUParamKey      = "TaskCPU"
	WorkloadTaskMemoryParamKey   = "TaskMemory"
	WorkloadTaskCountParamKey    = "TaskCount"
	WorkloadLogRetentionParamKey = "LogRetention"
	WorkloadEnvFileARNParamKey   = "EnvFileARN"
)

Parameter logical IDs for workloads on ECS.

View Source
const (
	WorkloadTargetContainerParamKey = "TargetContainer"
	WorkloadTargetPortParamKey      = "TargetPort"
	WorkloadHTTPSParamKey           = "HTTPSEnabled"
	WorkloadRulePathParamKey        = "RulePath"
	WorkloadStickinessParamKey      = "Stickiness"
)

Parameter logical IDs for workloads on ECS with a Load Balancer.

View Source
const (
	RDWkldImageRepositoryType                   = "ImageRepositoryType"
	RDWkldInstanceCPUParamKey                   = "InstanceCPU"
	RDWkldInstanceMemoryParamKey                = "InstanceMemory"
	RDWkldInstanceRoleParamKey                  = "InstanceRole"
	RDWkldHealthCheckPathParamKey               = "HealthCheckPath"
	RDWkldHealthCheckIntervalParamKey           = "HealthCheckInterval"
	RDWkldHealthCheckTimeoutParamKey            = "HealthCheckTimeout"
	RDWkldHealthCheckHealthyThresholdParamKey   = "HealthCheckHealthyThreshold"
	RDWkldHealthCheckUnhealthyThresholdParamKey = "HealthCheckUnhealthyThreshold"
)

Parameter logical IDs for workloads on App Runner.

View Source
const (
	// NoExposedContainerPort indicates no port should be exposed for the service container.
	NoExposedContainerPort = "-1"
)
View Source
const (
	ScheduledJobScheduleParamKey = "Schedule"
)

Parameter logical IDs for a scheduled job

Variables

View Source
var (
	DefaultPublicSubnetCIDRs  = []string{"10.0.0.0/24", "10.0.1.0/24"}
	DefaultPrivateSubnetCIDRs = []string{"10.0.2.0/24", "10.0.3.0/24"}
)

Functions

func DNSDelegatedAccountsForStack

func DNSDelegatedAccountsForStack(stack *cloudformation.Stack) []string

DNSDelegatedAccountsForStack looks through a stack's parameters for the parameter which stores the comma seperated list of account IDs which are permitted for DNS delegation.

func NameForAppStack added in v1.5.0

func NameForAppStack(app string) string

NameForAppStack returns the stack name for an app.

func NameForAppStackSet added in v1.5.0

func NameForAppStackSet(app string) string

NameForAppStackSet returns the stackset name for an app.

func NameForEnv

func NameForEnv(app, env string) string

NameForEnv returns the stack name for an environment.

func NameForPipeline added in v1.16.0

func NameForPipeline(app string, pipeline string, isLegacy bool) string

NameForPipeline returns the stack name for a pipeline, depending on whether it has been deployed using the legacy scheme. Note that it doesn't cut name to length of 128 like service stack name. It expects CloudFormation to error out when the name is to long.

func NameForService

func NameForService(app, env, svc string) string

NameForService returns the stack name for a service.

func NewPipelineStackConfig

func NewPipelineStackConfig(in *deploy.CreatePipelineInput) *pipelineStackConfig

NewPipelineStackConfig sets up a struct which can provide values to CloudFormation for spinning up a pipeline.

func NewTaskStackConfig

func NewTaskStackConfig(taskOpts *deploy.CreateTaskResourcesInput) *taskStackConfig

NewTaskStackConfig sets up a struct that provides stack configurations for CloudFormation to deploy the task resources stack.

func WithNLB added in v1.13.0

func WithNLB(cidrBlocks []string) func(s *LoadBalancedWebService)

WithNLB enables Network Load Balancer in a LoadBalancedWebService.

Types

type AppRegionalResources

type AppRegionalResources struct {
	Region         string            // The region these resources are in.
	KMSKeyARN      string            // A KMS Key ARN for encrypting Pipeline artifacts.
	S3Bucket       string            // A bucket used for any Copilot artifacts that must be stored in S3 (pipelines, env files, etc).
	RepositoryURLs map[string]string // The image repository URLs by service name.
}

AppRegionalResources represent application resources that are regional.

func ToAppRegionalResources

func ToAppRegionalResources(stack *cloudformation.Stack) (*AppRegionalResources, error)

ToAppRegionalResources takes an Application Resource Stack Instance stack, reads the output resources and returns a modeled ProjectRegionalResources.

type AppResourcesConfig

type AppResourcesConfig struct {
	Accounts []string `yaml:"Accounts,flow"`
	Services []string `yaml:"Services,flow"`
	App      string   `yaml:"App"`
	Version  int      `yaml:"Version"`
}

AppResourcesConfig is a configuration for a deployed Application StackSet.

func AppConfigFrom

func AppConfigFrom(template *string) (*AppResourcesConfig, error)

AppConfigFrom takes a template file and extracts the metadata block, and parses it into an AppStackConfig

type AppStackConfig

type AppStackConfig struct {
	*deploy.CreateAppInput
	// contains filtered or unexported fields
}

AppStackConfig is for providing all the values to set up an environment stack and to interpret the outputs from it.

func NewAppStackConfig

func NewAppStackConfig(in *deploy.CreateAppInput) *AppStackConfig

NewAppStackConfig sets up a struct which can provide values to CloudFormation for spinning up an environment.

func (*AppStackConfig) Parameters

func (c *AppStackConfig) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns a list of parameters which accompany the app CloudFormation template.

func (*AppStackConfig) ResourceTemplate

func (c *AppStackConfig) ResourceTemplate(config *AppResourcesConfig) (string, error)

ResourceTemplate generates a StackSet template with all the Application-wide resources (ECR Repos, KMS keys, S3 buckets)

func (*AppStackConfig) SerializedParameters added in v1.16.0

func (s *AppStackConfig) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*AppStackConfig) StackName

func (c *AppStackConfig) StackName() string

StackName returns the name of the CloudFormation stack (based on the application name).

func (*AppStackConfig) StackSetAdminRoleARN

func (c *AppStackConfig) StackSetAdminRoleARN(region string) (string, error)

StackSetAdminRoleARN returns the role ARN of the role used to administer the Application StackSet.

func (*AppStackConfig) StackSetDescription

func (c *AppStackConfig) StackSetDescription() string

StackSetDescription returns the description of the StackSet for application resources.

func (*AppStackConfig) StackSetExecutionRoleName

func (c *AppStackConfig) StackSetExecutionRoleName() string

StackSetExecutionRoleName returns the role name of the role used to actually create Application resources.

func (*AppStackConfig) StackSetName

func (c *AppStackConfig) StackSetName() string

StackSetName returns the name of the CloudFormation StackSet (based on the application name).

func (*AppStackConfig) Tags

func (c *AppStackConfig) Tags() []*cloudformation.Tag

Tags returns the tags that should be applied to the Application CloudFormation stack.

func (*AppStackConfig) Template

func (c *AppStackConfig) Template() (string, error)

Template returns the environment CloudFormation template.

type BackendService

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

BackendService represents the configuration needed to create a CloudFormation stack from a backend service manifest.

func NewBackendService

func NewBackendService(conf BackendServiceConfig) (*BackendService, error)

NewBackendService creates a new BackendService stack from a manifest file.

func (*BackendService) Parameters

func (s *BackendService) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the list of CloudFormation parameters used by the template.

func (*BackendService) SerializedParameters

func (s *BackendService) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*BackendService) Template

func (s *BackendService) Template() (string, error)

Template returns the CloudFormation template for the backend service.

type BackendServiceConfig added in v1.19.0

type BackendServiceConfig struct {
	App           *config.Application
	EnvManifest   *manifest.Environment
	Manifest      *manifest.BackendService
	RawManifest   []byte // Content of the manifest file without any transformations.
	RuntimeConfig RuntimeConfig
}

BackendServiceConfig contains data required to initialize a backend service stack.

type BootstrapEnvStackConfig added in v1.20.0

type BootstrapEnvStackConfig EnvStackConfig

BootstrapEnvStackConfig contains information for creating a stack bootstrapping environment resources.

func NewBootstrapEnvStackConfig added in v1.20.0

func NewBootstrapEnvStackConfig(input *deploy.CreateEnvironmentInput) *BootstrapEnvStackConfig

NewBootstrapEnvStackConfig sets up a BootstrapEnvStackConfig struct.

func (*BootstrapEnvStackConfig) Parameters added in v1.20.0

func (e *BootstrapEnvStackConfig) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the parameters to be passed into the bootstrap stack's CloudFormation template.

func (*BootstrapEnvStackConfig) SerializedParameters added in v1.20.0

func (e *BootstrapEnvStackConfig) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a YAML document annotated with comments for readability to users.

func (*BootstrapEnvStackConfig) StackName added in v1.20.0

func (e *BootstrapEnvStackConfig) StackName() string

StackName returns the name of the CloudFormation stack (based on the app and env names).

func (*BootstrapEnvStackConfig) Tags added in v1.20.0

Tags returns the tags that should be applied to the bootstrap CloudFormation stack.

func (*BootstrapEnvStackConfig) Template added in v1.20.0

func (e *BootstrapEnvStackConfig) Template() (string, error)

Template returns the CloudFormation template to bootstrap environment resources.

func (*BootstrapEnvStackConfig) ToEnv added in v1.20.0

ToEnv inspects an environment cloudformation stack and constructs an environment struct out of it (including resources like ECR Repo).

type DeployedAppMetadata

type DeployedAppMetadata struct {
	Metadata AppResourcesConfig `yaml:"Metadata"`
}

DeployedAppMetadata wraps the Metadata field of a deployed application StackSet.

type ECRImage added in v0.5.0

type ECRImage struct {
	RepoURL  string // RepoURL is the ECR repository URL the container image should be pushed to.
	ImageTag string // Tag is the container image's unique tag.
	Digest   string // The image digest.
}

ECRImage represents configuration about the pushed ECR image that is needed to create a CloudFormation stack.

func (ECRImage) GetLocation added in v0.5.0

func (i ECRImage) GetLocation() string

GetLocation returns the ECR image URI. If a tag is provided by the user or discovered from git then prioritize referring to the image via the tag. Otherwise, each image after a push to ECR will get a digest and we refer to the image via the digest. Finally, if no digest or tag is present, this occurs with the "package" commands, we default to the "latest" tag.

type EnvStackConfig

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

EnvStackConfig is for providing all the values to set up an environment stack and to interpret the outputs from it.

func NewEnvConfigFromExistingStack added in v1.20.0

func NewEnvConfigFromExistingStack(in *deploy.CreateEnvironmentInput, lastForceUpdateID string, prevParams []*cloudformation.Parameter) *EnvStackConfig

NewEnvConfigFromExistingStack returns a CloudFormation stack configuration for updating an environment.

func NewEnvStackConfig

func NewEnvStackConfig(input *deploy.CreateEnvironmentInput) *EnvStackConfig

NewEnvStackConfig return o CloudFormation stack configuration for deploying a brand new environment.

func (*EnvStackConfig) Parameters

func (e *EnvStackConfig) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the parameters to be passed into an environment CloudFormation template.

func (*EnvStackConfig) SerializedParameters added in v1.16.0

func (e *EnvStackConfig) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*EnvStackConfig) StackName

func (e *EnvStackConfig) StackName() string

StackName returns the name of the CloudFormation stack (based on the app and env names).

func (*EnvStackConfig) Tags

func (e *EnvStackConfig) Tags() []*cloudformation.Tag

Tags returns the tags that should be applied to the environment CloudFormation stack.

func (*EnvStackConfig) Template

func (e *EnvStackConfig) Template() (string, error)

Template returns the environment CloudFormation template.

type LoadBalancedWebService

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

LoadBalancedWebService represents the configuration needed to create a CloudFormation stack from a load balanced web service manifest.

func NewLoadBalancedWebService

NewLoadBalancedWebService creates a new CFN stack with an ECS service from a manifest file, given the options.

func (*LoadBalancedWebService) Parameters

func (s *LoadBalancedWebService) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the list of CloudFormation parameters used by the template.

func (*LoadBalancedWebService) SerializedParameters

func (s *LoadBalancedWebService) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*LoadBalancedWebService) Template

func (s *LoadBalancedWebService) Template() (string, error)

Template returns the CloudFormation template for the service parametrized for the environment.

type LoadBalancedWebServiceConfig added in v1.18.0

type LoadBalancedWebServiceConfig struct {
	App           *config.Application
	EnvManifest   *manifest.Environment
	Manifest      *manifest.LoadBalancedWebService
	RawManifest   []byte // Content of the manifest file without any transformations.
	RuntimeConfig RuntimeConfig
	RootUserARN   string
}

LoadBalancedWebServiceConfig contains fields to configure LoadBalancedWebService.

type LoadBalancedWebServiceOption added in v1.13.0

type LoadBalancedWebServiceOption func(s *LoadBalancedWebService)

LoadBalancedWebServiceOption is used to configuring an optional field for LoadBalancedWebService.

type RequestDrivenWebService added in v1.7.0

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

RequestDrivenWebService represents the configuration needed to create a CloudFormation stack from a request-drive web service manifest.

func NewRequestDrivenWebService added in v1.7.0

func NewRequestDrivenWebService(cfg RequestDrivenWebServiceConfig) (*RequestDrivenWebService, error)

NewRequestDrivenWebService creates a new RequestDrivenWebService stack from a manifest file.

func (RequestDrivenWebService) Parameters added in v1.7.0

func (w RequestDrivenWebService) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the list of CloudFormation parameters used by the template.

func (*RequestDrivenWebService) SerializedParameters added in v1.7.0

func (s *RequestDrivenWebService) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*RequestDrivenWebService) Template added in v1.7.0

func (s *RequestDrivenWebService) Template() (string, error)

Template returns the CloudFormation template for the service parametrized for the environment.

type RequestDrivenWebServiceConfig added in v1.20.0

type RequestDrivenWebServiceConfig struct {
	App         deploy.AppInformation
	Env         string
	Manifest    *manifest.RequestDrivenWebService
	RawManifest []byte

	RuntimeConfig RuntimeConfig
}

RequestDrivenWebServiceConfig contains data required to initialize a request-driven web service stack.

type RuntimeConfig

type RuntimeConfig struct {
	Image              *ECRImage         // Optional. Image location in an ECR repository.
	AddonsTemplateURL  string            // Optional. S3 object URL for the addons template.
	EnvFileARN         string            // Optional. S3 object ARN for the env file.
	AdditionalTags     map[string]string // AdditionalTags are labels applied to resources in the workload stack.
	CustomResourcesURL map[string]string // Mapping of Custom Resource Function Name to the S3 URL where the function zip file is stored.

	// The target environment metadata.
	ServiceDiscoveryEndpoint string // Endpoint for the service discovery namespace in the environment.
	AccountID                string
	Region                   string
}

RuntimeConfig represents configuration that's defined outside of the manifest file that is needed to create a CloudFormation stack.

type ScheduledJob added in v0.5.0

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

ScheduledJob represents the configuration needed to create a Cloudformation stack from a scheduled job manfiest.

func NewScheduledJob added in v0.5.0

func NewScheduledJob(cfg ScheduledJobConfig) (*ScheduledJob, error)

NewScheduledJob creates a new ScheduledJob stack from a manifest file.

func (*ScheduledJob) Parameters added in v0.5.0

func (j *ScheduledJob) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the list of CloudFormation parameters used by the template.

func (*ScheduledJob) SerializedParameters added in v0.5.0

func (j *ScheduledJob) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*ScheduledJob) Template added in v0.5.0

func (j *ScheduledJob) Template() (string, error)

Template returns the CloudFormation template for the scheduled job.

type ScheduledJobConfig added in v1.20.0

type ScheduledJobConfig struct {
	App           string
	Env           string
	Manifest      *manifest.ScheduledJob
	RawManifest   []byte
	RuntimeConfig RuntimeConfig
}

ScheduledJobConfig contains data required to initialize a scheduled job stack.

type TaskStackName added in v1.1.0

type TaskStackName string

TaskStackName holds the name of a Copilot one-off task stack.

func NameForTask

func NameForTask(task string) TaskStackName

NameForTask returns the stack name for a task.

func (TaskStackName) TaskName added in v1.1.0

func (t TaskStackName) TaskName() string

TaskName returns the name of the task family, generated from the stack name

type WorkerService added in v1.10.0

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

WorkerService represents the configuration needed to create a CloudFormation stack from a worker service manifest.

func NewWorkerService added in v1.10.0

func NewWorkerService(cfg WorkerServiceConfig) (*WorkerService, error)

NewWorkerService creates a new WorkerService stack from a manifest file.

func (*WorkerService) Parameters added in v1.10.0

func (s *WorkerService) Parameters() ([]*cloudformation.Parameter, error)

Parameters returns the list of CloudFormation parameters used by the template.

func (*WorkerService) SerializedParameters added in v1.10.0

func (s *WorkerService) SerializedParameters() (string, error)

SerializedParameters returns the CloudFormation stack's parameters serialized to a JSON document.

func (*WorkerService) Template added in v1.10.0

func (s *WorkerService) Template() (string, error)

Template returns the CloudFormation template for the worker service.

type WorkerServiceConfig added in v1.20.0

type WorkerServiceConfig struct {
	App           string
	Env           string
	Manifest      *manifest.WorkerService
	RawManifest   []byte
	RuntimeConfig RuntimeConfig
}

WorkerServiceConfig contains data required to initialize a scheduled job stack.

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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