aws

package
v0.0.0-...-1cfd76e Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	AuthTypeAWSToken             = "aws-token"
	SecretsTypeAWSSecretsManager = "aws-secrets-manager"

	SecretsProviderTypeAwsKms = "aws-kms"
	StateStorageTypeS3Bucket  = "s3-bucket"
)
View Source
const (
	LambdaRoutingApiGw             = "api-gateway"
	LambdaRoutingFunctionUrl       = "function-url"
	LambdaInvokeModeBuffered       = "BUFFERED"
	LambdaInvokeModeResponseStream = "RESPONSE_STREAM"

	LoadBalancerTypeAlb LoadBalancerType = "alb"
	LoadBalancerTypeNlb LoadBalancerType = "nlb"
)
View Source
const ProviderType = "aws"
View Source
const ResourceTypeEcrRepository = "ecr-repository"
View Source
const (
	ResourceTypeRdsMysql = "aws-rds-mysql"
)
View Source
const (
	ResourceTypeRdsPostgres = "aws-rds-postgres"
)
View Source
const ResourceTypeS3Bucket = "s3-bucket"
View Source
const (
	TemplateTypeAwsLambda = "aws-lambda"
)
View Source
const (
	TemplateTypeEcsFargate = "ecs-fargate"
)
View Source
const TemplateTypeStaticWebsite = "aws-static-website"

Variables

View Source
var DefaultEcrLifecyclePolicy = EcrLifecyclePolicy{
	Rules: []EcrLifecycleRule{
		{
			RulePriority: 1,
			Description:  "Keep only 3 last images",
			Selection: EcrLifecyclePolicySelection{
				TagStatus:   "any",
				CountType:   "imageCountMoreThan",
				CountNumber: 3,
			},
			Action: EcrLifecyclePolicyAction{
				Type: "expire",
			},
		},
	},
}

DefaultEcrLifecyclePolicy is the default ECR lifecycle policy (keep only 3 last images)

Functions

func EcrRepositoryReadConfig

func EcrRepositoryReadConfig(config *api.Config) (api.Config, error)

func ReadAuthServiceAccountConfig

func ReadAuthServiceAccountConfig(config *api.Config) (api.Config, error)

func ReadRdsMysqlConfig

func ReadRdsMysqlConfig(config *api.Config) (api.Config, error)

func ReadRdsPostgresConfig

func ReadRdsPostgresConfig(config *api.Config) (api.Config, error)

func ReadSecretsConfig

func ReadSecretsConfig(config *api.Config) (api.Config, error)

func ReadSecretsProviderConfig

func ReadSecretsProviderConfig(config *api.Config) (api.Config, error)

func ReadStateStorageConfig

func ReadStateStorageConfig(config *api.Config) (api.Config, error)

func ReadTemplateConfig

func ReadTemplateConfig(config *api.Config) (api.Config, error)

func S3BucketReadConfig

func S3BucketReadConfig(config *api.Config) (api.Config, error)

func ToAwsLambdaConfig

func ToAwsLambdaConfig(tpl any, stackCfg *api.StackConfigSingleImage) (any, error)

func ToEcsFargateConfig

func ToEcsFargateConfig(tpl any, composeCfg compose.Config, stackCfg *api.StackConfigCompose) (any, error)

func ToStaticSiteConfig

func ToStaticSiteConfig(tpl any, stackDir, stackName string, stackCfg *api.StackConfigStatic) (any, error)

Types

type AccountConfig

type AccountConfig struct {
	Account         string `json:"account" yaml:"account"`
	AccessKey       string `json:"accessKey" yaml:"accessKey"`
	SecretAccessKey string `json:"secretAccessKey" yaml:"secretAccessKey"`
	Region          string `json:"region" yaml:"region"`
	api.Credentials `json:",inline" yaml:",inline"`
}

func (*AccountConfig) CredentialsValue

func (r *AccountConfig) CredentialsValue() string

func (*AccountConfig) ProjectIdValue

func (r *AccountConfig) ProjectIdValue() string

func (*AccountConfig) ProviderType

func (r *AccountConfig) ProviderType() string

type CloudExtras

