package ecs

import ecs "github.com/janduursma/pulumi-component-aws-ecs"

Package ecs is a package that's designed to simplify the creation of AWS ECS (Elastic Container Service) resources using Pulumi.

To get started with this package, import it like so:

import "github.com/janduursma/pulumi-component-aws-ecs"

Then, create resources by calling functions provided by the package.

Descriptions of the provided functions and their parameters are available in the function doc comments in this package.

Example usage of these functions can be found in the /examples directory at the root of this package repository. These examples provide full, working demonstrations of creating various AWS ECS resources using this package.

For more information, consult the package README or the /examples directory.

Index

Functions

func NewAccountSettingsDefault

func NewAccountSettingsDefault(ctx *pulumi.Context, accountSettingsDefault []AccountSettingDefaultConfig, opts ...pulumi.ResourceOption) ([]*ecs.AccountSettingDefault, error)

NewAccountSettingsDefault creates new AWS ECS default account settings.

func NewCapacityProviders

func NewCapacityProviders(ctx *pulumi.Context, capacityProviders []CapacityProviderConfig, opts ...pulumi.ResourceOption) error

NewCapacityProviders creates new ECS capacity providers.

func NewCluster

func NewCluster(ctx *pulumi.Context, config ClusterConfig, opts ...pulumi.ResourceOption) (*clusterOutput, error)

NewCluster creates a new ECS cluster.

func NewClusterCapacityProvider

func NewClusterCapacityProvider(ctx *pulumi.Context, config ClusterCapacityProviderConfig, opts ...pulumi.ResourceOption) error

NewClusterCapacityProvider creates a new capacity provider for an AWS ECS cluster.

func NewService

func NewService(ctx *pulumi.Context, config ServiceConfig, opts ...pulumi.ResourceOption) (*serviceOutput, error)

NewService creates a new AWS ECS service.

func NewTaskDefinition

func NewTaskDefinition(ctx *pulumi.Context, config TaskDefinitionConfig, opts ...pulumi.ResourceOption) (*taskDefinitionOutput, error)

NewTaskDefinition creates a new AWS ECS task definition.

func NewTaskSets

func NewTaskSets(ctx *pulumi.Context, taskSets []TaskSetConfig, opts ...pulumi.ResourceOption) ([]*taskSetOutput, error)

NewTaskSets creates new AWS ECS task sets.

Types

type AccountSettingDefaultConfig

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

AccountSettingDefaultConfig defines arguments for AWS ECS account settings.

type CapacityProviderConfig

type CapacityProviderConfig struct {
	AutoscalingGroupProvider struct {
		AutoscalingGroupArn string  `json:"autoscalingGroupArn"`
		ManagedDraining     *string `json:"managedDraining,omitempty"`
		ManagedScaling      *struct {
			InstanceWarmupPeriod   *int    `json:"instanceWarmupPeriod,omitempty"`
			MaximumScalingStepSize *int    `json:"maximumScalingStepSize,omitempty"`
			MinimumScalingStepSize *int    `json:"minimumScalingStepSize,omitempty"`
			Status                 *string `json:"status,omitempty"`
			TargetCapacity         *int    `json:"targetCapacity,omitempty"`
		} `json:"managedScaling"`
		ManagedTerminationProtection *string `json:"managedTerminationProtection,omitempty"`
	} `json:"autoscalingGroupProvider"`
	Name string            `json:"name"`
	Tags map[string]string `json:"tags,omitempty"`
}

CapacityProviderConfig defines arguments for AWS ECS capacity provider.

type ClusterCapacityProviderConfig

type ClusterCapacityProviderConfig struct {
	CapacityProviders                 []string `json:"capacityProviders,omitempty"`
	ClusterName                       string   `json:"clusterName"`
	DefaultCapacityProviderStrategies []struct {
		Base             *int   `json:"base,omitempty"`
		CapacityProvider string `json:"capacityProvider"`
		Weight           *int   `json:"weight,omitempty"`
	} `json:"defaultCapacityProviderStrategies"`
}

ClusterCapacityProviderConfig defines arguments for setting up capacity providers for an AWS ECS cluster.

type ClusterConfig

