# Copyright (c) 2012-2022, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, double, integer
from .validators.ecs import LAUNCH_TYPE_EC2 # noqa: F401
from .validators.ecs import LAUNCH_TYPE_FARGATE # noqa: F401
from .validators.ecs import RUNTIME_PLATFORM_CPU_CONFIGURATIONS # noqa: F401
from .validators.ecs import RUNTIME_PLATFORM_OS_FAMILY # noqa: F401
from .validators.ecs import SCHEDULING_STRATEGY_DAEMON # noqa: F401
from .validators.ecs import SCHEDULING_STRATEGY_REPLICA # noqa: F401
from .validators.ecs import (
ecs_efs_encryption_status,
ecs_proxy_type,
launch_type_validator,
placement_constraint_validator,
placement_strategy_validator,
scope_validator,
validate_ephemeral_storage_size,
validate_network_port,
validate_runtime_platform,
validate_scaling_step_size,
validate_target_capacity,
validate_transit_encryption_port,
)
[docs]class ManagedScaling(AWSProperty):
"""
`ManagedScaling <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedscaling.html>`__
"""
props: PropsDictType = {
"InstanceWarmupPeriod": (integer, False),
"MaximumScalingStepSize": (validate_scaling_step_size, False),
"MinimumScalingStepSize": (validate_scaling_step_size, False),
"Status": (str, False),
"TargetCapacity": (validate_target_capacity, False),
}
[docs]class AutoScalingGroupProvider(AWSProperty):
"""
`AutoScalingGroupProvider <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-autoscalinggroupprovider.html>`__
"""
props: PropsDictType = {
"AutoScalingGroupArn": (str, True),
"ManagedDraining": (str, False),
"ManagedScaling": (ManagedScaling, False),
"ManagedTerminationProtection": (str, False),
}
[docs]class CapacityProvider(AWSObject):
"""
`CapacityProvider <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-capacityprovider.html>`__
"""
resource_type = "AWS::ECS::CapacityProvider"
props: PropsDictType = {
"AutoScalingGroupProvider": (AutoScalingGroupProvider, True),
"Name": (str, False),
"Tags": (Tags, False),
}
[docs]class CapacityProviderStrategyItem(AWSProperty):
"""
`CapacityProviderStrategyItem <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-capacityproviderstrategyitem.html>`__
"""
props: PropsDictType = {
"Base": (integer, False),
"CapacityProvider": (str, False),
"Weight": (integer, False),
}
[docs]class ExecuteCommandLogConfiguration(AWSProperty):
"""
`ExecuteCommandLogConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-executecommandlogconfiguration.html>`__
"""
props: PropsDictType = {
"CloudWatchEncryptionEnabled": (boolean, False),
"CloudWatchLogGroupName": (str, False),
"S3BucketName": (str, False),
"S3EncryptionEnabled": (boolean, False),
"S3KeyPrefix": (str, False),
}
[docs]class ExecuteCommandConfiguration(AWSProperty):
"""
`ExecuteCommandConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-executecommandconfiguration.html>`__
"""
props: PropsDictType = {
"KmsKeyId": (str, False),
"LogConfiguration": (ExecuteCommandLogConfiguration, False),
"Logging": (str, False),
}
[docs]class ClusterConfiguration(AWSProperty):
"""
`ClusterConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-clusterconfiguration.html>`__
"""
props: PropsDictType = {
"ExecuteCommandConfiguration": (ExecuteCommandConfiguration, False),
}
[docs]class ClusterSetting(AWSProperty):
"""
`ClusterSetting <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-clustersettings.html>`__
"""
props: PropsDictType = {
"Name": (str, False),
"Value": (str, False),
}
[docs]class ServiceConnectDefaults(AWSProperty):
"""
`ServiceConnectDefaults <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-serviceconnectdefaults.html>`__
"""
props: PropsDictType = {
"Namespace": (str, False),
}
[docs]class Cluster(AWSObject):
"""
`Cluster <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html>`__
"""
resource_type = "AWS::ECS::Cluster"
props: PropsDictType = {
"CapacityProviders": ([str], False),
"ClusterName": (str, False),
"ClusterSettings": ([ClusterSetting], False),
"Configuration": (ClusterConfiguration, False),
"DefaultCapacityProviderStrategy": ([CapacityProviderStrategyItem], False),
"ServiceConnectDefaults": (ServiceConnectDefaults, False),
"Tags": (Tags, False),
}
[docs]class CapacityProviderStrategy(AWSProperty):
"""
`CapacityProviderStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html>`__
"""
props: PropsDictType = {
"Base": (integer, False),
"CapacityProvider": (str, True),
"Weight": (integer, False),
}
[docs]class ClusterCapacityProviderAssociations(AWSObject):
"""
`ClusterCapacityProviderAssociations <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-clustercapacityproviderassociations.html>`__
"""
resource_type = "AWS::ECS::ClusterCapacityProviderAssociations"
props: PropsDictType = {
"CapacityProviders": ([str], True),
"Cluster": (str, True),
"DefaultCapacityProviderStrategy": ([CapacityProviderStrategy], True),
}
[docs]class PrimaryTaskSet(AWSObject):
"""
`PrimaryTaskSet <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-primarytaskset.html>`__
"""
resource_type = "AWS::ECS::PrimaryTaskSet"
props: PropsDictType = {
"Cluster": (str, True),
"Service": (str, True),
"TaskSetId": (str, True),
}
[docs]class DeploymentAlarms(AWSProperty):
"""
`DeploymentAlarms <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentalarms.html>`__
"""
props: PropsDictType = {
"AlarmNames": ([str], True),
"Enable": (boolean, True),
"Rollback": (boolean, True),
}
[docs]class DeploymentCircuitBreaker(AWSProperty):
"""
`DeploymentCircuitBreaker <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentcircuitbreaker.html>`__
"""
props: PropsDictType = {
"Enable": (boolean, True),
"Rollback": (boolean, True),
}
[docs]class DeploymentConfiguration(AWSProperty):
"""
`DeploymentConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentconfiguration.html>`__
"""
props: PropsDictType = {
"Alarms": (DeploymentAlarms, False),
"DeploymentCircuitBreaker": (DeploymentCircuitBreaker, False),
"MaximumPercent": (integer, False),
"MinimumHealthyPercent": (integer, False),
}
[docs]class DeploymentController(AWSProperty):
"""
`DeploymentController <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-deploymentcontroller.html>`__
"""
props: PropsDictType = {
"Type": (str, False),
}
[docs]class LoadBalancer(AWSProperty):
"""
`LoadBalancer <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-loadbalancer.html>`__
"""
props: PropsDictType = {
"ContainerName": (str, False),
"ContainerPort": (validate_network_port, False),
"LoadBalancerName": (str, False),
"TargetGroupArn": (str, False),
}
[docs]class AwsvpcConfiguration(AWSProperty):
"""
`AwsvpcConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-awsvpcconfiguration.html>`__
"""
props: PropsDictType = {
"AssignPublicIp": (str, False),
"SecurityGroups": ([str], False),
"Subnets": ([str], False),
}
[docs]class NetworkConfiguration(AWSProperty):
"""
`NetworkConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-networkconfiguration.html>`__
"""
props: PropsDictType = {
"AwsvpcConfiguration": (AwsvpcConfiguration, False),
}
[docs]class PlacementConstraint(AWSProperty):
"""
`PlacementConstraint <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-taskdefinitionplacementconstraint.html>`__
"""
props: PropsDictType = {
"Expression": (str, False),
"Type": (placement_constraint_validator, True),
}
[docs]class PlacementStrategy(AWSProperty):
"""
`PlacementStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-placementstrategy.html>`__
"""
props: PropsDictType = {
"Field": (str, False),
"Type": (placement_strategy_validator, True),
}
[docs]class Secret(AWSProperty):
"""
`Secret <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-secret.html>`__
"""
props: PropsDictType = {
"Name": (str, True),
"ValueFrom": (str, True),
}
[docs]class LogConfiguration(AWSProperty):
"""
`LogConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-logconfiguration.html>`__
"""
props: PropsDictType = {
"LogDriver": (str, True),
"Options": (dict, False),
"SecretOptions": ([Secret], False),
}
[docs]class ServiceConnectClientAlias(AWSProperty):
"""
`ServiceConnectClientAlias <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectclientalias.html>`__
"""
props: PropsDictType = {
"DnsName": (str, False),
"Port": (integer, True),
}
[docs]class ServiceConnectTlsCertificateAuthority(AWSProperty):
"""
`ServiceConnectTlsCertificateAuthority <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttlscertificateauthority.html>`__
"""
props: PropsDictType = {
"AwsPcaAuthorityArn": (str, False),
}
[docs]class ServiceConnectTlsConfiguration(AWSProperty):
"""
`ServiceConnectTlsConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnecttlsconfiguration.html>`__
"""
props: PropsDictType = {
"IssuerCertificateAuthority": (ServiceConnectTlsCertificateAuthority, True),
"KmsKey": (str, False),
"RoleArn": (str, False),
}
[docs]class TimeoutConfiguration(AWSProperty):
"""
`TimeoutConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-timeoutconfiguration.html>`__
"""
props: PropsDictType = {
"IdleTimeoutSeconds": (integer, False),
"PerRequestTimeoutSeconds": (integer, False),
}
[docs]class ServiceConnectService(AWSProperty):
"""
`ServiceConnectService <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectservice.html>`__
"""
props: PropsDictType = {
"ClientAliases": ([ServiceConnectClientAlias], False),
"DiscoveryName": (str, False),
"IngressPortOverride": (integer, False),
"PortName": (str, True),
"Timeout": (TimeoutConfiguration, False),
"Tls": (ServiceConnectTlsConfiguration, False),
}
[docs]class ServiceConnectConfiguration(AWSProperty):
"""
`ServiceConnectConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectconfiguration.html>`__
"""
props: PropsDictType = {
"Enabled": (boolean, True),
"LogConfiguration": (LogConfiguration, False),
"Namespace": (str, False),
"Services": ([ServiceConnectService], False),
}
[docs]class ServiceRegistry(AWSProperty):
"""
`ServiceRegistry <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskset-serviceregistry.html>`__
"""
props: PropsDictType = {
"ContainerName": (str, False),
"ContainerPort": (integer, False),
"Port": (integer, False),
"RegistryArn": (str, False),
}
[docs]class ServiceManagedEBSVolumeConfiguration(AWSProperty):
"""
`ServiceManagedEBSVolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-servicemanagedebsvolumeconfiguration.html>`__
"""
props: PropsDictType = {
"Encrypted": (boolean, False),
"FilesystemType": (str, False),
"Iops": (integer, False),
"KmsKeyId": (str, False),
"RoleArn": (str, True),
"SizeInGiB": (integer, False),
"SnapshotId": (str, False),
"TagSpecifications": ([EBSTagSpecification], False),
"Throughput": (integer, False),
"VolumeType": (str, False),
}
[docs]class ServiceVolumeConfiguration(AWSProperty):
"""
`ServiceVolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-servicevolumeconfiguration.html>`__
"""
props: PropsDictType = {
"ManagedEBSVolume": (ServiceManagedEBSVolumeConfiguration, False),
"Name": (str, True),
}
[docs]class Service(AWSObject):
"""
`Service <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html>`__
"""
resource_type = "AWS::ECS::Service"
props: PropsDictType = {
"CapacityProviderStrategy": ([CapacityProviderStrategyItem], False),
"Cluster": (str, False),
"DeploymentConfiguration": (DeploymentConfiguration, False),
"DeploymentController": (DeploymentController, False),
"DesiredCount": (integer, False),
"EnableECSManagedTags": (boolean, False),
"EnableExecuteCommand": (boolean, False),
"HealthCheckGracePeriodSeconds": (integer, False),
"LaunchType": (launch_type_validator, False),
"LoadBalancers": ([LoadBalancer], False),
"NetworkConfiguration": (NetworkConfiguration, False),
"PlacementConstraints": ([PlacementConstraint], False),
"PlacementStrategies": ([PlacementStrategy], False),
"PlatformVersion": (str, False),
"PropagateTags": (str, False),
"Role": (str, False),
"SchedulingStrategy": (str, False),
"ServiceConnectConfiguration": (ServiceConnectConfiguration, False),
"ServiceName": (str, False),
"ServiceRegistries": ([ServiceRegistry], False),
"Tags": (Tags, False),
"TaskDefinition": (str, False),
"VolumeConfigurations": ([ServiceVolumeConfiguration], False),
}
[docs]class ContainerDependency(AWSProperty):
"""
`ContainerDependency <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdependency.html>`__
"""
props: PropsDictType = {
"Condition": (str, False),
"ContainerName": (str, False),
}
[docs]class Environment(AWSProperty):
"""
`Environment <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-keyvaluepair.html>`__
"""
props: PropsDictType = {
"Name": (str, False),
"Value": (str, False),
}
[docs]class EnvironmentFile(AWSProperty):
"""
`EnvironmentFile <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-environmentfile.html>`__
"""
props: PropsDictType = {
"Type": (str, False),
"Value": (str, False),
}
[docs]class FirelensConfiguration(AWSProperty):
"""
`FirelensConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-firelensconfiguration.html>`__
"""
props: PropsDictType = {
"Options": (dict, False),
"Type": (str, False),
}
[docs]class HealthCheck(AWSProperty):
"""
`HealthCheck <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html>`__
"""
props: PropsDictType = {
"Command": ([str], False),
"Interval": (integer, False),
"Retries": (integer, False),
"StartPeriod": (integer, False),
"Timeout": (integer, False),
}
[docs]class HostEntry(AWSProperty):
"""
`HostEntry <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-hostentry.html>`__
"""
props: PropsDictType = {
"Hostname": (str, False),
"IpAddress": (str, False),
}
[docs]class Device(AWSProperty):
"""
`Device <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-device.html>`__
"""
props: PropsDictType = {
"ContainerPath": (str, False),
"HostPath": (str, False),
"Permissions": ([str], False),
}
[docs]class KernelCapabilities(AWSProperty):
"""
`KernelCapabilities <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-kernelcapabilities.html>`__
"""
props: PropsDictType = {
"Add": ([str], False),
"Drop": ([str], False),
}
[docs]class Tmpfs(AWSProperty):
"""
`Tmpfs <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-tmpfs.html>`__
"""
props: PropsDictType = {
"ContainerPath": (str, False),
"MountOptions": ([str], False),
"Size": (integer, True),
}
[docs]class LinuxParameters(AWSProperty):
"""
`LinuxParameters <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-linuxparameters.html>`__
"""
props: PropsDictType = {
"Capabilities": (KernelCapabilities, False),
"Devices": ([Device], False),
"InitProcessEnabled": (boolean, False),
"MaxSwap": (integer, False),
"SharedMemorySize": (integer, False),
"Swappiness": (integer, False),
"Tmpfs": ([Tmpfs], False),
}
[docs]class MountPoint(AWSProperty):
"""
`MountPoint <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-mountpoint.html>`__
"""
props: PropsDictType = {
"ContainerPath": (str, False),
"ReadOnly": (boolean, False),
"SourceVolume": (str, False),
}
[docs]class PortMapping(AWSProperty):
"""
`PortMapping <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-portmapping.html>`__
"""
props: PropsDictType = {
"AppProtocol": (str, False),
"ContainerPort": (validate_network_port, False),
"ContainerPortRange": (str, False),
"HostPort": (validate_network_port, False),
"Name": (str, False),
"Protocol": (str, False),
}
[docs]class RepositoryCredentials(AWSProperty):
"""
`RepositoryCredentials <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-repositorycredentials.html>`__
"""
props: PropsDictType = {
"CredentialsParameter": (str, False),
}
[docs]class ResourceRequirement(AWSProperty):
"""
`ResourceRequirement <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-resourcerequirement.html>`__
"""
props: PropsDictType = {
"Type": (str, True),
"Value": (str, True),
}
[docs]class SystemControl(AWSProperty):
"""
`SystemControl <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-systemcontrol.html>`__
"""
props: PropsDictType = {
"Namespace": (str, False),
"Value": (str, False),
}
[docs]class Ulimit(AWSProperty):
"""
`Ulimit <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-ulimit.html>`__
"""
props: PropsDictType = {
"HardLimit": (integer, True),
"Name": (str, True),
"SoftLimit": (integer, True),
}
[docs]class VolumesFrom(AWSProperty):
"""
`VolumesFrom <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volumefrom.html>`__
"""
props: PropsDictType = {
"ReadOnly": (boolean, False),
"SourceContainer": (str, False),
}
[docs]class ContainerDefinition(AWSProperty):
"""
`ContainerDefinition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinition.html>`__
"""
props: PropsDictType = {
"Command": ([str], False),
"Cpu": (integer, False),
"CredentialSpecs": ([str], False),
"DependsOn": ([ContainerDependency], False),
"DisableNetworking": (boolean, False),
"DnsSearchDomains": ([str], False),
"DnsServers": ([str], False),
"DockerLabels": (dict, False),
"DockerSecurityOptions": ([str], False),
"EntryPoint": ([str], False),
"Environment": ([Environment], False),
"EnvironmentFiles": ([EnvironmentFile], False),
"Essential": (boolean, False),
"ExtraHosts": ([HostEntry], False),
"FirelensConfiguration": (FirelensConfiguration, False),
"HealthCheck": (HealthCheck, False),
"Hostname": (str, False),
"Image": (str, True),
"Interactive": (boolean, False),
"Links": ([str], False),
"LinuxParameters": (LinuxParameters, False),
"LogConfiguration": (LogConfiguration, False),
"Memory": (integer, False),
"MemoryReservation": (integer, False),
"MountPoints": ([MountPoint], False),
"Name": (str, True),
"PortMappings": ([PortMapping], False),
"Privileged": (boolean, False),
"PseudoTerminal": (boolean, False),
"ReadonlyRootFilesystem": (boolean, False),
"RepositoryCredentials": (RepositoryCredentials, False),
"ResourceRequirements": ([ResourceRequirement], False),
"Secrets": ([Secret], False),
"StartTimeout": (integer, False),
"StopTimeout": (integer, False),
"SystemControls": ([SystemControl], False),
"Ulimits": ([Ulimit], False),
"User": (str, False),
"VolumesFrom": ([VolumesFrom], False),
"WorkingDirectory": (str, False),
}
[docs]class EphemeralStorage(AWSProperty):
"""
`EphemeralStorage <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-ephemeralstorage.html>`__
"""
props: PropsDictType = {
"SizeInGiB": (validate_ephemeral_storage_size, False),
}
[docs]class InferenceAccelerator(AWSProperty):
"""
`InferenceAccelerator <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-inferenceaccelerator.html>`__
"""
props: PropsDictType = {
"DeviceName": (str, False),
"DeviceType": (str, False),
}
[docs]class ProxyConfiguration(AWSProperty):
"""
`ProxyConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-proxyconfiguration.html>`__
"""
props: PropsDictType = {
"ContainerName": (str, True),
"ProxyConfigurationProperties": (list, False),
"Type": (ecs_proxy_type, False),
}
[docs]class DockerVolumeConfiguration(AWSProperty):
"""
`DockerVolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-dockervolumeconfiguration.html>`__
"""
props: PropsDictType = {
"Autoprovision": (boolean, False),
"Driver": (str, False),
"DriverOpts": (dict, False),
"Labels": (dict, False),
"Scope": (scope_validator, False),
}
[docs]class AuthorizationConfig(AWSProperty):
"""
`AuthorizationConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-authorizationconfig.html>`__
"""
props: PropsDictType = {
"AccessPointId": (str, False),
"IAM": (str, False),
}
[docs]class EFSVolumeConfiguration(AWSProperty):
"""
`EFSVolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-efsvolumeconfiguration.html>`__
"""
props: PropsDictType = {
"AuthorizationConfig": (AuthorizationConfig, False),
"FilesystemId": (str, True),
"RootDirectory": (str, False),
"TransitEncryption": (ecs_efs_encryption_status, False),
"TransitEncryptionPort": (validate_transit_encryption_port, False),
}
[docs]class FSxAuthorizationConfig(AWSProperty):
"""
`FSxAuthorizationConfig <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-fsxauthorizationconfig.html>`__
"""
props: PropsDictType = {
"CredentialsParameter": (str, True),
"Domain": (str, True),
}
[docs]class FSxWindowsFileServerVolumeConfiguration(AWSProperty):
"""
`FSxWindowsFileServerVolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-fsxwindowsfileservervolumeconfiguration.html>`__
"""
props: PropsDictType = {
"AuthorizationConfig": (FSxAuthorizationConfig, False),
"FileSystemId": (str, True),
"RootDirectory": (str, True),
}
[docs]class Host(AWSProperty):
"""
`Host <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-hostvolumeproperties.html>`__
"""
props: PropsDictType = {
"SourcePath": (str, False),
}
[docs]class Volume(AWSProperty):
"""
`Volume <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-volume.html>`__
"""
props: PropsDictType = {
"ConfiguredAtLaunch": (boolean, False),
"DockerVolumeConfiguration": (DockerVolumeConfiguration, False),
"EFSVolumeConfiguration": (EFSVolumeConfiguration, False),
"FSxWindowsFileServerVolumeConfiguration": (
FSxWindowsFileServerVolumeConfiguration,
False,
),
"Host": (Host, False),
"Name": (str, False),
}
[docs]class TaskDefinition(AWSObject):
"""
`TaskDefinition <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html>`__
"""
resource_type = "AWS::ECS::TaskDefinition"
props: PropsDictType = {
"ContainerDefinitions": ([ContainerDefinition], False),
"Cpu": (str, False),
"EphemeralStorage": (EphemeralStorage, False),
"ExecutionRoleArn": (str, False),
"Family": (str, False),
"InferenceAccelerators": ([InferenceAccelerator], False),
"IpcMode": (str, False),
"Memory": (str, False),
"NetworkMode": (str, False),
"PidMode": (str, False),
"PlacementConstraints": ([PlacementConstraint], False),
"ProxyConfiguration": (ProxyConfiguration, False),
"RequiresCompatibilities": ([str], False),
"RuntimePlatform": (RuntimePlatform, False),
"Tags": (Tags, False),
"TaskRoleArn": (str, False),
"Volumes": ([Volume], False),
}
[docs]class Scale(AWSProperty):
"""
`Scale <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskset-scale.html>`__
"""
props: PropsDictType = {
"Unit": (str, False),
"Value": (double, False),
}
[docs]class TaskSet(AWSObject):
"""
`TaskSet <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskset.html>`__
"""
resource_type = "AWS::ECS::TaskSet"
props: PropsDictType = {
"Cluster": (str, True),
"ExternalId": (str, False),
"LaunchType": (str, False),
"LoadBalancers": ([LoadBalancer], False),
"NetworkConfiguration": (NetworkConfiguration, False),
"PlatformVersion": (str, False),
"Scale": (Scale, False),
"Service": (str, True),
"ServiceRegistries": ([ServiceRegistry], False),
"Tags": (Tags, False),
"TaskDefinition": (str, True),
}