type CloudExtras struct {
	AwsRoles          []string          `json:"awsRoles" yaml:"awsRoles"`
	LambdaSchedule    *LambdaSchedule   `json:"lambdaSchedule,omitempty" yaml:"lambdaSchedule,omitempty"`   // e.g. for lambda functions to be triggered on schedule
	LambdaSchedules   []LambdaSchedule  `json:"lambdaSchedules,omitempty" yaml:"lambdaSchedules,omitempty"` // e.g. for lambda functions to be triggered on schedule
	LambdaRoutingType LambdaRoutingType `json:"lambdaRoutingType" yaml:"lambdaRoutingType"`
	LambdaInvokeMode  LambdaInvokeMode  `json:"lambdaInvokeMode" yaml:"lambdaInvokeMode"` // invoke mode for lambda

	SecurityGroup    *SecurityGroup   `json:"securityGroup,omitempty" yaml:"securityGroup,omitempty"`
	LoadBalancerType LoadBalancerType `json:"loadBalancerType,omitempty" yaml:"loadBalancerType,omitempty"` // default: alb
}

type EcrLifecyclePolicy

type EcrLifecyclePolicy struct {
	Rules []EcrLifecycleRule `json:"rules" yaml:"rules"`
}

type EcrLifecyclePolicyAction

type EcrLifecyclePolicyAction struct {
	Type string `json:"type" yaml:"type"`
}

type EcrLifecyclePolicySelection

type EcrLifecyclePolicySelection struct {
	TagStatus   string `json:"tagStatus" yaml:"tagStatus"`
	CountType   string `json:"countType" yaml:"countType"`
	CountNumber int    `json:"countNumber" yaml:"countNumber"`
}

type EcrLifecycleRule

type EcrLifecycleRule struct {
	RulePriority int                         `json:"rulePriority" yaml:"rulePriority"`
	Description  string                      `json:"description" yaml:"description"`
	Selection    EcrLifecyclePolicySelection `json:"selection" yaml:"selection"`
	Action       EcrLifecyclePolicyAction    `json:"action" yaml:"action"`
}

type EcrRepository

type EcrRepository struct {
	AccountConfig   `json:",inline" yaml:",inline"`
	Name            string              `json:"name,omitempty" yaml:"name,omitempty"`
	LifecyclePolicy *EcrLifecyclePolicy `json:"lifecyclePolicy" yaml:"lifecyclePolicy"`
}

type EcsFargateConfig

type EcsFargateConfig struct {
	api.Credentials    `json:",inline" yaml:",inline"`
	AccountConfig      `json:",inline" yaml:",inline"`
	Cpu                int    `json:"cpu" yaml:"cpu"`
	Memory             int    `json:"memory" yaml:"memory"`
	EphemeralStorageGB int    `json:"ephemeralStorageGB" yaml:"ephemeralStorageGB"`
	Version            string `json:"version" yaml:"version"`
}

func (*EcsFargateConfig) CredentialsValue

func (r *EcsFargateConfig) CredentialsValue() string

func (*EcsFargateConfig) ProjectIdValue

func (r *EcsFargateConfig) ProjectIdValue() string

type EcsFargateContainer

type EcsFargateContainer struct {
	Name          string                 `json:"name" yaml:"name"`
	Image         api.ContainerImage     `json:"image" yaml:"image"`
	Env           map[string]string      `json:"env" yaml:"env"`
	Secrets       map[string]string      `json:"secrets" yaml:"secrets"`
	Port          int                    `json:"port" yaml:"port"`
	LivenessProbe EcsFargateProbe        `json:"livenessProbe" yaml:"livenessProbe"`
	StartupProbe  EcsFargateProbe        `json:"startupProbe" yaml:"startupProbe"`
	MountPoints   []EcsFargateMountPoint `json:"mountPoints" yaml:"mountPoints"`
	Cpu           int                    `json:"cpu" yaml:"cpu"`
	Memory        int                    `json:"memory" yaml:"memory"`
	DependsOn     []EcsFargateDependsOn  `json:"dependsOn" yaml:"dependsOn"`
}

type EcsFargateDependsOn

type EcsFargateDependsOn struct {
	Container string `json:"container" yaml:"container"`
	Condition string `json:"condition" yaml:"condition"`
}

type EcsFargateInput