type ClusterConfig struct {
	Configuration *struct {
		ExecuteCommand struct {
			KmsKeyID         *string `json:"kmsKeyId,omitempty"`
			LogConfiguration *struct {
				CloudWatchEncryptionEnabled *bool   `json:"cloudWatchEncryptionEnabled,omitempty"`
				CloudWatchLogGroupName      *string `json:"cloudWatchLogGroupName,omitempty"`
				S3BucketEncryptionEnabled   *bool   `json:"s3BucketEncryptionEnabled,omitempty"`
				S3BucketName                *string `json:"s3BucketName,omitempty"`
				S3KeyPrefix                 *string `json:"s3KeyPrefix,omitempty"`
			} `json:"logConfiguration"`
			Logging *string `json:"logging,omitempty"`
		} `json:"executeCommand"`
	} `json:"configuration"`
	Name                   string `json:"name"`
	ServiceConnectDefaults *struct {
		Namespace string `json:"namespace"`
	} `json:"serviceConnectDefaults"`
	Settings []struct {
		Name  string `json:"name"`
		Value string `json:"value"`
	} `json:"settings"`
	Tags map[string]string `json:"tags,omitempty"`
}

ClusterConfig defines arguments for creating an AWS ECS cluster.

type ServiceConfig

type ServiceConfig struct {
	Alarms *struct {
		AlarmNames []string `json:"alarmNames"`
		Enable     bool     `json:"enable"`
		Rollback   bool     `json:"rollback"`
	} `json:"alarms"`
	CapacityProviderStrategies []struct {
		CapacityProvider string `json:"name"`
		Base             *int   `json:"base,omitempty"`
		Weight           *int   `json:"weight,omitempty"`
	} `json:"capacityProviderStrategies"`
	ClusterArn               string `json:"clusterArn"`
	DeploymentCircuitBreaker *struct {
		Enable   bool `json:"enable"`
		Rollback bool `json:"rollback"`
	} `json:"deploymentCircuitBreaker"`
	DeploymentController *struct {
		Type *string `json:"type,omitempty"`
	} `json:"deploymentController"`
	DeploymentMaximumPercent        *int    `json:"deploymentMaximumPercent,omitempty"`
	DeploymentMinimumHealthyPercent *int    `json:"deploymentMinimumHealthyPercent,omitempty"`
	DesiredCount                    *int    `json:"desiredCount,omitempty"`
	EnableEcsManagedTags            *bool   `json:"enableEcsManagedTags,omitempty"`
	EnableExecuteCommand            *bool   `json:"enableExecuteCommand,omitempty"`
	ForceNewDeployment              *bool   `json:"forceNewDeployment,omitempty"`
	HealthCheckGracePeriodSeconds   *int    `json:"healthCheckGracePeriodSeconds,omitempty"`
	IamRole                         *string `json:"iamRole,omitempty"`
	LaunchType                      *string `json:"launchType,omitempty"`
	LoadBalancers                   []struct {
		ContainerName  string  `json:"containerName"`
		ContainerPort  int     `json:"containerPort"`
		ElbName        *string `json:"elbName,omitempty"`
		TargetGroupArn *string `json:"targetGroupArn,omitempty"`
	} `json:"loadBalancers"`
	Name                 string `json:"name"`
	NetworkConfiguration *struct {
		AssignPublicIP *bool    `json:"assignPublicIp,omitempty"`
		SecurityGroups []string `json:"securityGroups,omitempty"`
		Subnets        []string `json:"subnets"`
	} `json:"networkConfiguration"`
	OrderedPlacementStrategies []struct {
		Field *string `json:"field,omitempty"`
		Type  string  `json:"type"`
	} `json:"orderedPlacementStrategies"`
	PlacementConstraints []struct {
		Expression *string `json:"expression,omitempty"`
		Type       string  `json:"type"`
	} `json:"placementConstraints"`
	PlatformVersion             *string `json:"platformVersion,omitempty"`
	PropagateTags               *string `json:"propagateTags,omitempty"`
	SchedulingStrategy          *string `json:"schedulingStrategy,omitempty"`
	ServiceConnectConfiguration *struct {
		Enabled          bool `json:"enabled"`
		LogConfiguration *struct {
			LogDriver     string            `json:"logDriver"`
			Options       map[string]string `json:"options,omitempty"`
			SecretOptions []struct {
				Name      string `json:"name"`
				ValueFrom string `json:"valueFrom"`
			} `json:"secretOptions"`
		} `json:"logConfiguration"`
		Namespace *string `json:"namespace,omitempty"`
		Services  []struct {
			ClientAlias []struct {
				Port    int    `json:"port"`
				DNSName string `json:"dnsName,omitempty"`
			} `json:"clientAlias"`
			DiscoveryName       *string `json:"discoveryName,omitempty"`
			IngressPortOverride *int    `json:"ingressPortOverride,omitempty"`
			PortName            string  `json:"portName"`
			Timeout             *struct {
				IdleTimeoutSeconds       *int `json:"idleTimeoutSeconds,omitempty"`
				PerRequestTimeoutSeconds *int `json:"perRequestTimeoutSeconds,omitempty"`
			} `json:"timeout"`
			TLS *struct {
				IssuerCertAuthority struct {
					AwsPcaAuthorityArn string `json:"awsPcaAuthorityArn"`
				} `json:"issuerCertAuthority"`
				KmsKey  *string `json:"kmsKey,omitempty"`
				RoleArn *string `json:"roleArn,omitempty"`
			} `json:"tls"`
		} `json:"services"`
	} `json:"serviceConnectConfiguration"`
	ServiceRegistry *struct {
		ContainerName *string `json:"containerName,omitempty"`
		ContainerPort *int    `json:"containerPort,omitempty"`
		Port          *int    `json:"port,omitempty"`
		RegistryArn   string  `json:"registryArn"`
	} `json:"serviceRegistry"`
	ServiceVolumeConfiguration *struct {
		ManagedEBSVolume struct {
			Encrypted      *bool   `json:"encrypted,omitempty"`
			FileSystemType *string `json:"fileSystemType,omitempty"`
			Iops           *int    `json:"iops,omitempty"`
			KmsKeyID       *string `json:"kmsKeyId,omitempty"`
			RoleArn        string  `json:"roleArn"`
			SizeInGB       *int    `json:"sizeInGb,omitempty"`
			SnapshotID     *string `json:"snapshotId,omitempty"`
			Throughput     *string `json:"throughput,omitempty"`
			VolumeType     *string `json:"volumeType,omitempty"`
		} `json:"managedEBSVolume"`
		Name string `json:"name"`
	} `json:"serviceVolumeConfiguration"`
	Tags               map[string]string `json:"tags"`
	TaskDefinition     *string           `json:"taskDefinition,omitempty"`
	Triggers           map[string]string `json:"triggers"`
	WaitForSteadyState *bool             `json:"waitForSteadyState,omitempty"`
}