type EcsFargateInput struct {
	TemplateConfig   `json:"templateConfig" yaml:"templateConfig"`
	Scale            EcsFargateScale                     `json:"scale" yaml:"scale"`
	Containers       []EcsFargateContainer               `json:"containers" yaml:"containers"`
	IngressContainer EcsFargateContainer                 `json:"ingressContainer" yaml:"ingressContainer"`
	Config           EcsFargateConfig                    `json:"config" yaml:"config"`
	Domain           string                              `json:"domain" yaml:"domain"`
	DomainProxied    *bool                               `json:"domainProxied" yaml:"domainProxied"`
	RefResourceNames []string                            `json:"refResourceNames" yaml:"refResourceNames"`
	Secrets          map[string]string                   `json:"secrets" yaml:"secrets"`
	BaseDnsZone      string                              `json:"baseDnsZone" yaml:"baseDnsZone"`
	Dependencies     []api.StackConfigDependencyResource `json:"dependencies" yaml:"dependencies"`
	Volumes          []EcsFargateVolume                  `json:"volumes" yaml:"volumes"`
	Alerts           *api.AlertsConfig                   `json:"alerts" yaml:"alerts"`
	ComposeDir       string                              `json:"composeDir" yaml:"composeDir"`
	CloudExtras      *CloudExtras                        `json:"cloudExtras" yaml:"cloudExtras"`
	StackConfig      *api.StackConfigCompose             `json:"stackConfig" yaml:"stackConfig"`
}

func (*EcsFargateInput) DependsOnResources

func (i *EcsFargateInput) DependsOnResources() []api.StackConfigDependencyResource

func (*EcsFargateInput) OverriddenBaseZone

func (i *EcsFargateInput) OverriddenBaseZone() string

func (*EcsFargateInput) Uses

func (i *EcsFargateInput) Uses() []string

type EcsFargateMountPoint

type EcsFargateMountPoint struct {
	ContainerPath string `pulumi:"containerPath"`
	ReadOnly      bool   `pulumi:"readOnly"`
	SourceVolume  string `pulumi:"sourceVolume"`
}

type EcsFargateProbe

type EcsFargateProbe struct {
	Command             []string     `json:"command" yaml:"command"`
	HttpGet             ProbeHttpGet `json:"httpGet" yaml:"httpGet"`
	InitialDelaySeconds int          `json:"initialDelaySeconds" yaml:"initialDelaySeconds"`
	TimeoutSeconds      int          `json:"timeoutSeconds" yaml:"timeoutSeconds"`
	IntervalSeconds     int          `json:"intervalSeconds" yaml:"intervalSeconds"`
	Retries             int          `json:"retries" yaml:"retries"`
}

func (*EcsFargateProbe) FromHealthCheck

func (p *EcsFargateProbe) FromHealthCheck(svc types.ServiceConfig, port int)

type EcsFargateResources

type EcsFargateResources struct {
	Limits   map[string]string `json:"limits" yaml:"limits"`
	Requests map[string]string `json:"requests" yaml:"requests"`
}

type EcsFargateScale

type EcsFargateScale struct {
	Min int `json:"min" yaml:"min"`
	Max int `json:"max" yaml:"max"`

	Policies []EcsFargateScalePolicy `json:"policy" yaml:"policy"`
	Update   FargateRollingUpdate    `json:"update" yaml:"update"`
}

type EcsFargateScalePolicy

type EcsFargateScalePolicy struct {
	Type             EcsFargateScalePolicyType `json:"type" yaml:"type"`
	TargetValue      int                       `yaml:"targetValue" json:"targetValue"`
	ScaleInCooldown  int                       `json:"scaleInCooldown" yaml:"scaleInCooldown"`
	ScaleOutCooldown int                       `json:"scaleOutCooldown" yaml:"scaleOutCooldown"`
}

type EcsFargateScalePolicyType

type EcsFargateScalePolicyType string
const (
	ScaleCpu    EcsFargateScalePolicyType = "cpu"
	ScaleMemory EcsFargateScalePolicyType = "memory"
)

type EcsFargateVolume

type EcsFargateVolume struct {
	Name string `json:"name" yaml:"name"`
}

type FargateRollingUpdate

type FargateRollingUpdate struct {
	MinHealthyPercent int `json:"minHealthyPercent" yaml:"minHealthyPercent"`
	MaxPercent        int `json:"maxPercent" yaml:"maxPercent"`
}

type LambdaInput

type LambdaInput struct {
	AccountConfig `json:",inline" yaml:",inline"`
	StackConfig   api.StackConfigSingleImage `json:"stackConfig" yaml:"stackConfig"`
}

func (*LambdaInput) Uses

func (l *LambdaInput) Uses() []string

type LambdaInvokeMode

type LambdaInvokeMode string

type LambdaRoutingType

type LambdaRoutingType string

type LambdaSchedule

type LambdaSchedule struct {
	Name       string `json:"name,omitempty" yaml:"name,omitempty"`
	Expression string `json:"expression" yaml:"expression"`
	Request    string `json:"request" yaml:"request"`
}

type LoadBalancerType

type LoadBalancerType string

type MysqlConfig

type MysqlConfig struct {
	AccountConfig   `json:",inline" yaml:",inline"`
	Name            string  `json:"name" yaml:"name"`
	InstanceClass   string  `json:"instanceClass" yaml:"instanceClass"`
	AllocateStorage *int    `json:"allocateStorage" yaml:"allocateStorage"`
	EngineVersion   string  `json:"engineVersion" yaml:"engineVersion"`
	Username        string  `json:"username" yaml:"username"`
	Password        string  `json:"password" yaml:"password"`
	DatabaseName    *string `json:"databaseName" yaml:"databaseName"`
	EngineName      *string `json:"engineName,omitempty" yaml:"engineName,omitempty"`
}

type PostgresConfig

type PostgresConfig struct {
	AccountConfig   `json:",inline" yaml:",inline"`
	Name            string  `json:"name" yaml:"name"`
	InstanceClass   string  `json:"instanceClass" yaml:"instanceClass"`
	AllocateStorage *int    `json:"allocateStorage" yaml:"allocateStorage"`
	EngineVersion   string  `json:"engineVersion" yaml:"engineVersion"`
	Username        string  `json:"username" yaml:"username"`
	Password        string  `json:"password" yaml:"password"`
	DatabaseName    *string `json:"databaseName" yaml:"databaseName"`
}

type ProbeHttpGet

type ProbeHttpGet struct {
	Path             string `json:"path" yaml:"path"`
	Port             int    `json:"port" yaml:"port"`
	SuccessCodes     string `json:"successCodes" yaml:"successCodes"`
	HealthyThreshold int    `json:"healthyThreshold" yaml:"healthyThreshold"`
}

type S3Bucket

type S3Bucket struct {
	AccountConfig         `json:",inline" yaml:",inline"`
	*api.StaticSiteConfig `json:",inline,omitempty" yaml:",inline,omitempty"`
	Name                  string `json:"name,omitempty" yaml:"name,omitempty"`
	AllowOnlyHttps        bool   `json:"allowOnlyHttps" yaml:"allowOnlyHttps"`
}

type SecretsConfig

type SecretsConfig struct {
	AccountConfig `json:",inline" yaml:",inline"`
}

type SecretsProviderConfig

type SecretsProviderConfig struct {
	AccountConfig `json:",inline" yaml:",inline"`
	Provision     bool `json:"provision" yaml:"provision"`

	// must be in the format:
	// awskms://1234abcd-12ab-34cd-56ef-1234567890ab?region=us-east-1
	KeyName string `json:"keyName" yaml:"keyName"`
}

func (*SecretsProviderConfig) IsProvisionEnabled

func (sa *SecretsProviderConfig) IsProvisionEnabled() bool

func (*SecretsProviderConfig) KeyUrl

func (sa *SecretsProviderConfig) KeyUrl() string

type SecurityGroup

type SecurityGroup struct {
	Ingress *SecurityGroupRule `json:"ingress,omitempty" yaml:"ingress,omitempty"`
}

type SecurityGroupRule

type SecurityGroupRule struct {
	AllowOnlyCloudflare *bool     `json:"allowOnlyCloudflare,omitempty" yaml:"allowOnlyCloudflare,omitempty"`
	CidrBlocks          *[]string `json:"cidrBlocks,omitempty" yaml:"cidrBlocks,omitempty"`
	Ipv6CidrBlocks      *[]string `json:"ipv6CidrBlocks,omitempty" yaml:"ipv6CidrBlocks,omitempty"`
}

type StateStorageConfig

type StateStorageConfig struct {
	AccountConfig `json:",inline" yaml:",inline"`
	BucketName    string `json:"bucketName" yaml:"bucketName"`
	Provision     bool   `json:"provision" yaml:"provision"`
}

func (*StateStorageConfig) IsProvisionEnabled

func (sa *StateStorageConfig) IsProvisionEnabled() bool

func (*StateStorageConfig) StorageUrl

func (sa *StateStorageConfig) StorageUrl() string

type StaticSiteInput

type StaticSiteInput struct {
	TemplateConfig        `json:"templateConfig" yaml:"templateConfig"`
	api.StackConfigStatic `json:",inline" yaml:",inline"`
	StackDir              string `json:"stackDir" yaml:"stackDir"`
	StackName             string `json:"stackName" yaml:"stackName"`
}

type TemplateConfig

type TemplateConfig struct {
	AccountConfig `json:",inline" yaml:",inline"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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