ServiceConfig defines arguments for creating an AWS ECS service.

type TaskDefinitionConfig

type TaskDefinitionConfig struct {
	ContainerDefinitions []map[string]interface{} `json:"containerDefinitions"`
	CPU                  *string                  `json:"cpu,omitempty"`
	EphemeralStorage     *struct {
		SizeInGB int `json:"sizeInGb"`
	} `json:"ephemeralStorage"`
	ExecutionRoleArn      *string `json:"executionRoleArn,omitempty"`
	InferenceAccelerators []struct {
		DeviceName string `json:"deviceName"`
		DeviceType string `json:"deviceType"`
	} `json:"inferenceAccelerators"`
	IpcMode              *string `json:"ipcMode,omitempty"`
	Memory               *string `json:"memory,omitempty"`
	Name                 string  `json:"name"`
	NetworkMode          *string `json:"networkMode,omitempty"`
	PidMode              *string `json:"pidMode,omitempty"`
	PlacementConstraints []struct {
		Expression *string `json:"expression,omitempty"`
		Type       string  `json:"type"`
	} `json:"placementConstraints"`
	ProxyConfiguration *struct {
		ContainerName string            `json:"containerName"`
		Properties    map[string]string `json:"properties"`
		Type          *string           `json:"type,omitempty"`
	} `json:"proxyConfiguration"`
	RequiresCompatibilities []string `json:"requiresCompatibilities"`
	RuntimePlatform         *struct {
		CPUArchitecture       *string `json:"cpuArchitecture,omitempty"`
		OperatingSystemFamily *string `json:"operatingSystemFamily,omitempty"`
	} `json:"runtimePlatform"`
	SkipDestroy *bool             `json:"skipDestroy,omitempty"`
	Tags        map[string]string `json:"tags"`
	TaskRoleArn *string           `json:"taskRoleArn,omitempty"`
	TrackLatest *bool             `json:"trackLatest,omitempty"`
	Volumes     []struct {
		ConfigureAtLaunch         *bool `json:"configureAtLaunch,omitempty"`
		DockerVolumeConfiguration *struct {
			Autoprovision *bool             `json:"autoprovision,omitempty"`
			Driver        *string           `json:"driver,omitempty"`
			DriverOpts    map[string]string `json:"driverOpts"`
			Labels        map[string]string `json:"labels"`
			Scope         *string           `json:"scope,omitempty"`
		} `json:"dockerVolumeConfiguration"`
		EfsVolumeConfiguration *struct {
			AuthorizationConfig *struct {
				AccessPointID *string `json:"accessPointId,omitempty"`
				Iam           *string `json:"iam,omitempty"`
			} `json:"authorizationConfig"`
			FileSystemID          string  `json:"fileSystemId"`
			RootDirectory         *string `json:"rootDirectory,omitempty"`
			TransitEncryption     *string `json:"transitEncryption,omitempty"`
			TransitEncryptionPort *int    `json:"transitEncryptionPort,omitempty"`
		} `json:"efsVolumeConfiguration"`
		FsxWindowsFileServerVolumeConfiguration *struct {
			AuthorizationConfig struct {
				CredentialsParameter string `json:"credentialsParameter"`
				Domain               string `json:"domain"`
			}
			FileSystemID  string `json:"fileSystemId"`
			RootDirectory string `json:"rootDirectory"`
		} `json:"fsxWindowsFileServerVolumeConfiguration"`
		HostPath *string `json:"hostPath,omitempty"`
		Name     string  `json:"name"`
	} `json:"volumes"`
}

TaskDefinitionConfig defines arguments for creating an AWS ECS task definition.

type TaskSetConfig

type TaskSetConfig struct {
	CapacityProviderStrategies []struct {
		Base             *int   `json:"base,omitempty"`
		CapacityProvider string `json:"capacityProvider"`
		Weight           int    `json:"weight"`
	} `json:"capacityProviderStrategies"`
	Cluster       string  `json:"cluster"`
	ExternalID    *string `json:"externalId,omitempty"`
	ForceDelete   *bool   `json:"forceDelete,omitempty"`
	LaunchType    *string `json:"launchType,omitempty"`
	LoadBalancers []struct {
		ContainerName    string  `json:"containerName"`
		ContainerPort    *int    `json:"containerPort,omitempty"`
		LoadBalancerName *string `json:"loadBalancerName,omitempty"`
		TargetGroupArn   *string `json:"targetGroupArn,omitempty"`
	} `json:"loadBalancers"`
	Name                 string `json:"name"`
	NetworkConfiguration *struct {
		AssignPublicIP *bool    `json:"assignPublicIp,omitempty"`
		SecurityGroups []string `json:"securityGroups"`
		Subnets        []string `json:"subnets"`
	} `json:"networkConfiguration"`
	PlatformVersion *string `json:"platformVersion,omitempty"`
	Scale           *struct {
		Unit  *string  `json:"unit,omitempty"`
		Value *float64 `json:"value,omitempty"`
	} `json:"scale"`
	Service           string `json:"service"`
	ServiceRegistries *struct {
		ContainerName *string `json:"containerName,omitempty"`
		ContainerPort *int    `json:"containerPort,omitempty"`
		Port          *int    `json:"port,omitempty"`
		RegistryArn   string  `json:"registryArn"`
	} `json:"serviceRegistries"`
	Tags                   map[string]string `json:"tags"`
	TaskDefinition         string            `json:"taskDefinition"`
	WaitUntilStable        *bool             `json:"waitUntilStable,omitempty"`
	WaitUntilStableTimeout *string           `json:"waitUntilStableTimeout,omitempty"`
}

TaskSetConfig defines arguments for creating an AWS ECS task set.

Directories

examples/AccountSettingsDefault
examples/CapacityProviders
examples/Cluster
examples/ClusterCapacityProvider
examples/Service
examples/TaskDefinition
examples/TaskSets