aws-cdk-lib 2.218.0__py3-none-any.whl → 2.220.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (65) hide show
  1. aws_cdk/__init__.py +31 -36
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.218.0.jsii.tgz → aws-cdk-lib@2.220.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_amazonmq/__init__.py +98 -87
  5. aws_cdk/aws_apigateway/__init__.py +39 -0
  6. aws_cdk/aws_applicationsignals/__init__.py +450 -2
  7. aws_cdk/aws_arcregionswitch/__init__.py +8 -0
  8. aws_cdk/aws_backup/__init__.py +29 -0
  9. aws_cdk/aws_batch/__init__.py +109 -7
  10. aws_cdk/aws_bcmdataexports/__init__.py +9 -0
  11. aws_cdk/aws_bedrock/__init__.py +384 -1
  12. aws_cdk/aws_bedrockagentcore/__init__.py +7862 -1568
  13. aws_cdk/aws_cloudfront/experimental/__init__.py +4 -0
  14. aws_cdk/aws_cloudfront_origins/__init__.py +87 -6
  15. aws_cdk/aws_cloudwatch/__init__.py +5 -5
  16. aws_cdk/aws_codebuild/__init__.py +339 -62
  17. aws_cdk/aws_cognito/__init__.py +6 -4
  18. aws_cdk/aws_connect/__init__.py +9 -9
  19. aws_cdk/aws_cur/__init__.py +5 -3
  20. aws_cdk/aws_datasync/__init__.py +44 -22
  21. aws_cdk/aws_datazone/__init__.py +35 -33
  22. aws_cdk/aws_dax/__init__.py +12 -3
  23. aws_cdk/aws_dms/__init__.py +3 -5
  24. aws_cdk/aws_ec2/__init__.py +2721 -30
  25. aws_cdk/aws_ecs/__init__.py +2900 -90
  26. aws_cdk/aws_eks/__init__.py +114 -9
  27. aws_cdk/aws_entityresolution/__init__.py +18 -0
  28. aws_cdk/aws_fsx/__init__.py +4 -4
  29. aws_cdk/aws_greengrassv2/__init__.py +29 -0
  30. aws_cdk/aws_imagebuilder/__init__.py +397 -0
  31. aws_cdk/aws_iotsitewise/__init__.py +136 -80
  32. aws_cdk/aws_kinesis/__init__.py +95 -4
  33. aws_cdk/aws_lambda/__init__.py +43 -0
  34. aws_cdk/aws_lightsail/__init__.py +584 -0
  35. aws_cdk/aws_logs/__init__.py +57 -0
  36. aws_cdk/aws_lookoutmetrics/__init__.py +14 -2
  37. aws_cdk/aws_m2/__init__.py +59 -13
  38. aws_cdk/aws_medialive/__init__.py +108 -0
  39. aws_cdk/aws_msk/__init__.py +4 -2
  40. aws_cdk/aws_mwaa/__init__.py +5 -5
  41. aws_cdk/aws_neptune/__init__.py +133 -70
  42. aws_cdk/aws_networkfirewall/__init__.py +6 -2
  43. aws_cdk/aws_networkmanager/__init__.py +29 -0
  44. aws_cdk/aws_observabilityadmin/__init__.py +1227 -83
  45. aws_cdk/aws_omics/__init__.py +7 -1
  46. aws_cdk/aws_opensearchservice/__init__.py +64 -0
  47. aws_cdk/aws_opsworkscm/__init__.py +0 -29
  48. aws_cdk/aws_pcs/__init__.py +224 -33
  49. aws_cdk/aws_pinpoint/__init__.py +58 -0
  50. aws_cdk/aws_quicksight/__init__.py +118 -0
  51. aws_cdk/aws_rds/__init__.py +62 -37
  52. aws_cdk/aws_refactorspaces/__init__.py +18 -6
  53. aws_cdk/aws_route53/__init__.py +138 -8
  54. aws_cdk/aws_s3/__init__.py +29 -2
  55. aws_cdk/aws_s3objectlambda/__init__.py +44 -12
  56. aws_cdk/aws_servicecatalog/__init__.py +103 -106
  57. aws_cdk/aws_smsvoice/__init__.py +319 -0
  58. aws_cdk/aws_ssmquicksetup/__init__.py +3 -3
  59. aws_cdk/aws_synthetics/__init__.py +21 -1
  60. {aws_cdk_lib-2.218.0.dist-info → aws_cdk_lib-2.220.0.dist-info}/METADATA +2 -2
  61. {aws_cdk_lib-2.218.0.dist-info → aws_cdk_lib-2.220.0.dist-info}/RECORD +65 -65
  62. {aws_cdk_lib-2.218.0.dist-info → aws_cdk_lib-2.220.0.dist-info}/LICENSE +0 -0
  63. {aws_cdk_lib-2.218.0.dist-info → aws_cdk_lib-2.220.0.dist-info}/NOTICE +0 -0
  64. {aws_cdk_lib-2.218.0.dist-info → aws_cdk_lib-2.220.0.dist-info}/WHEEL +0 -0
  65. {aws_cdk_lib-2.218.0.dist-info → aws_cdk_lib-2.220.0.dist-info}/top_level.txt +0 -0
@@ -1696,6 +1696,108 @@ ecs.Ec2Service(self, "EC2Service",
1696
1696
  )
1697
1697
  ```
1698
1698
 
1699
+ ### Managed Instances Capacity Providers
1700
+
1701
+ Managed Instances Capacity Providers allow you to use AWS-managed EC2 instances for your ECS tasks while providing more control over instance selection than standard Fargate. AWS handles the instance lifecycle, patching, and maintenance while you can specify detailed instance requirements.
1702
+
1703
+ To create a Managed Instances Capacity Provider, you need to specify the required EC2 instance profile, and networking configuration. You can also define detailed instance requirements to control which types of instances are used for your workloads.
1704
+
1705
+ ```python
1706
+ # vpc: ec2.Vpc
1707
+ # infrastructure_role: iam.Role
1708
+ # instance_profile: iam.InstanceProfile
1709
+
1710
+
1711
+ cluster = ecs.Cluster(self, "Cluster", vpc=vpc)
1712
+
1713
+ # Create a Managed Instances Capacity Provider
1714
+ mi_capacity_provider = ecs.ManagedInstancesCapacityProvider(self, "MICapacityProvider",
1715
+ infrastructure_role=infrastructure_role,
1716
+ ec2_instance_profile=instance_profile,
1717
+ subnets=vpc.private_subnets,
1718
+ security_groups=[ec2.SecurityGroup(self, "MISecurityGroup", vpc=vpc)],
1719
+ instance_requirements=ec2.InstanceRequirementsConfig(
1720
+ v_cpu_count_min=1,
1721
+ memory_min=Size.gibibytes(2),
1722
+ cpu_manufacturers=[ec2.CpuManufacturer.INTEL],
1723
+ accelerator_manufacturers=[ec2.AcceleratorManufacturer.NVIDIA]
1724
+ ),
1725
+ propagate_tags=ecs.PropagateManagedInstancesTags.CAPACITY_PROVIDER
1726
+ )
1727
+
1728
+ # Add the capacity provider to the cluster
1729
+ cluster.add_managed_instances_capacity_provider(mi_capacity_provider)
1730
+
1731
+ task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
1732
+
1733
+ task_definition.add_container("web",
1734
+ image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
1735
+ memory_reservation_mi_b=256
1736
+ )
1737
+
1738
+ ecs.Ec2Service(self, "EC2Service",
1739
+ cluster=cluster,
1740
+ task_definition=task_definition,
1741
+ min_healthy_percent=100,
1742
+ capacity_provider_strategies=[ecs.CapacityProviderStrategy(
1743
+ capacity_provider=mi_capacity_provider.capacity_provider_name,
1744
+ weight=1
1745
+ )
1746
+ ]
1747
+ )
1748
+ ```
1749
+
1750
+ You can specify detailed instance requirements to control which types of instances are used:
1751
+
1752
+ ```python
1753
+ # infrastructure_role: iam.Role
1754
+ # instance_profile: iam.InstanceProfile
1755
+ # vpc: ec2.Vpc
1756
+
1757
+
1758
+ mi_capacity_provider = ecs.ManagedInstancesCapacityProvider(self, "MICapacityProvider",
1759
+ infrastructure_role=infrastructure_role,
1760
+ ec2_instance_profile=instance_profile,
1761
+ subnets=vpc.private_subnets,
1762
+ instance_requirements=ec2.InstanceRequirementsConfig(
1763
+ # Required: CPU and memory constraints
1764
+ v_cpu_count_min=2,
1765
+ v_cpu_count_max=8,
1766
+ memory_min=Size.gibibytes(4),
1767
+ memory_max=Size.gibibytes(32),
1768
+
1769
+ # CPU preferences
1770
+ cpu_manufacturers=[ec2.CpuManufacturer.INTEL, ec2.CpuManufacturer.AMD],
1771
+ instance_generations=[ec2.InstanceGeneration.CURRENT],
1772
+
1773
+ # Instance type filtering
1774
+ allowed_instance_types=["m5.*", "c5.*"],
1775
+
1776
+ # Performance characteristics
1777
+ burstable_performance=ec2.BurstablePerformance.EXCLUDED,
1778
+ bare_metal=ec2.BareMetal.EXCLUDED,
1779
+
1780
+ # Accelerator requirements (for ML/AI workloads)
1781
+ accelerator_types=[ec2.AcceleratorType.GPU],
1782
+ accelerator_manufacturers=[ec2.AcceleratorManufacturer.NVIDIA],
1783
+ accelerator_names=[ec2.AcceleratorName.T4, ec2.AcceleratorName.V100],
1784
+ accelerator_count_min=1,
1785
+
1786
+ # Storage requirements
1787
+ local_storage=ec2.LocalStorage.REQUIRED,
1788
+ local_storage_types=[ec2.LocalStorageType.SSD],
1789
+ total_local_storage_gBMin=100,
1790
+
1791
+ # Network requirements
1792
+ network_interface_count_min=2,
1793
+ network_bandwidth_gbps_min=10,
1794
+
1795
+ # Cost optimization
1796
+ on_demand_max_price_percentage_over_lowest_price=10
1797
+ )
1798
+ )
1799
+ ```
1800
+
1699
1801
  ### Cluster Default Provider Strategy
1700
1802
 
1701
1803
  A capacity provider strategy determines whether ECS tasks are launched on EC2 instances or Fargate/Fargate Spot. It can be specified at the cluster, service, or task level, and consists of one or more capacity providers. You can specify an optional base and weight value for finer control of how tasks are launched. The `base` specifies a minimum number of tasks on one capacity provider, and the `weight`s of each capacity provider determine how tasks are distributed after `base` is satisfied.
@@ -2271,8 +2373,10 @@ from ..aws_ec2 import (
2271
2373
  IKeyPair as _IKeyPair_bc344eda,
2272
2374
  IMachineImage as _IMachineImage_0e8bd50b,
2273
2375
  ISecurityGroup as _ISecurityGroup_acf8a799,
2376
+ ISubnet as _ISubnet_d57d1229,
2274
2377
  IVpc as _IVpc_f30d5663,
2275
2378
  InstanceArchitecture as _InstanceArchitecture_7721cb36,
2379
+ InstanceRequirementsConfig as _InstanceRequirementsConfig_1b353659,
2276
2380
  InstanceType as _InstanceType_f64915b9,
2277
2381
  MachineImageConfig as _MachineImageConfig_187edaee,
2278
2382
  SubnetSelection as _SubnetSelection_e57d76df,
@@ -2313,6 +2417,7 @@ from ..aws_elasticloadbalancingv2 import (
2313
2417
  from ..aws_iam import (
2314
2418
  Grant as _Grant_a7ae64f8,
2315
2419
  IGrantable as _IGrantable_71c4f5de,
2420
+ IInstanceProfile as _IInstanceProfile_10d5ce2c,
2316
2421
  IRole as _IRole_235f5d8e,
2317
2422
  PolicyStatement as _PolicyStatement_0fe33853,
2318
2423
  )
@@ -6757,6 +6862,8 @@ class CapacityProviderStrategy:
6757
6862
  jsii_struct_bases=[],
6758
6863
  name_mapping={
6759
6864
  "auto_scaling_group_provider": "autoScalingGroupProvider",
6865
+ "cluster_name": "clusterName",
6866
+ "managed_instances_provider": "managedInstancesProvider",
6760
6867
  "name": "name",
6761
6868
  "tags": "tags",
6762
6869
  },
@@ -6766,12 +6873,16 @@ class CfnCapacityProviderProps:
6766
6873
  self,
6767
6874
  *,
6768
6875
  auto_scaling_group_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.AutoScalingGroupProviderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6876
+ cluster_name: typing.Optional[builtins.str] = None,
6877
+ managed_instances_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.ManagedInstancesProviderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
6769
6878
  name: typing.Optional[builtins.str] = None,
6770
6879
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
6771
6880
  ) -> None:
6772
6881
  '''Properties for defining a ``CfnCapacityProvider``.
6773
6882
 
6774
6883
  :param auto_scaling_group_provider: The Auto Scaling group settings for the capacity provider.
6884
+ :param cluster_name:
6885
+ :param managed_instances_provider: The configuration for the Amazon ECS Managed Instances provider. This includes the infrastructure role, the launch template configuration, and tag propagation settings.
6775
6886
  :param name: The name of the capacity provider. If a name is specified, it cannot start with ``aws`` , ``ecs`` , or ``fargate`` . If no name is specified, a default name in the ``CFNStackName-CFNResourceName-RandomString`` format is used.
6776
6887
  :param tags: The metadata that you apply to the capacity provider to help you categorize and organize it. Each tag consists of a key and an optional value. You define both. The following basic restrictions apply to tags: - Maximum number of tags per resource - 50 - For each resource, each tag key must be unique, and each tag key can have only one value. - Maximum key length - 128 Unicode characters in UTF-8 - Maximum value length - 256 Unicode characters in UTF-8 - If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
6777
6888
 
@@ -6799,6 +6910,87 @@ class CfnCapacityProviderProps:
6799
6910
  ),
6800
6911
  managed_termination_protection="managedTerminationProtection"
6801
6912
  ),
6913
+ cluster_name="clusterName",
6914
+ managed_instances_provider=ecs.CfnCapacityProvider.ManagedInstancesProviderProperty(
6915
+ infrastructure_role_arn="infrastructureRoleArn",
6916
+ instance_launch_template=ecs.CfnCapacityProvider.InstanceLaunchTemplateProperty(
6917
+ ec2_instance_profile_arn="ec2InstanceProfileArn",
6918
+ network_configuration=ecs.CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty(
6919
+ subnets=["subnets"],
6920
+
6921
+ # the properties below are optional
6922
+ security_groups=["securityGroups"]
6923
+ ),
6924
+
6925
+ # the properties below are optional
6926
+ instance_requirements=ecs.CfnCapacityProvider.InstanceRequirementsRequestProperty(
6927
+ memory_mi_b=ecs.CfnCapacityProvider.MemoryMiBRequestProperty(
6928
+ min=123,
6929
+
6930
+ # the properties below are optional
6931
+ max=123
6932
+ ),
6933
+ v_cpu_count=ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty(
6934
+ min=123,
6935
+
6936
+ # the properties below are optional
6937
+ max=123
6938
+ ),
6939
+
6940
+ # the properties below are optional
6941
+ accelerator_count=ecs.CfnCapacityProvider.AcceleratorCountRequestProperty(
6942
+ max=123,
6943
+ min=123
6944
+ ),
6945
+ accelerator_manufacturers=["acceleratorManufacturers"],
6946
+ accelerator_names=["acceleratorNames"],
6947
+ accelerator_total_memory_mi_b=ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty(
6948
+ max=123,
6949
+ min=123
6950
+ ),
6951
+ accelerator_types=["acceleratorTypes"],
6952
+ allowed_instance_types=["allowedInstanceTypes"],
6953
+ bare_metal="bareMetal",
6954
+ baseline_ebs_bandwidth_mbps=ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty(
6955
+ max=123,
6956
+ min=123
6957
+ ),
6958
+ burstable_performance="burstablePerformance",
6959
+ cpu_manufacturers=["cpuManufacturers"],
6960
+ excluded_instance_types=["excludedInstanceTypes"],
6961
+ instance_generations=["instanceGenerations"],
6962
+ local_storage="localStorage",
6963
+ local_storage_types=["localStorageTypes"],
6964
+ max_spot_price_as_percentage_of_optimal_on_demand_price=123,
6965
+ memory_gi_bPer_vCpu=ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty(
6966
+ max=123,
6967
+ min=123
6968
+ ),
6969
+ network_bandwidth_gbps=ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty(
6970
+ max=123,
6971
+ min=123
6972
+ ),
6973
+ network_interface_count=ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty(
6974
+ max=123,
6975
+ min=123
6976
+ ),
6977
+ on_demand_max_price_percentage_over_lowest_price=123,
6978
+ require_hibernate_support=False,
6979
+ spot_max_price_percentage_over_lowest_price=123,
6980
+ total_local_storage_gb=ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty(
6981
+ max=123,
6982
+ min=123
6983
+ )
6984
+ ),
6985
+ monitoring="monitoring",
6986
+ storage_configuration=ecs.CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty(
6987
+ storage_size_gi_b=123
6988
+ )
6989
+ ),
6990
+
6991
+ # the properties below are optional
6992
+ propagate_tags="propagateTags"
6993
+ ),
6802
6994
  name="name",
6803
6995
  tags=[CfnTag(
6804
6996
  key="key",
@@ -6809,11 +7001,17 @@ class CfnCapacityProviderProps:
6809
7001
  if __debug__:
6810
7002
  type_hints = typing.get_type_hints(_typecheckingstub__48080bdf05dc1c4ca9ab46c833774163f6afcd0d1551b378b8d59e67bc180c3f)
6811
7003
  check_type(argname="argument auto_scaling_group_provider", value=auto_scaling_group_provider, expected_type=type_hints["auto_scaling_group_provider"])
7004
+ check_type(argname="argument cluster_name", value=cluster_name, expected_type=type_hints["cluster_name"])
7005
+ check_type(argname="argument managed_instances_provider", value=managed_instances_provider, expected_type=type_hints["managed_instances_provider"])
6812
7006
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
6813
7007
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
6814
7008
  self._values: typing.Dict[builtins.str, typing.Any] = {}
6815
7009
  if auto_scaling_group_provider is not None:
6816
7010
  self._values["auto_scaling_group_provider"] = auto_scaling_group_provider
7011
+ if cluster_name is not None:
7012
+ self._values["cluster_name"] = cluster_name
7013
+ if managed_instances_provider is not None:
7014
+ self._values["managed_instances_provider"] = managed_instances_provider
6817
7015
  if name is not None:
6818
7016
  self._values["name"] = name
6819
7017
  if tags is not None:
@@ -6830,6 +7028,27 @@ class CfnCapacityProviderProps:
6830
7028
  result = self._values.get("auto_scaling_group_provider")
6831
7029
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.AutoScalingGroupProviderProperty"]], result)
6832
7030
 
7031
+ @builtins.property
7032
+ def cluster_name(self) -> typing.Optional[builtins.str]:
7033
+ '''
7034
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-capacityprovider.html#cfn-ecs-capacityprovider-clustername
7035
+ '''
7036
+ result = self._values.get("cluster_name")
7037
+ return typing.cast(typing.Optional[builtins.str], result)
7038
+
7039
+ @builtins.property
7040
+ def managed_instances_provider(
7041
+ self,
7042
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesProviderProperty"]]:
7043
+ '''The configuration for the Amazon ECS Managed Instances provider.
7044
+
7045
+ This includes the infrastructure role, the launch template configuration, and tag propagation settings.
7046
+
7047
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-capacityprovider.html#cfn-ecs-capacityprovider-managedinstancesprovider
7048
+ '''
7049
+ result = self._values.get("managed_instances_provider")
7050
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesProviderProperty"]], result)
7051
+
6833
7052
  @builtins.property
6834
7053
  def name(self) -> typing.Optional[builtins.str]:
6835
7054
  '''The name of the capacity provider.
@@ -7370,7 +7589,7 @@ class CfnServiceProps:
7370
7589
  :param enable_ecs_managed_tags: Specifies whether to turn on Amazon ECS managed tags for the tasks within the service. For more information, see `Tagging your Amazon ECS resources <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html>`_ in the *Amazon Elastic Container Service Developer Guide* . When you use Amazon ECS managed tags, you must set the ``propagateTags`` request parameter.
7371
7590
  :param enable_execute_command: Determines whether the execute command functionality is turned on for the service. If ``true`` , the execute command functionality is turned on for all containers in tasks as part of the service.
7372
7591
  :param force_new_deployment: Determines whether to force a new deployment of the service. By default, deployments aren't forced. You can use this option to start a new deployment with no service definition changes. For example, you can update a service's tasks to use a newer Docker image with the same image/tag combination ( ``my_image:latest`` ) or to roll Fargate tasks onto a newer platform version.
7373
- :param health_check_grace_period_seconds: The period of time, in seconds, that the Amazon Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started. If you do not specify a health check grace period value, the default value of 0 is used. If you do not use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused. If your service has more running tasks than desired, unhealthy tasks in the grace period might be stopped to reach the desired count.
7592
+ :param health_check_grace_period_seconds: The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started. If you do not specify a health check grace period value, the default value of 0 is used. If you do not use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused. If your service has more running tasks than desired, unhealthy tasks in the grace period might be stopped to reach the desired count.
7374
7593
  :param launch_type: The launch type on which to run your service. For more information, see `Amazon ECS Launch Types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
7375
7594
  :param load_balancers: A list of load balancer objects to associate with the service. If you specify the ``Role`` property, ``LoadBalancers`` must be specified as well. For information about the number of load balancers that you can specify per service, see `Service Load Balancing <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: To remove this property from your service resource, specify an empty ``LoadBalancer`` array.
7376
7595
  :param network_configuration: The network configuration for the service. This parameter is required for task definitions that use the ``awsvpc`` network mode to receive their own elastic network interface, and it is not supported for other network modes. For more information, see `Task Networking <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
@@ -7788,7 +8007,7 @@ class CfnServiceProps:
7788
8007
 
7789
8008
  @builtins.property
7790
8009
  def health_check_grace_period_seconds(self) -> typing.Optional[jsii.Number]:
7791
- '''The period of time, in seconds, that the Amazon Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started.
8010
+ '''The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started.
7792
8011
 
7793
8012
  If you do not specify a health check grace period value, the default value of 0 is used. If you do not use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused.
7794
8013
 
@@ -8116,7 +8335,7 @@ class CfnTaskDefinitionProps:
8116
8335
  :param pid_mode: The process namespace to use for the containers in the task. The valid values are ``host`` or ``task`` . On Fargate for Linux containers, the only valid value is ``task`` . For example, monitoring sidecars might need ``pidMode`` to access information about other containers running in the same task. If ``host`` is specified, all containers within the tasks that specified the ``host`` PID mode on the same container instance share the same process namespace with the host Amazon EC2 instance. If ``task`` is specified, all containers within the specified task share the same process namespace. If no value is specified, the default is a private namespace for each container. If the ``host`` PID mode is used, there's a heightened risk of undesired process namespace exposure. .. epigraph:: This parameter is not supported for Windows containers. > This parameter is only supported for tasks that are hosted on AWS Fargate if the tasks are using platform version ``1.4.0`` or later (Linux). This isn't supported for Windows containers on Fargate.
8117
8336
  :param placement_constraints: An array of placement constraint objects to use for tasks. .. epigraph:: This parameter isn't supported for tasks run on AWS Fargate .
8118
8337
  :param proxy_configuration: The configuration details for the App Mesh proxy. Your Amazon ECS container instances require at least version 1.26.0 of the container agent and at least version 1.26.0-1 of the ``ecs-init`` package to use a proxy configuration. If your container instances are launched from the Amazon ECS optimized AMI version ``20190301`` or later, they contain the required versions of the container agent and ``ecs-init`` . For more information, see `Amazon ECS-optimized Linux AMI <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
8119
- :param requires_compatibilities: The task launch types the task definition was validated against. The valid values are ``EC2`` , ``FARGATE`` , and ``EXTERNAL`` . For more information, see `Amazon ECS launch types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
8338
+ :param requires_compatibilities: The task launch types the task definition was validated against. The valid values are ``MANAGED_INSTANCES`` , ``EC2`` , ``FARGATE`` , and ``EXTERNAL`` . For more information, see `Amazon ECS launch types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
8120
8339
  :param runtime_platform: The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type.
8121
8340
  :param tags: The metadata that you apply to the task definition to help you categorize and organize them. Each tag consists of a key and an optional value. You define both of them. The following basic restrictions apply to tags: - Maximum number of tags per resource - 50 - For each resource, each tag key must be unique, and each tag key can have only one value. - Maximum key length - 128 Unicode characters in UTF-8 - Maximum value length - 256 Unicode characters in UTF-8 - If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
8122
8341
  :param task_role_arn: The short name or full Amazon Resource Name (ARN) of the AWS Identity and Access Management role that grants containers in the task permission to call AWS APIs on your behalf. For more information, see `Amazon ECS Task Role <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html>`_ in the *Amazon Elastic Container Service Developer Guide* . IAM roles for tasks on Windows require that the ``-EnableTaskIAMRole`` option is set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some configuration code to use the feature. For more information, see `Windows IAM roles for tasks <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: String validation is done on the ECS side. If an invalid string value is given for ``TaskRoleArn`` , it may cause the Cloudformation job to hang.
@@ -8625,7 +8844,7 @@ class CfnTaskDefinitionProps:
8625
8844
  def requires_compatibilities(self) -> typing.Optional[typing.List[builtins.str]]:
8626
8845
  '''The task launch types the task definition was validated against.
8627
8846
 
8628
- The valid values are ``EC2`` , ``FARGATE`` , and ``EXTERNAL`` . For more information, see `Amazon ECS launch types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
8847
+ The valid values are ``MANAGED_INSTANCES`` , ``EC2`` , ``FARGATE`` , and ``EXTERNAL`` . For more information, see `Amazon ECS launch types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
8629
8848
 
8630
8849
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-requirescompatibilities
8631
8850
  '''
@@ -10174,6 +10393,14 @@ class Compatibility(enum.Enum):
10174
10393
  '''The task can specify either the EC2 or Fargate launch types.'''
10175
10394
  EXTERNAL = "EXTERNAL"
10176
10395
  '''The task should specify the External launch type.'''
10396
+ MANAGED_INSTANCES = "MANAGED_INSTANCES"
10397
+ '''The task should specify the Managed Instances launch type.'''
10398
+ EC2_AND_MANAGED_INSTANCES = "EC2_AND_MANAGED_INSTANCES"
10399
+ '''The task can specify either the EC2 or Managed Instances launch types.'''
10400
+ FARGATE_AND_MANAGED_INSTANCES = "FARGATE_AND_MANAGED_INSTANCES"
10401
+ '''The task can specify either the Fargate or Managed Instances launch types.'''
10402
+ FARGATE_AND_EC2_AND_MANAGED_INSTANCES = "FARGATE_AND_EC2_AND_MANAGED_INSTANCES"
10403
+ '''The task can specify either the Fargate, EC2 or Managed Instances launch types.'''
10177
10404
 
10178
10405
 
10179
10406
  class ContainerDefinition(
@@ -12357,32 +12584,24 @@ class ContainerImage(
12357
12584
 
12358
12585
  Example::
12359
12586
 
12360
- # vpc: ec2.Vpc
12361
-
12362
-
12363
- cluster = ecs.Cluster(self, "FargateCPCluster",
12364
- vpc=vpc,
12365
- enable_fargate_capacity_providers=True
12366
- )
12367
-
12368
- task_definition = ecs.FargateTaskDefinition(self, "TaskDef")
12369
-
12370
- task_definition.add_container("web",
12371
- image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample")
12372
- )
12373
-
12374
- ecs.FargateService(self, "FargateService",
12375
- cluster=cluster,
12376
- task_definition=task_definition,
12377
- min_healthy_percent=100,
12378
- capacity_provider_strategies=[ecs.CapacityProviderStrategy(
12379
- capacity_provider="FARGATE_SPOT",
12380
- weight=2
12381
- ), ecs.CapacityProviderStrategy(
12382
- capacity_provider="FARGATE",
12383
- weight=1
12587
+ # my_file_system: efs.IFileSystem
12588
+ # my_job_role: iam.Role
12589
+
12590
+ my_file_system.grant_read(my_job_role)
12591
+
12592
+ job_defn = batch.EcsJobDefinition(self, "JobDefn",
12593
+ container=batch.EcsEc2ContainerDefinition(self, "containerDefn",
12594
+ image=ecs.ContainerImage.from_registry("public.ecr.aws/amazonlinux/amazonlinux:latest"),
12595
+ memory=cdk.Size.mebibytes(2048),
12596
+ cpu=256,
12597
+ volumes=[batch.EcsVolume.efs(
12598
+ name="myVolume",
12599
+ file_system=my_file_system,
12600
+ container_path="/Volumes/myVolume",
12601
+ use_job_role=True
12602
+ )],
12603
+ job_role=my_job_role
12384
12604
  )
12385
- ]
12386
12605
  )
12387
12606
  '''
12388
12607
 
@@ -14348,30 +14567,33 @@ class Ec2ServiceProps(BaseServiceOptions):
14348
14567
 
14349
14568
  Example::
14350
14569
 
14351
- # vpc: ec2.Vpc
14352
-
14570
+ # task_definition: ecs.TaskDefinition
14571
+ # cluster: ecs.Cluster
14353
14572
 
14354
- # Create an ECS cluster
14355
- cluster = ecs.Cluster(self, "Cluster", vpc=vpc)
14356
14573
 
14357
- # Add capacity to it
14358
- cluster.add_capacity("DefaultAutoScalingGroupCapacity",
14359
- instance_type=ec2.InstanceType("t2.xlarge"),
14360
- desired_capacity=3
14574
+ # Add a container to the task definition
14575
+ specific_container = task_definition.add_container("Container",
14576
+ image=ecs.ContainerImage.from_registry("/aws/aws-example-app"),
14577
+ memory_limit_mi_b=2048
14361
14578
  )
14362
14579
 
14363
- task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
14364
-
14365
- task_definition.add_container("DefaultContainer",
14366
- image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
14367
- memory_limit_mi_b=512
14580
+ # Add a port mapping
14581
+ specific_container.add_port_mappings(
14582
+ container_port=7600,
14583
+ protocol=ecs.Protocol.TCP
14368
14584
  )
14369
14585
 
14370
- # Instantiate an Amazon ECS Service
14371
- ecs_service = ecs.Ec2Service(self, "Service",
14586
+ ecs.Ec2Service(self, "Service",
14372
14587
  cluster=cluster,
14373
14588
  task_definition=task_definition,
14374
- min_healthy_percent=100
14589
+ min_healthy_percent=100,
14590
+ cloud_map_options=ecs.CloudMapOptions(
14591
+ # Create SRV records - useful for bridge networking
14592
+ dns_record_type=cloudmap.DnsRecordType.SRV,
14593
+ # Targets port TCP port 7600 `specificContainer`
14594
+ container=specific_container,
14595
+ container_port=7600
14596
+ )
14375
14597
  )
14376
14598
  '''
14377
14599
  if isinstance(circuit_breaker, dict):
@@ -21722,6 +21944,12 @@ class ITaskDefinition(_IResource_c80c4260, typing_extensions.Protocol):
21722
21944
  '''Return true if the task definition can be run on a Fargate cluster.'''
21723
21945
  ...
21724
21946
 
21947
+ @builtins.property
21948
+ @jsii.member(jsii_name="isManagedInstancesCompatible")
21949
+ def is_managed_instances_compatible(self) -> builtins.bool:
21950
+ '''Return true if the task definition can be run on Managed Instances.'''
21951
+ ...
21952
+
21725
21953
  @builtins.property
21726
21954
  @jsii.member(jsii_name="networkMode")
21727
21955
  def network_mode(self) -> "NetworkMode":
@@ -21781,6 +22009,12 @@ class _ITaskDefinitionProxy(
21781
22009
  '''Return true if the task definition can be run on a Fargate cluster.'''
21782
22010
  return typing.cast(builtins.bool, jsii.get(self, "isFargateCompatible"))
21783
22011
 
22012
+ @builtins.property
22013
+ @jsii.member(jsii_name="isManagedInstancesCompatible")
22014
+ def is_managed_instances_compatible(self) -> builtins.bool:
22015
+ '''Return true if the task definition can be run on Managed Instances.'''
22016
+ return typing.cast(builtins.bool, jsii.get(self, "isManagedInstancesCompatible"))
22017
+
21784
22018
  @builtins.property
21785
22019
  @jsii.member(jsii_name="networkMode")
21786
22020
  def network_mode(self) -> "NetworkMode":
@@ -22013,6 +22247,16 @@ class InferenceAccelerator:
22013
22247
  )
22014
22248
 
22015
22249
 
22250
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_ecs.InstanceMonitoring")
22251
+ class InstanceMonitoring(enum.Enum):
22252
+ '''The monitoring configuration for EC2 instances.'''
22253
+
22254
+ BASIC = "BASIC"
22255
+ '''Basic monitoring (5-minute intervals).'''
22256
+ DETAILED = "DETAILED"
22257
+ '''Detailed monitoring (1-minute intervals).'''
22258
+
22259
+
22016
22260
  @jsii.enum(jsii_type="aws-cdk-lib.aws_ecs.IpcMode")
22017
22261
  class IpcMode(enum.Enum):
22018
22262
  '''The IPC resource namespace to use for the containers in the task.'''
@@ -23565,6 +23809,383 @@ class MachineImageType(enum.Enum):
23565
23809
  '''Bottlerocket AMI.'''
23566
23810
 
23567
23811
 
23812
+ class ManagedInstancesCapacityProvider(
23813
+ _constructs_77d1e7e8.Construct,
23814
+ metaclass=jsii.JSIIMeta,
23815
+ jsii_type="aws-cdk-lib.aws_ecs.ManagedInstancesCapacityProvider",
23816
+ ):
23817
+ '''A Managed Instances Capacity Provider.
23818
+
23819
+ This allows an ECS cluster to use
23820
+ Managed Instances for task placement with managed infrastructure.
23821
+
23822
+ :exampleMetadata: infused
23823
+
23824
+ Example::
23825
+
23826
+ # vpc: ec2.Vpc
23827
+ # infrastructure_role: iam.Role
23828
+ # instance_profile: iam.InstanceProfile
23829
+
23830
+
23831
+ cluster = ecs.Cluster(self, "Cluster", vpc=vpc)
23832
+
23833
+ # Create a Managed Instances Capacity Provider
23834
+ mi_capacity_provider = ecs.ManagedInstancesCapacityProvider(self, "MICapacityProvider",
23835
+ infrastructure_role=infrastructure_role,
23836
+ ec2_instance_profile=instance_profile,
23837
+ subnets=vpc.private_subnets,
23838
+ security_groups=[ec2.SecurityGroup(self, "MISecurityGroup", vpc=vpc)],
23839
+ instance_requirements=ec2.InstanceRequirementsConfig(
23840
+ v_cpu_count_min=1,
23841
+ memory_min=Size.gibibytes(2),
23842
+ cpu_manufacturers=[ec2.CpuManufacturer.INTEL],
23843
+ accelerator_manufacturers=[ec2.AcceleratorManufacturer.NVIDIA]
23844
+ ),
23845
+ propagate_tags=ecs.PropagateManagedInstancesTags.CAPACITY_PROVIDER
23846
+ )
23847
+
23848
+ # Add the capacity provider to the cluster
23849
+ cluster.add_managed_instances_capacity_provider(mi_capacity_provider)
23850
+
23851
+ task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
23852
+
23853
+ task_definition.add_container("web",
23854
+ image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
23855
+ memory_reservation_mi_b=256
23856
+ )
23857
+
23858
+ ecs.Ec2Service(self, "EC2Service",
23859
+ cluster=cluster,
23860
+ task_definition=task_definition,
23861
+ min_healthy_percent=100,
23862
+ capacity_provider_strategies=[ecs.CapacityProviderStrategy(
23863
+ capacity_provider=mi_capacity_provider.capacity_provider_name,
23864
+ weight=1
23865
+ )
23866
+ ]
23867
+ )
23868
+ '''
23869
+
23870
+ def __init__(
23871
+ self,
23872
+ scope: _constructs_77d1e7e8.Construct,
23873
+ id: builtins.str,
23874
+ *,
23875
+ ec2_instance_profile: _IInstanceProfile_10d5ce2c,
23876
+ subnets: typing.Sequence[_ISubnet_d57d1229],
23877
+ capacity_provider_name: typing.Optional[builtins.str] = None,
23878
+ infrastructure_role: typing.Optional[_IRole_235f5d8e] = None,
23879
+ instance_requirements: typing.Optional[typing.Union[_InstanceRequirementsConfig_1b353659, typing.Dict[builtins.str, typing.Any]]] = None,
23880
+ monitoring: typing.Optional[InstanceMonitoring] = None,
23881
+ propagate_tags: typing.Optional["PropagateManagedInstancesTags"] = None,
23882
+ security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
23883
+ task_volume_storage: typing.Optional[_Size_7b441c34] = None,
23884
+ ) -> None:
23885
+ '''
23886
+ :param scope: -
23887
+ :param id: -
23888
+ :param ec2_instance_profile: The EC2 instance profile that will be attached to instances launched by this capacity provider. This instance profile must contain the necessary IAM permissions for ECS container instances to register with the cluster and run tasks. At minimum, it should include permissions for ECS agent communication, ECR image pulling, and CloudWatch logging.
23889
+ :param subnets: The VPC subnets where EC2 instances will be launched. This array must be non-empty and should contain subnets from the VPC where you want the managed instances to be deployed.
23890
+ :param capacity_provider_name: The name of the capacity provider. If a name is specified, it cannot start with ``aws``, ``ecs``, or ``fargate``. If no name is specified, a default name in the CFNStackName-CFNResourceName-RandomString format is used. If the stack name starts with ``aws``, ``ecs``, or ``fargate``, a unique resource name is generated that starts with ``cp-``. Default: CloudFormation-generated name
23891
+ :param infrastructure_role: The IAM role that ECS uses to manage the infrastructure for the capacity provider. This role is used by ECS to perform actions such as launching and terminating instances, managing Auto Scaling Groups, and other infrastructure operations required for the managed instances capacity provider. Default: - A new role will be created with the AmazonECSInfrastructureRolePolicyForManagedInstances managed policy
23892
+ :param instance_requirements: The instance requirements configuration for EC2 instance selection. This allows you to specify detailed requirements for instance selection including vCPU count ranges, memory ranges, CPU manufacturers (Intel, AMD, AWS Graviton), instance generations, network performance requirements, and many other criteria. ECS will automatically select appropriate instance types that meet these requirements. Default: - no specific instance requirements, ECS will choose appropriate instances
23893
+ :param monitoring: The CloudWatch monitoring configuration for the EC2 instances. Determines the granularity of CloudWatch metrics collection for the instances. Detailed monitoring incurs additional costs but provides better observability. Default: - no enhanced monitoring (basic monitoring only)
23894
+ :param propagate_tags: Specifies whether to propagate tags from the capacity provider to the launched instances. When set to CAPACITY_PROVIDER, tags applied to the capacity provider resource will be automatically applied to all EC2 instances launched by this capacity provider. Default: PropagateManagedInstancesTags.NONE - no tag propagation
23895
+ :param security_groups: The security groups to associate with the launched EC2 instances. These security groups control the network traffic allowed to and from the instances. If not specified, the default security group of the VPC containing the subnets will be used. Default: - default security group of the VPC
23896
+ :param task_volume_storage: The size of the task volume storage attached to each instance. This storage is used for container images, container logs, and temporary files. Larger storage may be needed for workloads with large container images or applications that generate significant temporary data. Default: Size.gibibytes(80)
23897
+ '''
23898
+ if __debug__:
23899
+ type_hints = typing.get_type_hints(_typecheckingstub__718bb820f1409b5f15556f2e394659a060bda46e302dbb4e973a6484f24497de)
23900
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
23901
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
23902
+ props = ManagedInstancesCapacityProviderProps(
23903
+ ec2_instance_profile=ec2_instance_profile,
23904
+ subnets=subnets,
23905
+ capacity_provider_name=capacity_provider_name,
23906
+ infrastructure_role=infrastructure_role,
23907
+ instance_requirements=instance_requirements,
23908
+ monitoring=monitoring,
23909
+ propagate_tags=propagate_tags,
23910
+ security_groups=security_groups,
23911
+ task_volume_storage=task_volume_storage,
23912
+ )
23913
+
23914
+ jsii.create(self.__class__, self, [scope, id, props])
23915
+
23916
+ @jsii.member(jsii_name="bind")
23917
+ def bind(self, cluster: ICluster) -> None:
23918
+ '''Associates the capacity provider with the specified cluster.
23919
+
23920
+ This method is called by the cluster when adding the capacity provider.
23921
+
23922
+ :param cluster: -
23923
+ '''
23924
+ if __debug__:
23925
+ type_hints = typing.get_type_hints(_typecheckingstub__86f1df235e6255faeece6081f964f386186a84532c53bb8fad57fd4ab50e809d)
23926
+ check_type(argname="argument cluster", value=cluster, expected_type=type_hints["cluster"])
23927
+ return typing.cast(None, jsii.invoke(self, "bind", [cluster]))
23928
+
23929
+ @jsii.python.classproperty
23930
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
23931
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
23932
+ '''Uniquely identifies this class.'''
23933
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
23934
+
23935
+ @builtins.property
23936
+ @jsii.member(jsii_name="capacityProviderName")
23937
+ def capacity_provider_name(self) -> builtins.str:
23938
+ '''Capacity provider name.'''
23939
+ return typing.cast(builtins.str, jsii.get(self, "capacityProviderName"))
23940
+
23941
+
23942
+ @jsii.data_type(
23943
+ jsii_type="aws-cdk-lib.aws_ecs.ManagedInstancesCapacityProviderProps",
23944
+ jsii_struct_bases=[],
23945
+ name_mapping={
23946
+ "ec2_instance_profile": "ec2InstanceProfile",
23947
+ "subnets": "subnets",
23948
+ "capacity_provider_name": "capacityProviderName",
23949
+ "infrastructure_role": "infrastructureRole",
23950
+ "instance_requirements": "instanceRequirements",
23951
+ "monitoring": "monitoring",
23952
+ "propagate_tags": "propagateTags",
23953
+ "security_groups": "securityGroups",
23954
+ "task_volume_storage": "taskVolumeStorage",
23955
+ },
23956
+ )
23957
+ class ManagedInstancesCapacityProviderProps:
23958
+ def __init__(
23959
+ self,
23960
+ *,
23961
+ ec2_instance_profile: _IInstanceProfile_10d5ce2c,
23962
+ subnets: typing.Sequence[_ISubnet_d57d1229],
23963
+ capacity_provider_name: typing.Optional[builtins.str] = None,
23964
+ infrastructure_role: typing.Optional[_IRole_235f5d8e] = None,
23965
+ instance_requirements: typing.Optional[typing.Union[_InstanceRequirementsConfig_1b353659, typing.Dict[builtins.str, typing.Any]]] = None,
23966
+ monitoring: typing.Optional[InstanceMonitoring] = None,
23967
+ propagate_tags: typing.Optional["PropagateManagedInstancesTags"] = None,
23968
+ security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
23969
+ task_volume_storage: typing.Optional[_Size_7b441c34] = None,
23970
+ ) -> None:
23971
+ '''The options for creating a Managed Instances Capacity Provider.
23972
+
23973
+ :param ec2_instance_profile: The EC2 instance profile that will be attached to instances launched by this capacity provider. This instance profile must contain the necessary IAM permissions for ECS container instances to register with the cluster and run tasks. At minimum, it should include permissions for ECS agent communication, ECR image pulling, and CloudWatch logging.
23974
+ :param subnets: The VPC subnets where EC2 instances will be launched. This array must be non-empty and should contain subnets from the VPC where you want the managed instances to be deployed.
23975
+ :param capacity_provider_name: The name of the capacity provider. If a name is specified, it cannot start with ``aws``, ``ecs``, or ``fargate``. If no name is specified, a default name in the CFNStackName-CFNResourceName-RandomString format is used. If the stack name starts with ``aws``, ``ecs``, or ``fargate``, a unique resource name is generated that starts with ``cp-``. Default: CloudFormation-generated name
23976
+ :param infrastructure_role: The IAM role that ECS uses to manage the infrastructure for the capacity provider. This role is used by ECS to perform actions such as launching and terminating instances, managing Auto Scaling Groups, and other infrastructure operations required for the managed instances capacity provider. Default: - A new role will be created with the AmazonECSInfrastructureRolePolicyForManagedInstances managed policy
23977
+ :param instance_requirements: The instance requirements configuration for EC2 instance selection. This allows you to specify detailed requirements for instance selection including vCPU count ranges, memory ranges, CPU manufacturers (Intel, AMD, AWS Graviton), instance generations, network performance requirements, and many other criteria. ECS will automatically select appropriate instance types that meet these requirements. Default: - no specific instance requirements, ECS will choose appropriate instances
23978
+ :param monitoring: The CloudWatch monitoring configuration for the EC2 instances. Determines the granularity of CloudWatch metrics collection for the instances. Detailed monitoring incurs additional costs but provides better observability. Default: - no enhanced monitoring (basic monitoring only)
23979
+ :param propagate_tags: Specifies whether to propagate tags from the capacity provider to the launched instances. When set to CAPACITY_PROVIDER, tags applied to the capacity provider resource will be automatically applied to all EC2 instances launched by this capacity provider. Default: PropagateManagedInstancesTags.NONE - no tag propagation
23980
+ :param security_groups: The security groups to associate with the launched EC2 instances. These security groups control the network traffic allowed to and from the instances. If not specified, the default security group of the VPC containing the subnets will be used. Default: - default security group of the VPC
23981
+ :param task_volume_storage: The size of the task volume storage attached to each instance. This storage is used for container images, container logs, and temporary files. Larger storage may be needed for workloads with large container images or applications that generate significant temporary data. Default: Size.gibibytes(80)
23982
+
23983
+ :exampleMetadata: infused
23984
+
23985
+ Example::
23986
+
23987
+ # vpc: ec2.Vpc
23988
+ # infrastructure_role: iam.Role
23989
+ # instance_profile: iam.InstanceProfile
23990
+
23991
+
23992
+ cluster = ecs.Cluster(self, "Cluster", vpc=vpc)
23993
+
23994
+ # Create a Managed Instances Capacity Provider
23995
+ mi_capacity_provider = ecs.ManagedInstancesCapacityProvider(self, "MICapacityProvider",
23996
+ infrastructure_role=infrastructure_role,
23997
+ ec2_instance_profile=instance_profile,
23998
+ subnets=vpc.private_subnets,
23999
+ security_groups=[ec2.SecurityGroup(self, "MISecurityGroup", vpc=vpc)],
24000
+ instance_requirements=ec2.InstanceRequirementsConfig(
24001
+ v_cpu_count_min=1,
24002
+ memory_min=Size.gibibytes(2),
24003
+ cpu_manufacturers=[ec2.CpuManufacturer.INTEL],
24004
+ accelerator_manufacturers=[ec2.AcceleratorManufacturer.NVIDIA]
24005
+ ),
24006
+ propagate_tags=ecs.PropagateManagedInstancesTags.CAPACITY_PROVIDER
24007
+ )
24008
+
24009
+ # Add the capacity provider to the cluster
24010
+ cluster.add_managed_instances_capacity_provider(mi_capacity_provider)
24011
+
24012
+ task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
24013
+
24014
+ task_definition.add_container("web",
24015
+ image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
24016
+ memory_reservation_mi_b=256
24017
+ )
24018
+
24019
+ ecs.Ec2Service(self, "EC2Service",
24020
+ cluster=cluster,
24021
+ task_definition=task_definition,
24022
+ min_healthy_percent=100,
24023
+ capacity_provider_strategies=[ecs.CapacityProviderStrategy(
24024
+ capacity_provider=mi_capacity_provider.capacity_provider_name,
24025
+ weight=1
24026
+ )
24027
+ ]
24028
+ )
24029
+ '''
24030
+ if isinstance(instance_requirements, dict):
24031
+ instance_requirements = _InstanceRequirementsConfig_1b353659(**instance_requirements)
24032
+ if __debug__:
24033
+ type_hints = typing.get_type_hints(_typecheckingstub__efa15b9a00384128ebdb40ffd56f7e66e8863f1c3a6b8d4cf8bc61fb9e822e92)
24034
+ check_type(argname="argument ec2_instance_profile", value=ec2_instance_profile, expected_type=type_hints["ec2_instance_profile"])
24035
+ check_type(argname="argument subnets", value=subnets, expected_type=type_hints["subnets"])
24036
+ check_type(argname="argument capacity_provider_name", value=capacity_provider_name, expected_type=type_hints["capacity_provider_name"])
24037
+ check_type(argname="argument infrastructure_role", value=infrastructure_role, expected_type=type_hints["infrastructure_role"])
24038
+ check_type(argname="argument instance_requirements", value=instance_requirements, expected_type=type_hints["instance_requirements"])
24039
+ check_type(argname="argument monitoring", value=monitoring, expected_type=type_hints["monitoring"])
24040
+ check_type(argname="argument propagate_tags", value=propagate_tags, expected_type=type_hints["propagate_tags"])
24041
+ check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
24042
+ check_type(argname="argument task_volume_storage", value=task_volume_storage, expected_type=type_hints["task_volume_storage"])
24043
+ self._values: typing.Dict[builtins.str, typing.Any] = {
24044
+ "ec2_instance_profile": ec2_instance_profile,
24045
+ "subnets": subnets,
24046
+ }
24047
+ if capacity_provider_name is not None:
24048
+ self._values["capacity_provider_name"] = capacity_provider_name
24049
+ if infrastructure_role is not None:
24050
+ self._values["infrastructure_role"] = infrastructure_role
24051
+ if instance_requirements is not None:
24052
+ self._values["instance_requirements"] = instance_requirements
24053
+ if monitoring is not None:
24054
+ self._values["monitoring"] = monitoring
24055
+ if propagate_tags is not None:
24056
+ self._values["propagate_tags"] = propagate_tags
24057
+ if security_groups is not None:
24058
+ self._values["security_groups"] = security_groups
24059
+ if task_volume_storage is not None:
24060
+ self._values["task_volume_storage"] = task_volume_storage
24061
+
24062
+ @builtins.property
24063
+ def ec2_instance_profile(self) -> _IInstanceProfile_10d5ce2c:
24064
+ '''The EC2 instance profile that will be attached to instances launched by this capacity provider.
24065
+
24066
+ This instance profile must contain the necessary IAM permissions for ECS container instances
24067
+ to register with the cluster and run tasks. At minimum, it should include permissions for
24068
+ ECS agent communication, ECR image pulling, and CloudWatch logging.
24069
+ '''
24070
+ result = self._values.get("ec2_instance_profile")
24071
+ assert result is not None, "Required property 'ec2_instance_profile' is missing"
24072
+ return typing.cast(_IInstanceProfile_10d5ce2c, result)
24073
+
24074
+ @builtins.property
24075
+ def subnets(self) -> typing.List[_ISubnet_d57d1229]:
24076
+ '''The VPC subnets where EC2 instances will be launched.
24077
+
24078
+ This array must be non-empty and should contain subnets from the VPC where you want
24079
+ the managed instances to be deployed.
24080
+ '''
24081
+ result = self._values.get("subnets")
24082
+ assert result is not None, "Required property 'subnets' is missing"
24083
+ return typing.cast(typing.List[_ISubnet_d57d1229], result)
24084
+
24085
+ @builtins.property
24086
+ def capacity_provider_name(self) -> typing.Optional[builtins.str]:
24087
+ '''The name of the capacity provider.
24088
+
24089
+ If a name is specified, it cannot start with ``aws``, ``ecs``, or ``fargate``.
24090
+ If no name is specified, a default name in the CFNStackName-CFNResourceName-RandomString format is used.
24091
+ If the stack name starts with ``aws``, ``ecs``, or ``fargate``, a unique resource name
24092
+ is generated that starts with ``cp-``.
24093
+
24094
+ :default: CloudFormation-generated name
24095
+ '''
24096
+ result = self._values.get("capacity_provider_name")
24097
+ return typing.cast(typing.Optional[builtins.str], result)
24098
+
24099
+ @builtins.property
24100
+ def infrastructure_role(self) -> typing.Optional[_IRole_235f5d8e]:
24101
+ '''The IAM role that ECS uses to manage the infrastructure for the capacity provider.
24102
+
24103
+ This role is used by ECS to perform actions such as launching and terminating instances,
24104
+ managing Auto Scaling Groups, and other infrastructure operations required for the
24105
+ managed instances capacity provider.
24106
+
24107
+ :default: - A new role will be created with the AmazonECSInfrastructureRolePolicyForManagedInstances managed policy
24108
+ '''
24109
+ result = self._values.get("infrastructure_role")
24110
+ return typing.cast(typing.Optional[_IRole_235f5d8e], result)
24111
+
24112
+ @builtins.property
24113
+ def instance_requirements(
24114
+ self,
24115
+ ) -> typing.Optional[_InstanceRequirementsConfig_1b353659]:
24116
+ '''The instance requirements configuration for EC2 instance selection.
24117
+
24118
+ This allows you to specify detailed requirements for instance selection including
24119
+ vCPU count ranges, memory ranges, CPU manufacturers (Intel, AMD, AWS Graviton),
24120
+ instance generations, network performance requirements, and many other criteria.
24121
+ ECS will automatically select appropriate instance types that meet these requirements.
24122
+
24123
+ :default: - no specific instance requirements, ECS will choose appropriate instances
24124
+ '''
24125
+ result = self._values.get("instance_requirements")
24126
+ return typing.cast(typing.Optional[_InstanceRequirementsConfig_1b353659], result)
24127
+
24128
+ @builtins.property
24129
+ def monitoring(self) -> typing.Optional[InstanceMonitoring]:
24130
+ '''The CloudWatch monitoring configuration for the EC2 instances.
24131
+
24132
+ Determines the granularity of CloudWatch metrics collection for the instances.
24133
+ Detailed monitoring incurs additional costs but provides better observability.
24134
+
24135
+ :default: - no enhanced monitoring (basic monitoring only)
24136
+ '''
24137
+ result = self._values.get("monitoring")
24138
+ return typing.cast(typing.Optional[InstanceMonitoring], result)
24139
+
24140
+ @builtins.property
24141
+ def propagate_tags(self) -> typing.Optional["PropagateManagedInstancesTags"]:
24142
+ '''Specifies whether to propagate tags from the capacity provider to the launched instances.
24143
+
24144
+ When set to CAPACITY_PROVIDER, tags applied to the capacity provider resource will be
24145
+ automatically applied to all EC2 instances launched by this capacity provider.
24146
+
24147
+ :default: PropagateManagedInstancesTags.NONE - no tag propagation
24148
+ '''
24149
+ result = self._values.get("propagate_tags")
24150
+ return typing.cast(typing.Optional["PropagateManagedInstancesTags"], result)
24151
+
24152
+ @builtins.property
24153
+ def security_groups(self) -> typing.Optional[typing.List[_ISecurityGroup_acf8a799]]:
24154
+ '''The security groups to associate with the launched EC2 instances.
24155
+
24156
+ These security groups control the network traffic allowed to and from the instances.
24157
+ If not specified, the default security group of the VPC containing the subnets will be used.
24158
+
24159
+ :default: - default security group of the VPC
24160
+ '''
24161
+ result = self._values.get("security_groups")
24162
+ return typing.cast(typing.Optional[typing.List[_ISecurityGroup_acf8a799]], result)
24163
+
24164
+ @builtins.property
24165
+ def task_volume_storage(self) -> typing.Optional[_Size_7b441c34]:
24166
+ '''The size of the task volume storage attached to each instance.
24167
+
24168
+ This storage is used for container images, container logs, and temporary files.
24169
+ Larger storage may be needed for workloads with large container images or
24170
+ applications that generate significant temporary data.
24171
+
24172
+ :default: Size.gibibytes(80)
24173
+ '''
24174
+ result = self._values.get("task_volume_storage")
24175
+ return typing.cast(typing.Optional[_Size_7b441c34], result)
24176
+
24177
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
24178
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
24179
+
24180
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
24181
+ return not (rhs == self)
24182
+
24183
+ def __repr__(self) -> str:
24184
+ return "ManagedInstancesCapacityProviderProps(%s)" % ", ".join(
24185
+ k + "=" + repr(v) for k, v in self._values.items()
24186
+ )
24187
+
24188
+
23568
24189
  @jsii.data_type(
23569
24190
  jsii_type="aws-cdk-lib.aws_ecs.ManagedStorageConfiguration",
23570
24191
  jsii_struct_bases=[],
@@ -24560,6 +25181,64 @@ class PrimaryTaskSetReference:
24560
25181
  )
24561
25182
 
24562
25183
 
25184
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_ecs.PropagateManagedInstancesTags")
25185
+ class PropagateManagedInstancesTags(enum.Enum):
25186
+ '''Propagate tags for Managed Instances.
25187
+
25188
+ :exampleMetadata: infused
25189
+
25190
+ Example::
25191
+
25192
+ # vpc: ec2.Vpc
25193
+ # infrastructure_role: iam.Role
25194
+ # instance_profile: iam.InstanceProfile
25195
+
25196
+
25197
+ cluster = ecs.Cluster(self, "Cluster", vpc=vpc)
25198
+
25199
+ # Create a Managed Instances Capacity Provider
25200
+ mi_capacity_provider = ecs.ManagedInstancesCapacityProvider(self, "MICapacityProvider",
25201
+ infrastructure_role=infrastructure_role,
25202
+ ec2_instance_profile=instance_profile,
25203
+ subnets=vpc.private_subnets,
25204
+ security_groups=[ec2.SecurityGroup(self, "MISecurityGroup", vpc=vpc)],
25205
+ instance_requirements=ec2.InstanceRequirementsConfig(
25206
+ v_cpu_count_min=1,
25207
+ memory_min=Size.gibibytes(2),
25208
+ cpu_manufacturers=[ec2.CpuManufacturer.INTEL],
25209
+ accelerator_manufacturers=[ec2.AcceleratorManufacturer.NVIDIA]
25210
+ ),
25211
+ propagate_tags=ecs.PropagateManagedInstancesTags.CAPACITY_PROVIDER
25212
+ )
25213
+
25214
+ # Add the capacity provider to the cluster
25215
+ cluster.add_managed_instances_capacity_provider(mi_capacity_provider)
25216
+
25217
+ task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
25218
+
25219
+ task_definition.add_container("web",
25220
+ image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
25221
+ memory_reservation_mi_b=256
25222
+ )
25223
+
25224
+ ecs.Ec2Service(self, "EC2Service",
25225
+ cluster=cluster,
25226
+ task_definition=task_definition,
25227
+ min_healthy_percent=100,
25228
+ capacity_provider_strategies=[ecs.CapacityProviderStrategy(
25229
+ capacity_provider=mi_capacity_provider.capacity_provider_name,
25230
+ weight=1
25231
+ )
25232
+ ]
25233
+ )
25234
+ '''
25235
+
25236
+ CAPACITY_PROVIDER = "CAPACITY_PROVIDER"
25237
+ '''Propagate tags from the capacity provider.'''
25238
+ NONE = "NONE"
25239
+ '''Do not propagate tags.'''
25240
+
25241
+
24563
25242
  @jsii.enum(jsii_type="aws-cdk-lib.aws_ecs.PropagatedTagSource")
24564
25243
  class PropagatedTagSource(enum.Enum):
24565
25244
  '''Propagate tags from either service or task definition.
@@ -28048,22 +28727,34 @@ class TaskDefinition(
28048
28727
 
28049
28728
  Example::
28050
28729
 
28730
+ import aws_cdk.aws_cloudwatch as cw
28731
+
28051
28732
  # cluster: ecs.Cluster
28052
28733
  # task_definition: ecs.TaskDefinition
28053
- # vpc: ec2.Vpc
28734
+ # elb_alarm: cw.Alarm
28054
28735
 
28055
- service = ecs.FargateService(self, "Service", cluster=cluster, task_definition=task_definition, min_healthy_percent=100)
28056
28736
 
28057
- lb = elbv2.ApplicationLoadBalancer(self, "LB", vpc=vpc, internet_facing=True)
28058
- listener = lb.add_listener("Listener", port=80)
28059
- service.register_load_balancer_targets(
28060
- container_name="web",
28061
- container_port=80,
28062
- new_target_group_id="ECS",
28063
- listener=ecs.ListenerConfig.application_listener(listener,
28064
- protocol=elbv2.ApplicationProtocol.HTTPS
28737
+ service = ecs.FargateService(self, "Service",
28738
+ cluster=cluster,
28739
+ task_definition=task_definition,
28740
+ min_healthy_percent=100,
28741
+ deployment_alarms=ecs.DeploymentAlarmConfig(
28742
+ alarm_names=[elb_alarm.alarm_name],
28743
+ behavior=ecs.AlarmBehavior.ROLLBACK_ON_ALARM
28065
28744
  )
28066
28745
  )
28746
+
28747
+ # Defining a deployment alarm after the service has been created
28748
+ cpu_alarm_name = "MyCpuMetricAlarm"
28749
+ cw.Alarm(self, "CPUAlarm",
28750
+ alarm_name=cpu_alarm_name,
28751
+ metric=service.metric_cpu_utilization(),
28752
+ evaluation_periods=2,
28753
+ threshold=80
28754
+ )
28755
+ service.enable_deployment_alarms([cpu_alarm_name],
28756
+ behavior=ecs.AlarmBehavior.FAIL_ON_ALARM
28757
+ )
28067
28758
  '''
28068
28759
 
28069
28760
  def __init__(
@@ -28669,6 +29360,12 @@ class TaskDefinition(
28669
29360
  '''Return true if the task definition can be run on a Fargate cluster.'''
28670
29361
  return typing.cast(builtins.bool, jsii.get(self, "isFargateCompatible"))
28671
29362
 
29363
+ @builtins.property
29364
+ @jsii.member(jsii_name="isManagedInstancesCompatible")
29365
+ def is_managed_instances_compatible(self) -> builtins.bool:
29366
+ '''Return true if the task definition can be run on Managed Instances.'''
29367
+ return typing.cast(builtins.bool, jsii.get(self, "isManagedInstancesCompatible"))
29368
+
28672
29369
  @builtins.property
28673
29370
  @jsii.member(jsii_name="networkMode")
28674
29371
  def network_mode(self) -> NetworkMode:
@@ -30673,11 +31370,9 @@ class CfnCapacityProvider(
30673
31370
  metaclass=jsii.JSIIMeta,
30674
31371
  jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider",
30675
31372
  ):
30676
- '''Creates a new capacity provider.
31373
+ '''Creates a capacity provider.
30677
31374
 
30678
- Capacity providers are associated with an Amazon ECS cluster and are used in capacity provider strategies to facilitate cluster auto scaling.
30679
-
30680
- Only capacity providers that use an Auto Scaling group can be created. Amazon ECS tasks on AWS Fargate use the ``FARGATE`` and ``FARGATE_SPOT`` capacity providers. These providers are available to all accounts in the AWS Regions that AWS Fargate supports.
31375
+ Capacity providers are associated with a cluster and are used in capacity provider strategies to facilitate cluster auto scaling. You can create capacity providers for Amazon ECS Managed Instances and EC2 instances. AWS Fargate has the predefined ``FARGATE`` and ``FARGATE_SPOT`` capacity providers.
30681
31376
 
30682
31377
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-capacityprovider.html
30683
31378
  :cloudformationResource: AWS::ECS::CapacityProvider
@@ -30704,6 +31399,87 @@ class CfnCapacityProvider(
30704
31399
  ),
30705
31400
  managed_termination_protection="managedTerminationProtection"
30706
31401
  ),
31402
+ cluster_name="clusterName",
31403
+ managed_instances_provider=ecs.CfnCapacityProvider.ManagedInstancesProviderProperty(
31404
+ infrastructure_role_arn="infrastructureRoleArn",
31405
+ instance_launch_template=ecs.CfnCapacityProvider.InstanceLaunchTemplateProperty(
31406
+ ec2_instance_profile_arn="ec2InstanceProfileArn",
31407
+ network_configuration=ecs.CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty(
31408
+ subnets=["subnets"],
31409
+
31410
+ # the properties below are optional
31411
+ security_groups=["securityGroups"]
31412
+ ),
31413
+
31414
+ # the properties below are optional
31415
+ instance_requirements=ecs.CfnCapacityProvider.InstanceRequirementsRequestProperty(
31416
+ memory_mi_b=ecs.CfnCapacityProvider.MemoryMiBRequestProperty(
31417
+ min=123,
31418
+
31419
+ # the properties below are optional
31420
+ max=123
31421
+ ),
31422
+ v_cpu_count=ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty(
31423
+ min=123,
31424
+
31425
+ # the properties below are optional
31426
+ max=123
31427
+ ),
31428
+
31429
+ # the properties below are optional
31430
+ accelerator_count=ecs.CfnCapacityProvider.AcceleratorCountRequestProperty(
31431
+ max=123,
31432
+ min=123
31433
+ ),
31434
+ accelerator_manufacturers=["acceleratorManufacturers"],
31435
+ accelerator_names=["acceleratorNames"],
31436
+ accelerator_total_memory_mi_b=ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty(
31437
+ max=123,
31438
+ min=123
31439
+ ),
31440
+ accelerator_types=["acceleratorTypes"],
31441
+ allowed_instance_types=["allowedInstanceTypes"],
31442
+ bare_metal="bareMetal",
31443
+ baseline_ebs_bandwidth_mbps=ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty(
31444
+ max=123,
31445
+ min=123
31446
+ ),
31447
+ burstable_performance="burstablePerformance",
31448
+ cpu_manufacturers=["cpuManufacturers"],
31449
+ excluded_instance_types=["excludedInstanceTypes"],
31450
+ instance_generations=["instanceGenerations"],
31451
+ local_storage="localStorage",
31452
+ local_storage_types=["localStorageTypes"],
31453
+ max_spot_price_as_percentage_of_optimal_on_demand_price=123,
31454
+ memory_gi_bPer_vCpu=ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty(
31455
+ max=123,
31456
+ min=123
31457
+ ),
31458
+ network_bandwidth_gbps=ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty(
31459
+ max=123,
31460
+ min=123
31461
+ ),
31462
+ network_interface_count=ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty(
31463
+ max=123,
31464
+ min=123
31465
+ ),
31466
+ on_demand_max_price_percentage_over_lowest_price=123,
31467
+ require_hibernate_support=False,
31468
+ spot_max_price_percentage_over_lowest_price=123,
31469
+ total_local_storage_gb=ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty(
31470
+ max=123,
31471
+ min=123
31472
+ )
31473
+ ),
31474
+ monitoring="monitoring",
31475
+ storage_configuration=ecs.CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty(
31476
+ storage_size_gi_b=123
31477
+ )
31478
+ ),
31479
+
31480
+ # the properties below are optional
31481
+ propagate_tags="propagateTags"
31482
+ ),
30707
31483
  name="name",
30708
31484
  tags=[CfnTag(
30709
31485
  key="key",
@@ -30718,6 +31494,8 @@ class CfnCapacityProvider(
30718
31494
  id: builtins.str,
30719
31495
  *,
30720
31496
  auto_scaling_group_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.AutoScalingGroupProviderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
31497
+ cluster_name: typing.Optional[builtins.str] = None,
31498
+ managed_instances_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.ManagedInstancesProviderProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
30721
31499
  name: typing.Optional[builtins.str] = None,
30722
31500
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
30723
31501
  ) -> None:
@@ -30725,6 +31503,8 @@ class CfnCapacityProvider(
30725
31503
  :param scope: Scope in which this resource is defined.
30726
31504
  :param id: Construct identifier for this resource (unique in its scope).
30727
31505
  :param auto_scaling_group_provider: The Auto Scaling group settings for the capacity provider.
31506
+ :param cluster_name:
31507
+ :param managed_instances_provider: The configuration for the Amazon ECS Managed Instances provider. This includes the infrastructure role, the launch template configuration, and tag propagation settings.
30728
31508
  :param name: The name of the capacity provider. If a name is specified, it cannot start with ``aws`` , ``ecs`` , or ``fargate`` . If no name is specified, a default name in the ``CFNStackName-CFNResourceName-RandomString`` format is used.
30729
31509
  :param tags: The metadata that you apply to the capacity provider to help you categorize and organize it. Each tag consists of a key and an optional value. You define both. The following basic restrictions apply to tags: - Maximum number of tags per resource - 50 - For each resource, each tag key must be unique, and each tag key can have only one value. - Maximum key length - 128 Unicode characters in UTF-8 - Maximum value length - 256 Unicode characters in UTF-8 - If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
30730
31510
  '''
@@ -30734,6 +31514,8 @@ class CfnCapacityProvider(
30734
31514
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
30735
31515
  props = CfnCapacityProviderProps(
30736
31516
  auto_scaling_group_provider=auto_scaling_group_provider,
31517
+ cluster_name=cluster_name,
31518
+ managed_instances_provider=managed_instances_provider,
30737
31519
  name=name,
30738
31520
  tags=tags,
30739
31521
  )
@@ -30826,6 +31608,36 @@ class CfnCapacityProvider(
30826
31608
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
30827
31609
  jsii.set(self, "autoScalingGroupProvider", value) # pyright: ignore[reportArgumentType]
30828
31610
 
31611
+ @builtins.property
31612
+ @jsii.member(jsii_name="clusterName")
31613
+ def cluster_name(self) -> typing.Optional[builtins.str]:
31614
+ return typing.cast(typing.Optional[builtins.str], jsii.get(self, "clusterName"))
31615
+
31616
+ @cluster_name.setter
31617
+ def cluster_name(self, value: typing.Optional[builtins.str]) -> None:
31618
+ if __debug__:
31619
+ type_hints = typing.get_type_hints(_typecheckingstub__56e821d6de113ad791628d9a188368814c7c0fb94ce466313a674dfb2a04780b)
31620
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
31621
+ jsii.set(self, "clusterName", value) # pyright: ignore[reportArgumentType]
31622
+
31623
+ @builtins.property
31624
+ @jsii.member(jsii_name="managedInstancesProvider")
31625
+ def managed_instances_provider(
31626
+ self,
31627
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesProviderProperty"]]:
31628
+ '''The configuration for the Amazon ECS Managed Instances provider.'''
31629
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesProviderProperty"]], jsii.get(self, "managedInstancesProvider"))
31630
+
31631
+ @managed_instances_provider.setter
31632
+ def managed_instances_provider(
31633
+ self,
31634
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesProviderProperty"]],
31635
+ ) -> None:
31636
+ if __debug__:
31637
+ type_hints = typing.get_type_hints(_typecheckingstub__1eade181f601623fa0955313b90bd74d62cfcd3ee4f4809fd9998abc514cb4bc)
31638
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
31639
+ jsii.set(self, "managedInstancesProvider", value) # pyright: ignore[reportArgumentType]
31640
+
30829
31641
  @builtins.property
30830
31642
  @jsii.member(jsii_name="name")
30831
31643
  def name(self) -> typing.Optional[builtins.str]:
@@ -30852,6 +31664,158 @@ class CfnCapacityProvider(
30852
31664
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
30853
31665
  jsii.set(self, "tagsRaw", value) # pyright: ignore[reportArgumentType]
30854
31666
 
31667
+ @jsii.data_type(
31668
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.AcceleratorCountRequestProperty",
31669
+ jsii_struct_bases=[],
31670
+ name_mapping={"max": "max", "min": "min"},
31671
+ )
31672
+ class AcceleratorCountRequestProperty:
31673
+ def __init__(
31674
+ self,
31675
+ *,
31676
+ max: typing.Optional[jsii.Number] = None,
31677
+ min: typing.Optional[jsii.Number] = None,
31678
+ ) -> None:
31679
+ '''The minimum and maximum number of accelerators (such as GPUs) for instance type selection.
31680
+
31681
+ This is used for workloads that require specific numbers of accelerators.
31682
+
31683
+ :param max: The maximum number of accelerators. Instance types with more accelerators are excluded from selection.
31684
+ :param min: The minimum number of accelerators. Instance types with fewer accelerators are excluded from selection.
31685
+
31686
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-acceleratorcountrequest.html
31687
+ :exampleMetadata: fixture=_generated
31688
+
31689
+ Example::
31690
+
31691
+ # The code below shows an example of how to instantiate this type.
31692
+ # The values are placeholders you should change.
31693
+ from aws_cdk import aws_ecs as ecs
31694
+
31695
+ accelerator_count_request_property = ecs.CfnCapacityProvider.AcceleratorCountRequestProperty(
31696
+ max=123,
31697
+ min=123
31698
+ )
31699
+ '''
31700
+ if __debug__:
31701
+ type_hints = typing.get_type_hints(_typecheckingstub__43d53bcba92c90cf6f4d328d0942a76121d27482644e63c47c94438bbe161846)
31702
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
31703
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
31704
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
31705
+ if max is not None:
31706
+ self._values["max"] = max
31707
+ if min is not None:
31708
+ self._values["min"] = min
31709
+
31710
+ @builtins.property
31711
+ def max(self) -> typing.Optional[jsii.Number]:
31712
+ '''The maximum number of accelerators.
31713
+
31714
+ Instance types with more accelerators are excluded from selection.
31715
+
31716
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-acceleratorcountrequest.html#cfn-ecs-capacityprovider-acceleratorcountrequest-max
31717
+ '''
31718
+ result = self._values.get("max")
31719
+ return typing.cast(typing.Optional[jsii.Number], result)
31720
+
31721
+ @builtins.property
31722
+ def min(self) -> typing.Optional[jsii.Number]:
31723
+ '''The minimum number of accelerators.
31724
+
31725
+ Instance types with fewer accelerators are excluded from selection.
31726
+
31727
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-acceleratorcountrequest.html#cfn-ecs-capacityprovider-acceleratorcountrequest-min
31728
+ '''
31729
+ result = self._values.get("min")
31730
+ return typing.cast(typing.Optional[jsii.Number], result)
31731
+
31732
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
31733
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
31734
+
31735
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
31736
+ return not (rhs == self)
31737
+
31738
+ def __repr__(self) -> str:
31739
+ return "AcceleratorCountRequestProperty(%s)" % ", ".join(
31740
+ k + "=" + repr(v) for k, v in self._values.items()
31741
+ )
31742
+
31743
+ @jsii.data_type(
31744
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty",
31745
+ jsii_struct_bases=[],
31746
+ name_mapping={"max": "max", "min": "min"},
31747
+ )
31748
+ class AcceleratorTotalMemoryMiBRequestProperty:
31749
+ def __init__(
31750
+ self,
31751
+ *,
31752
+ max: typing.Optional[jsii.Number] = None,
31753
+ min: typing.Optional[jsii.Number] = None,
31754
+ ) -> None:
31755
+ '''The minimum and maximum total accelerator memory in mebibytes (MiB) for instance type selection.
31756
+
31757
+ This is important for GPU workloads that require specific amounts of video memory.
31758
+
31759
+ :param max: The maximum total accelerator memory in MiB. Instance types with more accelerator memory are excluded from selection.
31760
+ :param min: The minimum total accelerator memory in MiB. Instance types with less accelerator memory are excluded from selection.
31761
+
31762
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-acceleratortotalmemorymibrequest.html
31763
+ :exampleMetadata: fixture=_generated
31764
+
31765
+ Example::
31766
+
31767
+ # The code below shows an example of how to instantiate this type.
31768
+ # The values are placeholders you should change.
31769
+ from aws_cdk import aws_ecs as ecs
31770
+
31771
+ accelerator_total_memory_mi_bRequest_property = ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty(
31772
+ max=123,
31773
+ min=123
31774
+ )
31775
+ '''
31776
+ if __debug__:
31777
+ type_hints = typing.get_type_hints(_typecheckingstub__05b0b4abd870382eb40911671e91b829abe416723b1b38346d22783d1a2c8f67)
31778
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
31779
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
31780
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
31781
+ if max is not None:
31782
+ self._values["max"] = max
31783
+ if min is not None:
31784
+ self._values["min"] = min
31785
+
31786
+ @builtins.property
31787
+ def max(self) -> typing.Optional[jsii.Number]:
31788
+ '''The maximum total accelerator memory in MiB.
31789
+
31790
+ Instance types with more accelerator memory are excluded from selection.
31791
+
31792
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-acceleratortotalmemorymibrequest.html#cfn-ecs-capacityprovider-acceleratortotalmemorymibrequest-max
31793
+ '''
31794
+ result = self._values.get("max")
31795
+ return typing.cast(typing.Optional[jsii.Number], result)
31796
+
31797
+ @builtins.property
31798
+ def min(self) -> typing.Optional[jsii.Number]:
31799
+ '''The minimum total accelerator memory in MiB.
31800
+
31801
+ Instance types with less accelerator memory are excluded from selection.
31802
+
31803
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-acceleratortotalmemorymibrequest.html#cfn-ecs-capacityprovider-acceleratortotalmemorymibrequest-min
31804
+ '''
31805
+ result = self._values.get("min")
31806
+ return typing.cast(typing.Optional[jsii.Number], result)
31807
+
31808
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
31809
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
31810
+
31811
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
31812
+ return not (rhs == self)
31813
+
31814
+ def __repr__(self) -> str:
31815
+ return "AcceleratorTotalMemoryMiBRequestProperty(%s)" % ", ".join(
31816
+ k + "=" + repr(v) for k, v in self._values.items()
31817
+ )
31818
+
30855
31819
  @jsii.data_type(
30856
31820
  jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.AutoScalingGroupProviderProperty",
30857
31821
  jsii_struct_bases=[],
@@ -30979,6 +31943,1141 @@ class CfnCapacityProvider(
30979
31943
  k + "=" + repr(v) for k, v in self._values.items()
30980
31944
  )
30981
31945
 
31946
+ @jsii.data_type(
31947
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty",
31948
+ jsii_struct_bases=[],
31949
+ name_mapping={"max": "max", "min": "min"},
31950
+ )
31951
+ class BaselineEbsBandwidthMbpsRequestProperty:
31952
+ def __init__(
31953
+ self,
31954
+ *,
31955
+ max: typing.Optional[jsii.Number] = None,
31956
+ min: typing.Optional[jsii.Number] = None,
31957
+ ) -> None:
31958
+ '''The minimum and maximum baseline Amazon EBS bandwidth in megabits per second (Mbps) for instance type selection.
31959
+
31960
+ This is important for workloads with high storage I/O requirements.
31961
+
31962
+ :param max: The maximum baseline Amazon EBS bandwidth in Mbps. Instance types with higher Amazon EBS bandwidth are excluded from selection.
31963
+ :param min: The minimum baseline Amazon EBS bandwidth in Mbps. Instance types with lower Amazon EBS bandwidth are excluded from selection.
31964
+
31965
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-baselineebsbandwidthmbpsrequest.html
31966
+ :exampleMetadata: fixture=_generated
31967
+
31968
+ Example::
31969
+
31970
+ # The code below shows an example of how to instantiate this type.
31971
+ # The values are placeholders you should change.
31972
+ from aws_cdk import aws_ecs as ecs
31973
+
31974
+ baseline_ebs_bandwidth_mbps_request_property = ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty(
31975
+ max=123,
31976
+ min=123
31977
+ )
31978
+ '''
31979
+ if __debug__:
31980
+ type_hints = typing.get_type_hints(_typecheckingstub__55f829b236ccb12cc42e7c374a47c6c0909fecf313bf4ebb779169af029b2ba4)
31981
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
31982
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
31983
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
31984
+ if max is not None:
31985
+ self._values["max"] = max
31986
+ if min is not None:
31987
+ self._values["min"] = min
31988
+
31989
+ @builtins.property
31990
+ def max(self) -> typing.Optional[jsii.Number]:
31991
+ '''The maximum baseline Amazon EBS bandwidth in Mbps.
31992
+
31993
+ Instance types with higher Amazon EBS bandwidth are excluded from selection.
31994
+
31995
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-baselineebsbandwidthmbpsrequest.html#cfn-ecs-capacityprovider-baselineebsbandwidthmbpsrequest-max
31996
+ '''
31997
+ result = self._values.get("max")
31998
+ return typing.cast(typing.Optional[jsii.Number], result)
31999
+
32000
+ @builtins.property
32001
+ def min(self) -> typing.Optional[jsii.Number]:
32002
+ '''The minimum baseline Amazon EBS bandwidth in Mbps.
32003
+
32004
+ Instance types with lower Amazon EBS bandwidth are excluded from selection.
32005
+
32006
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-baselineebsbandwidthmbpsrequest.html#cfn-ecs-capacityprovider-baselineebsbandwidthmbpsrequest-min
32007
+ '''
32008
+ result = self._values.get("min")
32009
+ return typing.cast(typing.Optional[jsii.Number], result)
32010
+
32011
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
32012
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
32013
+
32014
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
32015
+ return not (rhs == self)
32016
+
32017
+ def __repr__(self) -> str:
32018
+ return "BaselineEbsBandwidthMbpsRequestProperty(%s)" % ", ".join(
32019
+ k + "=" + repr(v) for k, v in self._values.items()
32020
+ )
32021
+
32022
+ @jsii.data_type(
32023
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.InstanceLaunchTemplateProperty",
32024
+ jsii_struct_bases=[],
32025
+ name_mapping={
32026
+ "ec2_instance_profile_arn": "ec2InstanceProfileArn",
32027
+ "network_configuration": "networkConfiguration",
32028
+ "instance_requirements": "instanceRequirements",
32029
+ "monitoring": "monitoring",
32030
+ "storage_configuration": "storageConfiguration",
32031
+ },
32032
+ )
32033
+ class InstanceLaunchTemplateProperty:
32034
+ def __init__(
32035
+ self,
32036
+ *,
32037
+ ec2_instance_profile_arn: builtins.str,
32038
+ network_configuration: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty", typing.Dict[builtins.str, typing.Any]]],
32039
+ instance_requirements: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.InstanceRequirementsRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32040
+ monitoring: typing.Optional[builtins.str] = None,
32041
+ storage_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32042
+ ) -> None:
32043
+ '''The launch template configuration for Amazon ECS Managed Instances.
32044
+
32045
+ This defines how Amazon ECS launches Amazon EC2 instances, including the instance profile for your tasks, network and storage configuration, capacity options, and instance requirements for flexible instance type selection.
32046
+
32047
+ :param ec2_instance_profile_arn: The Amazon Resource Name (ARN) of the instance profile that Amazon ECS applies to Amazon ECS Managed Instances. This instance profile must include the necessary permissions for your tasks to access AWS services and resources. For more information, see `Amazon ECS instance profile for Managed Instances <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-instance-profile.html>`_ in the *Amazon ECS Developer Guide* .
32048
+ :param network_configuration: The network configuration for Amazon ECS Managed Instances. This specifies the subnets and security groups that instances use for network connectivity.
32049
+ :param instance_requirements: The instance requirements. You can specify:. - The instance types - Instance requirements such as vCPU count, memory, network performance, and accelerator specifications Amazon ECS automatically selects the instances that match the specified criteria.
32050
+ :param monitoring: CloudWatch provides two categories of monitoring: basic monitoring and detailed monitoring. By default, your managed instance is configured for basic monitoring. You can optionally enable detailed monitoring to help you more quickly identify and act on operational issues. You can enable or turn off detailed monitoring at launch or when the managed instance is running or stopped. For more information, see `Detailed monitoring for Amazon ECS Managed Instances <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/detailed-monitoring-managed-instances.html>`_ in the Amazon ECS Developer Guide.
32051
+ :param storage_configuration: The storage configuration for Amazon ECS Managed Instances. This defines the root volume size and type for the instances.
32052
+
32053
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancelaunchtemplate.html
32054
+ :exampleMetadata: fixture=_generated
32055
+
32056
+ Example::
32057
+
32058
+ # The code below shows an example of how to instantiate this type.
32059
+ # The values are placeholders you should change.
32060
+ from aws_cdk import aws_ecs as ecs
32061
+
32062
+ instance_launch_template_property = ecs.CfnCapacityProvider.InstanceLaunchTemplateProperty(
32063
+ ec2_instance_profile_arn="ec2InstanceProfileArn",
32064
+ network_configuration=ecs.CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty(
32065
+ subnets=["subnets"],
32066
+
32067
+ # the properties below are optional
32068
+ security_groups=["securityGroups"]
32069
+ ),
32070
+
32071
+ # the properties below are optional
32072
+ instance_requirements=ecs.CfnCapacityProvider.InstanceRequirementsRequestProperty(
32073
+ memory_mi_b=ecs.CfnCapacityProvider.MemoryMiBRequestProperty(
32074
+ min=123,
32075
+
32076
+ # the properties below are optional
32077
+ max=123
32078
+ ),
32079
+ v_cpu_count=ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty(
32080
+ min=123,
32081
+
32082
+ # the properties below are optional
32083
+ max=123
32084
+ ),
32085
+
32086
+ # the properties below are optional
32087
+ accelerator_count=ecs.CfnCapacityProvider.AcceleratorCountRequestProperty(
32088
+ max=123,
32089
+ min=123
32090
+ ),
32091
+ accelerator_manufacturers=["acceleratorManufacturers"],
32092
+ accelerator_names=["acceleratorNames"],
32093
+ accelerator_total_memory_mi_b=ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty(
32094
+ max=123,
32095
+ min=123
32096
+ ),
32097
+ accelerator_types=["acceleratorTypes"],
32098
+ allowed_instance_types=["allowedInstanceTypes"],
32099
+ bare_metal="bareMetal",
32100
+ baseline_ebs_bandwidth_mbps=ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty(
32101
+ max=123,
32102
+ min=123
32103
+ ),
32104
+ burstable_performance="burstablePerformance",
32105
+ cpu_manufacturers=["cpuManufacturers"],
32106
+ excluded_instance_types=["excludedInstanceTypes"],
32107
+ instance_generations=["instanceGenerations"],
32108
+ local_storage="localStorage",
32109
+ local_storage_types=["localStorageTypes"],
32110
+ max_spot_price_as_percentage_of_optimal_on_demand_price=123,
32111
+ memory_gi_bPer_vCpu=ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty(
32112
+ max=123,
32113
+ min=123
32114
+ ),
32115
+ network_bandwidth_gbps=ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty(
32116
+ max=123,
32117
+ min=123
32118
+ ),
32119
+ network_interface_count=ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty(
32120
+ max=123,
32121
+ min=123
32122
+ ),
32123
+ on_demand_max_price_percentage_over_lowest_price=123,
32124
+ require_hibernate_support=False,
32125
+ spot_max_price_percentage_over_lowest_price=123,
32126
+ total_local_storage_gb=ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty(
32127
+ max=123,
32128
+ min=123
32129
+ )
32130
+ ),
32131
+ monitoring="monitoring",
32132
+ storage_configuration=ecs.CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty(
32133
+ storage_size_gi_b=123
32134
+ )
32135
+ )
32136
+ '''
32137
+ if __debug__:
32138
+ type_hints = typing.get_type_hints(_typecheckingstub__cb545da33f3067adee24bf90d3e903b06a7562a7e6ea6b3785f5b0ae6f3e105d)
32139
+ check_type(argname="argument ec2_instance_profile_arn", value=ec2_instance_profile_arn, expected_type=type_hints["ec2_instance_profile_arn"])
32140
+ check_type(argname="argument network_configuration", value=network_configuration, expected_type=type_hints["network_configuration"])
32141
+ check_type(argname="argument instance_requirements", value=instance_requirements, expected_type=type_hints["instance_requirements"])
32142
+ check_type(argname="argument monitoring", value=monitoring, expected_type=type_hints["monitoring"])
32143
+ check_type(argname="argument storage_configuration", value=storage_configuration, expected_type=type_hints["storage_configuration"])
32144
+ self._values: typing.Dict[builtins.str, typing.Any] = {
32145
+ "ec2_instance_profile_arn": ec2_instance_profile_arn,
32146
+ "network_configuration": network_configuration,
32147
+ }
32148
+ if instance_requirements is not None:
32149
+ self._values["instance_requirements"] = instance_requirements
32150
+ if monitoring is not None:
32151
+ self._values["monitoring"] = monitoring
32152
+ if storage_configuration is not None:
32153
+ self._values["storage_configuration"] = storage_configuration
32154
+
32155
+ @builtins.property
32156
+ def ec2_instance_profile_arn(self) -> builtins.str:
32157
+ '''The Amazon Resource Name (ARN) of the instance profile that Amazon ECS applies to Amazon ECS Managed Instances.
32158
+
32159
+ This instance profile must include the necessary permissions for your tasks to access AWS services and resources.
32160
+
32161
+ For more information, see `Amazon ECS instance profile for Managed Instances <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-instance-profile.html>`_ in the *Amazon ECS Developer Guide* .
32162
+
32163
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancelaunchtemplate.html#cfn-ecs-capacityprovider-instancelaunchtemplate-ec2instanceprofilearn
32164
+ '''
32165
+ result = self._values.get("ec2_instance_profile_arn")
32166
+ assert result is not None, "Required property 'ec2_instance_profile_arn' is missing"
32167
+ return typing.cast(builtins.str, result)
32168
+
32169
+ @builtins.property
32170
+ def network_configuration(
32171
+ self,
32172
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty"]:
32173
+ '''The network configuration for Amazon ECS Managed Instances.
32174
+
32175
+ This specifies the subnets and security groups that instances use for network connectivity.
32176
+
32177
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancelaunchtemplate.html#cfn-ecs-capacityprovider-instancelaunchtemplate-networkconfiguration
32178
+ '''
32179
+ result = self._values.get("network_configuration")
32180
+ assert result is not None, "Required property 'network_configuration' is missing"
32181
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty"], result)
32182
+
32183
+ @builtins.property
32184
+ def instance_requirements(
32185
+ self,
32186
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.InstanceRequirementsRequestProperty"]]:
32187
+ '''The instance requirements. You can specify:.
32188
+
32189
+ - The instance types
32190
+ - Instance requirements such as vCPU count, memory, network performance, and accelerator specifications
32191
+
32192
+ Amazon ECS automatically selects the instances that match the specified criteria.
32193
+
32194
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancelaunchtemplate.html#cfn-ecs-capacityprovider-instancelaunchtemplate-instancerequirements
32195
+ '''
32196
+ result = self._values.get("instance_requirements")
32197
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.InstanceRequirementsRequestProperty"]], result)
32198
+
32199
+ @builtins.property
32200
+ def monitoring(self) -> typing.Optional[builtins.str]:
32201
+ '''CloudWatch provides two categories of monitoring: basic monitoring and detailed monitoring.
32202
+
32203
+ By default, your managed instance is configured for basic monitoring. You can optionally enable detailed monitoring to help you more quickly identify and act on operational issues. You can enable or turn off detailed monitoring at launch or when the managed instance is running or stopped. For more information, see `Detailed monitoring for Amazon ECS Managed Instances <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/detailed-monitoring-managed-instances.html>`_ in the Amazon ECS Developer Guide.
32204
+
32205
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancelaunchtemplate.html#cfn-ecs-capacityprovider-instancelaunchtemplate-monitoring
32206
+ '''
32207
+ result = self._values.get("monitoring")
32208
+ return typing.cast(typing.Optional[builtins.str], result)
32209
+
32210
+ @builtins.property
32211
+ def storage_configuration(
32212
+ self,
32213
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty"]]:
32214
+ '''The storage configuration for Amazon ECS Managed Instances.
32215
+
32216
+ This defines the root volume size and type for the instances.
32217
+
32218
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancelaunchtemplate.html#cfn-ecs-capacityprovider-instancelaunchtemplate-storageconfiguration
32219
+ '''
32220
+ result = self._values.get("storage_configuration")
32221
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty"]], result)
32222
+
32223
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
32224
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
32225
+
32226
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
32227
+ return not (rhs == self)
32228
+
32229
+ def __repr__(self) -> str:
32230
+ return "InstanceLaunchTemplateProperty(%s)" % ", ".join(
32231
+ k + "=" + repr(v) for k, v in self._values.items()
32232
+ )
32233
+
32234
+ @jsii.data_type(
32235
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.InstanceRequirementsRequestProperty",
32236
+ jsii_struct_bases=[],
32237
+ name_mapping={
32238
+ "memory_mib": "memoryMiB",
32239
+ "v_cpu_count": "vCpuCount",
32240
+ "accelerator_count": "acceleratorCount",
32241
+ "accelerator_manufacturers": "acceleratorManufacturers",
32242
+ "accelerator_names": "acceleratorNames",
32243
+ "accelerator_total_memory_mib": "acceleratorTotalMemoryMiB",
32244
+ "accelerator_types": "acceleratorTypes",
32245
+ "allowed_instance_types": "allowedInstanceTypes",
32246
+ "bare_metal": "bareMetal",
32247
+ "baseline_ebs_bandwidth_mbps": "baselineEbsBandwidthMbps",
32248
+ "burstable_performance": "burstablePerformance",
32249
+ "cpu_manufacturers": "cpuManufacturers",
32250
+ "excluded_instance_types": "excludedInstanceTypes",
32251
+ "instance_generations": "instanceGenerations",
32252
+ "local_storage": "localStorage",
32253
+ "local_storage_types": "localStorageTypes",
32254
+ "max_spot_price_as_percentage_of_optimal_on_demand_price": "maxSpotPriceAsPercentageOfOptimalOnDemandPrice",
32255
+ "memory_gib_per_v_cpu": "memoryGiBPerVCpu",
32256
+ "network_bandwidth_gbps": "networkBandwidthGbps",
32257
+ "network_interface_count": "networkInterfaceCount",
32258
+ "on_demand_max_price_percentage_over_lowest_price": "onDemandMaxPricePercentageOverLowestPrice",
32259
+ "require_hibernate_support": "requireHibernateSupport",
32260
+ "spot_max_price_percentage_over_lowest_price": "spotMaxPricePercentageOverLowestPrice",
32261
+ "total_local_storage_gb": "totalLocalStorageGb",
32262
+ },
32263
+ )
32264
+ class InstanceRequirementsRequestProperty:
32265
+ def __init__(
32266
+ self,
32267
+ *,
32268
+ memory_mib: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.MemoryMiBRequestProperty", typing.Dict[builtins.str, typing.Any]]],
32269
+ v_cpu_count: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.VCpuCountRangeRequestProperty", typing.Dict[builtins.str, typing.Any]]],
32270
+ accelerator_count: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.AcceleratorCountRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32271
+ accelerator_manufacturers: typing.Optional[typing.Sequence[builtins.str]] = None,
32272
+ accelerator_names: typing.Optional[typing.Sequence[builtins.str]] = None,
32273
+ accelerator_total_memory_mib: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32274
+ accelerator_types: typing.Optional[typing.Sequence[builtins.str]] = None,
32275
+ allowed_instance_types: typing.Optional[typing.Sequence[builtins.str]] = None,
32276
+ bare_metal: typing.Optional[builtins.str] = None,
32277
+ baseline_ebs_bandwidth_mbps: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32278
+ burstable_performance: typing.Optional[builtins.str] = None,
32279
+ cpu_manufacturers: typing.Optional[typing.Sequence[builtins.str]] = None,
32280
+ excluded_instance_types: typing.Optional[typing.Sequence[builtins.str]] = None,
32281
+ instance_generations: typing.Optional[typing.Sequence[builtins.str]] = None,
32282
+ local_storage: typing.Optional[builtins.str] = None,
32283
+ local_storage_types: typing.Optional[typing.Sequence[builtins.str]] = None,
32284
+ max_spot_price_as_percentage_of_optimal_on_demand_price: typing.Optional[jsii.Number] = None,
32285
+ memory_gib_per_v_cpu: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32286
+ network_bandwidth_gbps: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32287
+ network_interface_count: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.NetworkInterfaceCountRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32288
+ on_demand_max_price_percentage_over_lowest_price: typing.Optional[jsii.Number] = None,
32289
+ require_hibernate_support: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
32290
+ spot_max_price_percentage_over_lowest_price: typing.Optional[jsii.Number] = None,
32291
+ total_local_storage_gb: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.TotalLocalStorageGBRequestProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
32292
+ ) -> None:
32293
+ '''The instance requirements for attribute-based instance type selection.
32294
+
32295
+ Instead of specifying exact instance types, you define requirements such as vCPU count, memory size, network performance, and accelerator specifications. Amazon ECS automatically selects Amazon EC2 instance types that match these requirements, providing flexibility and helping to mitigate capacity constraints.
32296
+
32297
+ :param memory_mib: The minimum and maximum amount of memory in mebibytes (MiB) for the instance types. Amazon ECS selects instance types that have memory within this range.
32298
+ :param v_cpu_count: The minimum and maximum number of vCPUs for the instance types. Amazon ECS selects instance types that have vCPU counts within this range.
32299
+ :param accelerator_count: The minimum and maximum number of accelerators for the instance types. This is used when you need instances with specific numbers of GPUs or other accelerators.
32300
+ :param accelerator_manufacturers: The accelerator manufacturers to include. You can specify ``nvidia`` , ``amd`` , ``amazon-web-services`` , or ``xilinx`` depending on your accelerator requirements.
32301
+ :param accelerator_names: The specific accelerator names to include. For example, you can specify ``a100`` , ``v100`` , ``k80`` , or other specific accelerator models.
32302
+ :param accelerator_total_memory_mib: The minimum and maximum total accelerator memory in mebibytes (MiB). This is important for GPU workloads that require specific amounts of video memory.
32303
+ :param accelerator_types: The accelerator types to include. You can specify ``gpu`` for graphics processing units, ``fpga`` for field programmable gate arrays, or ``inference`` for machine learning inference accelerators.
32304
+ :param allowed_instance_types: The instance types to include in the selection. When specified, Amazon ECS only considers these instance types, subject to the other requirements specified.
32305
+ :param bare_metal: Indicates whether to include bare metal instance types. Set to ``included`` to allow bare metal instances, ``excluded`` to exclude them, or ``required`` to use only bare metal instances.
32306
+ :param baseline_ebs_bandwidth_mbps: The minimum and maximum baseline Amazon EBS bandwidth in megabits per second (Mbps). This is important for workloads with high storage I/O requirements.
32307
+ :param burstable_performance: Indicates whether to include burstable performance instance types (T2, T3, T3a, T4g). Set to ``included`` to allow burstable instances, ``excluded`` to exclude them, or ``required`` to use only burstable instances.
32308
+ :param cpu_manufacturers: The CPU manufacturers to include or exclude. You can specify ``intel`` , ``amd`` , or ``amazon-web-services`` to control which CPU types are used for your workloads.
32309
+ :param excluded_instance_types: The instance types to exclude from selection. Use this to prevent Amazon ECS from selecting specific instance types that may not be suitable for your workloads.
32310
+ :param instance_generations: The instance generations to include. You can specify ``current`` to use the latest generation instances, or ``previous`` to include previous generation instances for cost optimization.
32311
+ :param local_storage: Indicates whether to include instance types with local storage. Set to ``included`` to allow local storage, ``excluded`` to exclude it, or ``required`` to use only instances with local storage.
32312
+ :param local_storage_types: The local storage types to include. You can specify ``hdd`` for hard disk drives, ``ssd`` for solid state drives, or both.
32313
+ :param max_spot_price_as_percentage_of_optimal_on_demand_price: The maximum price for Spot instances as a percentage of the optimal On-Demand price. This provides more precise cost control for Spot instance selection.
32314
+ :param memory_gib_per_v_cpu: The minimum and maximum amount of memory per vCPU in gibibytes (GiB). This helps ensure that instance types have the appropriate memory-to-CPU ratio for your workloads.
32315
+ :param network_bandwidth_gbps: The minimum and maximum network bandwidth in gigabits per second (Gbps). This is crucial for network-intensive workloads that require high throughput.
32316
+ :param network_interface_count: The minimum and maximum number of network interfaces for the instance types. This is useful for workloads that require multiple network interfaces.
32317
+ :param on_demand_max_price_percentage_over_lowest_price: The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price. The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon ECS selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold.
32318
+ :param require_hibernate_support: Indicates whether the instance types must support hibernation. When set to ``true`` , only instance types that support hibernation are selected.
32319
+ :param spot_max_price_percentage_over_lowest_price: The maximum price for Spot instances as a percentage over the lowest priced On-Demand instance. This helps control Spot instance costs while maintaining access to capacity.
32320
+ :param total_local_storage_gb: The minimum and maximum total local storage in gigabytes (GB) for instance types with local storage.
32321
+
32322
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html
32323
+ :exampleMetadata: fixture=_generated
32324
+
32325
+ Example::
32326
+
32327
+ # The code below shows an example of how to instantiate this type.
32328
+ # The values are placeholders you should change.
32329
+ from aws_cdk import aws_ecs as ecs
32330
+
32331
+ instance_requirements_request_property = ecs.CfnCapacityProvider.InstanceRequirementsRequestProperty(
32332
+ memory_mi_b=ecs.CfnCapacityProvider.MemoryMiBRequestProperty(
32333
+ min=123,
32334
+
32335
+ # the properties below are optional
32336
+ max=123
32337
+ ),
32338
+ v_cpu_count=ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty(
32339
+ min=123,
32340
+
32341
+ # the properties below are optional
32342
+ max=123
32343
+ ),
32344
+
32345
+ # the properties below are optional
32346
+ accelerator_count=ecs.CfnCapacityProvider.AcceleratorCountRequestProperty(
32347
+ max=123,
32348
+ min=123
32349
+ ),
32350
+ accelerator_manufacturers=["acceleratorManufacturers"],
32351
+ accelerator_names=["acceleratorNames"],
32352
+ accelerator_total_memory_mi_b=ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty(
32353
+ max=123,
32354
+ min=123
32355
+ ),
32356
+ accelerator_types=["acceleratorTypes"],
32357
+ allowed_instance_types=["allowedInstanceTypes"],
32358
+ bare_metal="bareMetal",
32359
+ baseline_ebs_bandwidth_mbps=ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty(
32360
+ max=123,
32361
+ min=123
32362
+ ),
32363
+ burstable_performance="burstablePerformance",
32364
+ cpu_manufacturers=["cpuManufacturers"],
32365
+ excluded_instance_types=["excludedInstanceTypes"],
32366
+ instance_generations=["instanceGenerations"],
32367
+ local_storage="localStorage",
32368
+ local_storage_types=["localStorageTypes"],
32369
+ max_spot_price_as_percentage_of_optimal_on_demand_price=123,
32370
+ memory_gi_bPer_vCpu=ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty(
32371
+ max=123,
32372
+ min=123
32373
+ ),
32374
+ network_bandwidth_gbps=ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty(
32375
+ max=123,
32376
+ min=123
32377
+ ),
32378
+ network_interface_count=ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty(
32379
+ max=123,
32380
+ min=123
32381
+ ),
32382
+ on_demand_max_price_percentage_over_lowest_price=123,
32383
+ require_hibernate_support=False,
32384
+ spot_max_price_percentage_over_lowest_price=123,
32385
+ total_local_storage_gb=ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty(
32386
+ max=123,
32387
+ min=123
32388
+ )
32389
+ )
32390
+ '''
32391
+ if __debug__:
32392
+ type_hints = typing.get_type_hints(_typecheckingstub__d2fd7f319e7a3e49a0d45d342ee067f3719bf8c8519bbab1a3a3c81f41641bec)
32393
+ check_type(argname="argument memory_mib", value=memory_mib, expected_type=type_hints["memory_mib"])
32394
+ check_type(argname="argument v_cpu_count", value=v_cpu_count, expected_type=type_hints["v_cpu_count"])
32395
+ check_type(argname="argument accelerator_count", value=accelerator_count, expected_type=type_hints["accelerator_count"])
32396
+ check_type(argname="argument accelerator_manufacturers", value=accelerator_manufacturers, expected_type=type_hints["accelerator_manufacturers"])
32397
+ check_type(argname="argument accelerator_names", value=accelerator_names, expected_type=type_hints["accelerator_names"])
32398
+ check_type(argname="argument accelerator_total_memory_mib", value=accelerator_total_memory_mib, expected_type=type_hints["accelerator_total_memory_mib"])
32399
+ check_type(argname="argument accelerator_types", value=accelerator_types, expected_type=type_hints["accelerator_types"])
32400
+ check_type(argname="argument allowed_instance_types", value=allowed_instance_types, expected_type=type_hints["allowed_instance_types"])
32401
+ check_type(argname="argument bare_metal", value=bare_metal, expected_type=type_hints["bare_metal"])
32402
+ check_type(argname="argument baseline_ebs_bandwidth_mbps", value=baseline_ebs_bandwidth_mbps, expected_type=type_hints["baseline_ebs_bandwidth_mbps"])
32403
+ check_type(argname="argument burstable_performance", value=burstable_performance, expected_type=type_hints["burstable_performance"])
32404
+ check_type(argname="argument cpu_manufacturers", value=cpu_manufacturers, expected_type=type_hints["cpu_manufacturers"])
32405
+ check_type(argname="argument excluded_instance_types", value=excluded_instance_types, expected_type=type_hints["excluded_instance_types"])
32406
+ check_type(argname="argument instance_generations", value=instance_generations, expected_type=type_hints["instance_generations"])
32407
+ check_type(argname="argument local_storage", value=local_storage, expected_type=type_hints["local_storage"])
32408
+ check_type(argname="argument local_storage_types", value=local_storage_types, expected_type=type_hints["local_storage_types"])
32409
+ check_type(argname="argument max_spot_price_as_percentage_of_optimal_on_demand_price", value=max_spot_price_as_percentage_of_optimal_on_demand_price, expected_type=type_hints["max_spot_price_as_percentage_of_optimal_on_demand_price"])
32410
+ check_type(argname="argument memory_gib_per_v_cpu", value=memory_gib_per_v_cpu, expected_type=type_hints["memory_gib_per_v_cpu"])
32411
+ check_type(argname="argument network_bandwidth_gbps", value=network_bandwidth_gbps, expected_type=type_hints["network_bandwidth_gbps"])
32412
+ check_type(argname="argument network_interface_count", value=network_interface_count, expected_type=type_hints["network_interface_count"])
32413
+ check_type(argname="argument on_demand_max_price_percentage_over_lowest_price", value=on_demand_max_price_percentage_over_lowest_price, expected_type=type_hints["on_demand_max_price_percentage_over_lowest_price"])
32414
+ check_type(argname="argument require_hibernate_support", value=require_hibernate_support, expected_type=type_hints["require_hibernate_support"])
32415
+ check_type(argname="argument spot_max_price_percentage_over_lowest_price", value=spot_max_price_percentage_over_lowest_price, expected_type=type_hints["spot_max_price_percentage_over_lowest_price"])
32416
+ check_type(argname="argument total_local_storage_gb", value=total_local_storage_gb, expected_type=type_hints["total_local_storage_gb"])
32417
+ self._values: typing.Dict[builtins.str, typing.Any] = {
32418
+ "memory_mib": memory_mib,
32419
+ "v_cpu_count": v_cpu_count,
32420
+ }
32421
+ if accelerator_count is not None:
32422
+ self._values["accelerator_count"] = accelerator_count
32423
+ if accelerator_manufacturers is not None:
32424
+ self._values["accelerator_manufacturers"] = accelerator_manufacturers
32425
+ if accelerator_names is not None:
32426
+ self._values["accelerator_names"] = accelerator_names
32427
+ if accelerator_total_memory_mib is not None:
32428
+ self._values["accelerator_total_memory_mib"] = accelerator_total_memory_mib
32429
+ if accelerator_types is not None:
32430
+ self._values["accelerator_types"] = accelerator_types
32431
+ if allowed_instance_types is not None:
32432
+ self._values["allowed_instance_types"] = allowed_instance_types
32433
+ if bare_metal is not None:
32434
+ self._values["bare_metal"] = bare_metal
32435
+ if baseline_ebs_bandwidth_mbps is not None:
32436
+ self._values["baseline_ebs_bandwidth_mbps"] = baseline_ebs_bandwidth_mbps
32437
+ if burstable_performance is not None:
32438
+ self._values["burstable_performance"] = burstable_performance
32439
+ if cpu_manufacturers is not None:
32440
+ self._values["cpu_manufacturers"] = cpu_manufacturers
32441
+ if excluded_instance_types is not None:
32442
+ self._values["excluded_instance_types"] = excluded_instance_types
32443
+ if instance_generations is not None:
32444
+ self._values["instance_generations"] = instance_generations
32445
+ if local_storage is not None:
32446
+ self._values["local_storage"] = local_storage
32447
+ if local_storage_types is not None:
32448
+ self._values["local_storage_types"] = local_storage_types
32449
+ if max_spot_price_as_percentage_of_optimal_on_demand_price is not None:
32450
+ self._values["max_spot_price_as_percentage_of_optimal_on_demand_price"] = max_spot_price_as_percentage_of_optimal_on_demand_price
32451
+ if memory_gib_per_v_cpu is not None:
32452
+ self._values["memory_gib_per_v_cpu"] = memory_gib_per_v_cpu
32453
+ if network_bandwidth_gbps is not None:
32454
+ self._values["network_bandwidth_gbps"] = network_bandwidth_gbps
32455
+ if network_interface_count is not None:
32456
+ self._values["network_interface_count"] = network_interface_count
32457
+ if on_demand_max_price_percentage_over_lowest_price is not None:
32458
+ self._values["on_demand_max_price_percentage_over_lowest_price"] = on_demand_max_price_percentage_over_lowest_price
32459
+ if require_hibernate_support is not None:
32460
+ self._values["require_hibernate_support"] = require_hibernate_support
32461
+ if spot_max_price_percentage_over_lowest_price is not None:
32462
+ self._values["spot_max_price_percentage_over_lowest_price"] = spot_max_price_percentage_over_lowest_price
32463
+ if total_local_storage_gb is not None:
32464
+ self._values["total_local_storage_gb"] = total_local_storage_gb
32465
+
32466
+ @builtins.property
32467
+ def memory_mib(
32468
+ self,
32469
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.MemoryMiBRequestProperty"]:
32470
+ '''The minimum and maximum amount of memory in mebibytes (MiB) for the instance types.
32471
+
32472
+ Amazon ECS selects instance types that have memory within this range.
32473
+
32474
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-memorymib
32475
+ '''
32476
+ result = self._values.get("memory_mib")
32477
+ assert result is not None, "Required property 'memory_mib' is missing"
32478
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.MemoryMiBRequestProperty"], result)
32479
+
32480
+ @builtins.property
32481
+ def v_cpu_count(
32482
+ self,
32483
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.VCpuCountRangeRequestProperty"]:
32484
+ '''The minimum and maximum number of vCPUs for the instance types.
32485
+
32486
+ Amazon ECS selects instance types that have vCPU counts within this range.
32487
+
32488
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-vcpucount
32489
+ '''
32490
+ result = self._values.get("v_cpu_count")
32491
+ assert result is not None, "Required property 'v_cpu_count' is missing"
32492
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.VCpuCountRangeRequestProperty"], result)
32493
+
32494
+ @builtins.property
32495
+ def accelerator_count(
32496
+ self,
32497
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.AcceleratorCountRequestProperty"]]:
32498
+ '''The minimum and maximum number of accelerators for the instance types.
32499
+
32500
+ This is used when you need instances with specific numbers of GPUs or other accelerators.
32501
+
32502
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-acceleratorcount
32503
+ '''
32504
+ result = self._values.get("accelerator_count")
32505
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.AcceleratorCountRequestProperty"]], result)
32506
+
32507
+ @builtins.property
32508
+ def accelerator_manufacturers(
32509
+ self,
32510
+ ) -> typing.Optional[typing.List[builtins.str]]:
32511
+ '''The accelerator manufacturers to include.
32512
+
32513
+ You can specify ``nvidia`` , ``amd`` , ``amazon-web-services`` , or ``xilinx`` depending on your accelerator requirements.
32514
+
32515
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-acceleratormanufacturers
32516
+ '''
32517
+ result = self._values.get("accelerator_manufacturers")
32518
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32519
+
32520
+ @builtins.property
32521
+ def accelerator_names(self) -> typing.Optional[typing.List[builtins.str]]:
32522
+ '''The specific accelerator names to include.
32523
+
32524
+ For example, you can specify ``a100`` , ``v100`` , ``k80`` , or other specific accelerator models.
32525
+
32526
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-acceleratornames
32527
+ '''
32528
+ result = self._values.get("accelerator_names")
32529
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32530
+
32531
+ @builtins.property
32532
+ def accelerator_total_memory_mib(
32533
+ self,
32534
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty"]]:
32535
+ '''The minimum and maximum total accelerator memory in mebibytes (MiB).
32536
+
32537
+ This is important for GPU workloads that require specific amounts of video memory.
32538
+
32539
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-acceleratortotalmemorymib
32540
+ '''
32541
+ result = self._values.get("accelerator_total_memory_mib")
32542
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty"]], result)
32543
+
32544
+ @builtins.property
32545
+ def accelerator_types(self) -> typing.Optional[typing.List[builtins.str]]:
32546
+ '''The accelerator types to include.
32547
+
32548
+ You can specify ``gpu`` for graphics processing units, ``fpga`` for field programmable gate arrays, or ``inference`` for machine learning inference accelerators.
32549
+
32550
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-acceleratortypes
32551
+ '''
32552
+ result = self._values.get("accelerator_types")
32553
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32554
+
32555
+ @builtins.property
32556
+ def allowed_instance_types(self) -> typing.Optional[typing.List[builtins.str]]:
32557
+ '''The instance types to include in the selection.
32558
+
32559
+ When specified, Amazon ECS only considers these instance types, subject to the other requirements specified.
32560
+
32561
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-allowedinstancetypes
32562
+ '''
32563
+ result = self._values.get("allowed_instance_types")
32564
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32565
+
32566
+ @builtins.property
32567
+ def bare_metal(self) -> typing.Optional[builtins.str]:
32568
+ '''Indicates whether to include bare metal instance types.
32569
+
32570
+ Set to ``included`` to allow bare metal instances, ``excluded`` to exclude them, or ``required`` to use only bare metal instances.
32571
+
32572
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-baremetal
32573
+ '''
32574
+ result = self._values.get("bare_metal")
32575
+ return typing.cast(typing.Optional[builtins.str], result)
32576
+
32577
+ @builtins.property
32578
+ def baseline_ebs_bandwidth_mbps(
32579
+ self,
32580
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty"]]:
32581
+ '''The minimum and maximum baseline Amazon EBS bandwidth in megabits per second (Mbps).
32582
+
32583
+ This is important for workloads with high storage I/O requirements.
32584
+
32585
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-baselineebsbandwidthmbps
32586
+ '''
32587
+ result = self._values.get("baseline_ebs_bandwidth_mbps")
32588
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty"]], result)
32589
+
32590
+ @builtins.property
32591
+ def burstable_performance(self) -> typing.Optional[builtins.str]:
32592
+ '''Indicates whether to include burstable performance instance types (T2, T3, T3a, T4g).
32593
+
32594
+ Set to ``included`` to allow burstable instances, ``excluded`` to exclude them, or ``required`` to use only burstable instances.
32595
+
32596
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-burstableperformance
32597
+ '''
32598
+ result = self._values.get("burstable_performance")
32599
+ return typing.cast(typing.Optional[builtins.str], result)
32600
+
32601
+ @builtins.property
32602
+ def cpu_manufacturers(self) -> typing.Optional[typing.List[builtins.str]]:
32603
+ '''The CPU manufacturers to include or exclude.
32604
+
32605
+ You can specify ``intel`` , ``amd`` , or ``amazon-web-services`` to control which CPU types are used for your workloads.
32606
+
32607
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-cpumanufacturers
32608
+ '''
32609
+ result = self._values.get("cpu_manufacturers")
32610
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32611
+
32612
+ @builtins.property
32613
+ def excluded_instance_types(self) -> typing.Optional[typing.List[builtins.str]]:
32614
+ '''The instance types to exclude from selection.
32615
+
32616
+ Use this to prevent Amazon ECS from selecting specific instance types that may not be suitable for your workloads.
32617
+
32618
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-excludedinstancetypes
32619
+ '''
32620
+ result = self._values.get("excluded_instance_types")
32621
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32622
+
32623
+ @builtins.property
32624
+ def instance_generations(self) -> typing.Optional[typing.List[builtins.str]]:
32625
+ '''The instance generations to include.
32626
+
32627
+ You can specify ``current`` to use the latest generation instances, or ``previous`` to include previous generation instances for cost optimization.
32628
+
32629
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-instancegenerations
32630
+ '''
32631
+ result = self._values.get("instance_generations")
32632
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32633
+
32634
+ @builtins.property
32635
+ def local_storage(self) -> typing.Optional[builtins.str]:
32636
+ '''Indicates whether to include instance types with local storage.
32637
+
32638
+ Set to ``included`` to allow local storage, ``excluded`` to exclude it, or ``required`` to use only instances with local storage.
32639
+
32640
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-localstorage
32641
+ '''
32642
+ result = self._values.get("local_storage")
32643
+ return typing.cast(typing.Optional[builtins.str], result)
32644
+
32645
+ @builtins.property
32646
+ def local_storage_types(self) -> typing.Optional[typing.List[builtins.str]]:
32647
+ '''The local storage types to include.
32648
+
32649
+ You can specify ``hdd`` for hard disk drives, ``ssd`` for solid state drives, or both.
32650
+
32651
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-localstoragetypes
32652
+ '''
32653
+ result = self._values.get("local_storage_types")
32654
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32655
+
32656
+ @builtins.property
32657
+ def max_spot_price_as_percentage_of_optimal_on_demand_price(
32658
+ self,
32659
+ ) -> typing.Optional[jsii.Number]:
32660
+ '''The maximum price for Spot instances as a percentage of the optimal On-Demand price.
32661
+
32662
+ This provides more precise cost control for Spot instance selection.
32663
+
32664
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-maxspotpriceaspercentageofoptimalondemandprice
32665
+ '''
32666
+ result = self._values.get("max_spot_price_as_percentage_of_optimal_on_demand_price")
32667
+ return typing.cast(typing.Optional[jsii.Number], result)
32668
+
32669
+ @builtins.property
32670
+ def memory_gib_per_v_cpu(
32671
+ self,
32672
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty"]]:
32673
+ '''The minimum and maximum amount of memory per vCPU in gibibytes (GiB).
32674
+
32675
+ This helps ensure that instance types have the appropriate memory-to-CPU ratio for your workloads.
32676
+
32677
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-memorygibpervcpu
32678
+ '''
32679
+ result = self._values.get("memory_gib_per_v_cpu")
32680
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty"]], result)
32681
+
32682
+ @builtins.property
32683
+ def network_bandwidth_gbps(
32684
+ self,
32685
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty"]]:
32686
+ '''The minimum and maximum network bandwidth in gigabits per second (Gbps).
32687
+
32688
+ This is crucial for network-intensive workloads that require high throughput.
32689
+
32690
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-networkbandwidthgbps
32691
+ '''
32692
+ result = self._values.get("network_bandwidth_gbps")
32693
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty"]], result)
32694
+
32695
+ @builtins.property
32696
+ def network_interface_count(
32697
+ self,
32698
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.NetworkInterfaceCountRequestProperty"]]:
32699
+ '''The minimum and maximum number of network interfaces for the instance types.
32700
+
32701
+ This is useful for workloads that require multiple network interfaces.
32702
+
32703
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-networkinterfacecount
32704
+ '''
32705
+ result = self._values.get("network_interface_count")
32706
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.NetworkInterfaceCountRequestProperty"]], result)
32707
+
32708
+ @builtins.property
32709
+ def on_demand_max_price_percentage_over_lowest_price(
32710
+ self,
32711
+ ) -> typing.Optional[jsii.Number]:
32712
+ '''The price protection threshold for On-Demand Instances, as a percentage higher than an identified On-Demand price.
32713
+
32714
+ The identified On-Demand price is the price of the lowest priced current generation C, M, or R instance type with your specified attributes. If no current generation C, M, or R instance type matches your attributes, then the identified price is from either the lowest priced current generation instance types or, failing that, the lowest priced previous generation instance types that match your attributes. When Amazon ECS selects instance types with your attributes, we will exclude instance types whose price exceeds your specified threshold.
32715
+
32716
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-ondemandmaxpricepercentageoverlowestprice
32717
+ '''
32718
+ result = self._values.get("on_demand_max_price_percentage_over_lowest_price")
32719
+ return typing.cast(typing.Optional[jsii.Number], result)
32720
+
32721
+ @builtins.property
32722
+ def require_hibernate_support(
32723
+ self,
32724
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
32725
+ '''Indicates whether the instance types must support hibernation.
32726
+
32727
+ When set to ``true`` , only instance types that support hibernation are selected.
32728
+
32729
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-requirehibernatesupport
32730
+ '''
32731
+ result = self._values.get("require_hibernate_support")
32732
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
32733
+
32734
+ @builtins.property
32735
+ def spot_max_price_percentage_over_lowest_price(
32736
+ self,
32737
+ ) -> typing.Optional[jsii.Number]:
32738
+ '''The maximum price for Spot instances as a percentage over the lowest priced On-Demand instance.
32739
+
32740
+ This helps control Spot instance costs while maintaining access to capacity.
32741
+
32742
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-spotmaxpricepercentageoverlowestprice
32743
+ '''
32744
+ result = self._values.get("spot_max_price_percentage_over_lowest_price")
32745
+ return typing.cast(typing.Optional[jsii.Number], result)
32746
+
32747
+ @builtins.property
32748
+ def total_local_storage_gb(
32749
+ self,
32750
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.TotalLocalStorageGBRequestProperty"]]:
32751
+ '''The minimum and maximum total local storage in gigabytes (GB) for instance types with local storage.
32752
+
32753
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-instancerequirementsrequest.html#cfn-ecs-capacityprovider-instancerequirementsrequest-totallocalstoragegb
32754
+ '''
32755
+ result = self._values.get("total_local_storage_gb")
32756
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.TotalLocalStorageGBRequestProperty"]], result)
32757
+
32758
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
32759
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
32760
+
32761
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
32762
+ return not (rhs == self)
32763
+
32764
+ def __repr__(self) -> str:
32765
+ return "InstanceRequirementsRequestProperty(%s)" % ", ".join(
32766
+ k + "=" + repr(v) for k, v in self._values.items()
32767
+ )
32768
+
32769
+ @jsii.data_type(
32770
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty",
32771
+ jsii_struct_bases=[],
32772
+ name_mapping={"subnets": "subnets", "security_groups": "securityGroups"},
32773
+ )
32774
+ class ManagedInstancesNetworkConfigurationProperty:
32775
+ def __init__(
32776
+ self,
32777
+ *,
32778
+ subnets: typing.Sequence[builtins.str],
32779
+ security_groups: typing.Optional[typing.Sequence[builtins.str]] = None,
32780
+ ) -> None:
32781
+ '''The network configuration for Amazon ECS Managed Instances.
32782
+
32783
+ This specifies the VPC subnets and security groups that instances use for network connectivity. Amazon ECS Managed Instances support multiple network modes including ``awsvpc`` (instances receive ENIs for task isolation), ``host`` (instances share network namespace with tasks), and ``none`` (no external network connectivity), ensuring backward compatibility for migrating workloads from Fargate or Amazon EC2.
32784
+
32785
+ :param subnets: The list of subnet IDs where Amazon ECS can launch Amazon ECS Managed Instances. Instances are distributed across the specified subnets for high availability. All subnets must be in the same VPC.
32786
+ :param security_groups: The list of security group IDs to apply to Amazon ECS Managed Instances. These security groups control the network traffic allowed to and from the instances.
32787
+
32788
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesnetworkconfiguration.html
32789
+ :exampleMetadata: fixture=_generated
32790
+
32791
+ Example::
32792
+
32793
+ # The code below shows an example of how to instantiate this type.
32794
+ # The values are placeholders you should change.
32795
+ from aws_cdk import aws_ecs as ecs
32796
+
32797
+ managed_instances_network_configuration_property = ecs.CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty(
32798
+ subnets=["subnets"],
32799
+
32800
+ # the properties below are optional
32801
+ security_groups=["securityGroups"]
32802
+ )
32803
+ '''
32804
+ if __debug__:
32805
+ type_hints = typing.get_type_hints(_typecheckingstub__b8cf486af6edb309081654dbba3fcab445314c93a7a69231f0ca16b32fff9ae0)
32806
+ check_type(argname="argument subnets", value=subnets, expected_type=type_hints["subnets"])
32807
+ check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
32808
+ self._values: typing.Dict[builtins.str, typing.Any] = {
32809
+ "subnets": subnets,
32810
+ }
32811
+ if security_groups is not None:
32812
+ self._values["security_groups"] = security_groups
32813
+
32814
+ @builtins.property
32815
+ def subnets(self) -> typing.List[builtins.str]:
32816
+ '''The list of subnet IDs where Amazon ECS can launch Amazon ECS Managed Instances.
32817
+
32818
+ Instances are distributed across the specified subnets for high availability. All subnets must be in the same VPC.
32819
+
32820
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesnetworkconfiguration.html#cfn-ecs-capacityprovider-managedinstancesnetworkconfiguration-subnets
32821
+ '''
32822
+ result = self._values.get("subnets")
32823
+ assert result is not None, "Required property 'subnets' is missing"
32824
+ return typing.cast(typing.List[builtins.str], result)
32825
+
32826
+ @builtins.property
32827
+ def security_groups(self) -> typing.Optional[typing.List[builtins.str]]:
32828
+ '''The list of security group IDs to apply to Amazon ECS Managed Instances.
32829
+
32830
+ These security groups control the network traffic allowed to and from the instances.
32831
+
32832
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesnetworkconfiguration.html#cfn-ecs-capacityprovider-managedinstancesnetworkconfiguration-securitygroups
32833
+ '''
32834
+ result = self._values.get("security_groups")
32835
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
32836
+
32837
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
32838
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
32839
+
32840
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
32841
+ return not (rhs == self)
32842
+
32843
+ def __repr__(self) -> str:
32844
+ return "ManagedInstancesNetworkConfigurationProperty(%s)" % ", ".join(
32845
+ k + "=" + repr(v) for k, v in self._values.items()
32846
+ )
32847
+
32848
+ @jsii.data_type(
32849
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.ManagedInstancesProviderProperty",
32850
+ jsii_struct_bases=[],
32851
+ name_mapping={
32852
+ "infrastructure_role_arn": "infrastructureRoleArn",
32853
+ "instance_launch_template": "instanceLaunchTemplate",
32854
+ "propagate_tags": "propagateTags",
32855
+ },
32856
+ )
32857
+ class ManagedInstancesProviderProperty:
32858
+ def __init__(
32859
+ self,
32860
+ *,
32861
+ infrastructure_role_arn: builtins.str,
32862
+ instance_launch_template: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCapacityProvider.InstanceLaunchTemplateProperty", typing.Dict[builtins.str, typing.Any]]],
32863
+ propagate_tags: typing.Optional[builtins.str] = None,
32864
+ ) -> None:
32865
+ '''The configuration for a Amazon ECS Managed Instances provider.
32866
+
32867
+ Amazon ECS uses this configuration to automatically launch, manage, and terminate Amazon EC2 instances on your behalf. Managed instances provide access to the full range of Amazon EC2 instance types and features while offloading infrastructure management to AWS .
32868
+
32869
+ :param infrastructure_role_arn: The Amazon Resource Name (ARN) of the infrastructure role that Amazon ECS assumes to manage instances. This role must include permissions for Amazon EC2 instance lifecycle management, networking, and any additional AWS services required for your workloads. For more information, see `Amazon ECS infrastructure IAM role <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html>`_ in the *Amazon ECS Developer Guide* .
32870
+ :param instance_launch_template: The launch template that defines how Amazon ECS launches Amazon ECS Managed Instances. This includes the instance profile for your tasks, network and storage configuration, and instance requirements that determine which Amazon EC2 instance types can be used. For more information, see `Store instance launch parameters in Amazon EC2 launch templates <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html>`_ in the *Amazon EC2 User Guide* .
32871
+ :param propagate_tags: Determines whether tags from the capacity provider are automatically applied to Amazon ECS Managed Instances. This helps with cost allocation and resource management by ensuring consistent tagging across your infrastructure.
32872
+
32873
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesprovider.html
32874
+ :exampleMetadata: fixture=_generated
32875
+
32876
+ Example::
32877
+
32878
+ # The code below shows an example of how to instantiate this type.
32879
+ # The values are placeholders you should change.
32880
+ from aws_cdk import aws_ecs as ecs
32881
+
32882
+ managed_instances_provider_property = ecs.CfnCapacityProvider.ManagedInstancesProviderProperty(
32883
+ infrastructure_role_arn="infrastructureRoleArn",
32884
+ instance_launch_template=ecs.CfnCapacityProvider.InstanceLaunchTemplateProperty(
32885
+ ec2_instance_profile_arn="ec2InstanceProfileArn",
32886
+ network_configuration=ecs.CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty(
32887
+ subnets=["subnets"],
32888
+
32889
+ # the properties below are optional
32890
+ security_groups=["securityGroups"]
32891
+ ),
32892
+
32893
+ # the properties below are optional
32894
+ instance_requirements=ecs.CfnCapacityProvider.InstanceRequirementsRequestProperty(
32895
+ memory_mi_b=ecs.CfnCapacityProvider.MemoryMiBRequestProperty(
32896
+ min=123,
32897
+
32898
+ # the properties below are optional
32899
+ max=123
32900
+ ),
32901
+ v_cpu_count=ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty(
32902
+ min=123,
32903
+
32904
+ # the properties below are optional
32905
+ max=123
32906
+ ),
32907
+
32908
+ # the properties below are optional
32909
+ accelerator_count=ecs.CfnCapacityProvider.AcceleratorCountRequestProperty(
32910
+ max=123,
32911
+ min=123
32912
+ ),
32913
+ accelerator_manufacturers=["acceleratorManufacturers"],
32914
+ accelerator_names=["acceleratorNames"],
32915
+ accelerator_total_memory_mi_b=ecs.CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty(
32916
+ max=123,
32917
+ min=123
32918
+ ),
32919
+ accelerator_types=["acceleratorTypes"],
32920
+ allowed_instance_types=["allowedInstanceTypes"],
32921
+ bare_metal="bareMetal",
32922
+ baseline_ebs_bandwidth_mbps=ecs.CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty(
32923
+ max=123,
32924
+ min=123
32925
+ ),
32926
+ burstable_performance="burstablePerformance",
32927
+ cpu_manufacturers=["cpuManufacturers"],
32928
+ excluded_instance_types=["excludedInstanceTypes"],
32929
+ instance_generations=["instanceGenerations"],
32930
+ local_storage="localStorage",
32931
+ local_storage_types=["localStorageTypes"],
32932
+ max_spot_price_as_percentage_of_optimal_on_demand_price=123,
32933
+ memory_gi_bPer_vCpu=ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty(
32934
+ max=123,
32935
+ min=123
32936
+ ),
32937
+ network_bandwidth_gbps=ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty(
32938
+ max=123,
32939
+ min=123
32940
+ ),
32941
+ network_interface_count=ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty(
32942
+ max=123,
32943
+ min=123
32944
+ ),
32945
+ on_demand_max_price_percentage_over_lowest_price=123,
32946
+ require_hibernate_support=False,
32947
+ spot_max_price_percentage_over_lowest_price=123,
32948
+ total_local_storage_gb=ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty(
32949
+ max=123,
32950
+ min=123
32951
+ )
32952
+ ),
32953
+ monitoring="monitoring",
32954
+ storage_configuration=ecs.CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty(
32955
+ storage_size_gi_b=123
32956
+ )
32957
+ ),
32958
+
32959
+ # the properties below are optional
32960
+ propagate_tags="propagateTags"
32961
+ )
32962
+ '''
32963
+ if __debug__:
32964
+ type_hints = typing.get_type_hints(_typecheckingstub__45a3888e29c1b6fb29bc3dbf90f279f8c543b8924bb51956a75f3290eca0b7c9)
32965
+ check_type(argname="argument infrastructure_role_arn", value=infrastructure_role_arn, expected_type=type_hints["infrastructure_role_arn"])
32966
+ check_type(argname="argument instance_launch_template", value=instance_launch_template, expected_type=type_hints["instance_launch_template"])
32967
+ check_type(argname="argument propagate_tags", value=propagate_tags, expected_type=type_hints["propagate_tags"])
32968
+ self._values: typing.Dict[builtins.str, typing.Any] = {
32969
+ "infrastructure_role_arn": infrastructure_role_arn,
32970
+ "instance_launch_template": instance_launch_template,
32971
+ }
32972
+ if propagate_tags is not None:
32973
+ self._values["propagate_tags"] = propagate_tags
32974
+
32975
+ @builtins.property
32976
+ def infrastructure_role_arn(self) -> builtins.str:
32977
+ '''The Amazon Resource Name (ARN) of the infrastructure role that Amazon ECS assumes to manage instances.
32978
+
32979
+ This role must include permissions for Amazon EC2 instance lifecycle management, networking, and any additional AWS services required for your workloads.
32980
+
32981
+ For more information, see `Amazon ECS infrastructure IAM role <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html>`_ in the *Amazon ECS Developer Guide* .
32982
+
32983
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesprovider.html#cfn-ecs-capacityprovider-managedinstancesprovider-infrastructurerolearn
32984
+ '''
32985
+ result = self._values.get("infrastructure_role_arn")
32986
+ assert result is not None, "Required property 'infrastructure_role_arn' is missing"
32987
+ return typing.cast(builtins.str, result)
32988
+
32989
+ @builtins.property
32990
+ def instance_launch_template(
32991
+ self,
32992
+ ) -> typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.InstanceLaunchTemplateProperty"]:
32993
+ '''The launch template that defines how Amazon ECS launches Amazon ECS Managed Instances.
32994
+
32995
+ This includes the instance profile for your tasks, network and storage configuration, and instance requirements that determine which Amazon EC2 instance types can be used.
32996
+
32997
+ For more information, see `Store instance launch parameters in Amazon EC2 launch templates <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html>`_ in the *Amazon EC2 User Guide* .
32998
+
32999
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesprovider.html#cfn-ecs-capacityprovider-managedinstancesprovider-instancelaunchtemplate
33000
+ '''
33001
+ result = self._values.get("instance_launch_template")
33002
+ assert result is not None, "Required property 'instance_launch_template' is missing"
33003
+ return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnCapacityProvider.InstanceLaunchTemplateProperty"], result)
33004
+
33005
+ @builtins.property
33006
+ def propagate_tags(self) -> typing.Optional[builtins.str]:
33007
+ '''Determines whether tags from the capacity provider are automatically applied to Amazon ECS Managed Instances.
33008
+
33009
+ This helps with cost allocation and resource management by ensuring consistent tagging across your infrastructure.
33010
+
33011
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesprovider.html#cfn-ecs-capacityprovider-managedinstancesprovider-propagatetags
33012
+ '''
33013
+ result = self._values.get("propagate_tags")
33014
+ return typing.cast(typing.Optional[builtins.str], result)
33015
+
33016
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33017
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33018
+
33019
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33020
+ return not (rhs == self)
33021
+
33022
+ def __repr__(self) -> str:
33023
+ return "ManagedInstancesProviderProperty(%s)" % ", ".join(
33024
+ k + "=" + repr(v) for k, v in self._values.items()
33025
+ )
33026
+
33027
+ @jsii.data_type(
33028
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty",
33029
+ jsii_struct_bases=[],
33030
+ name_mapping={"storage_size_gib": "storageSizeGiB"},
33031
+ )
33032
+ class ManagedInstancesStorageConfigurationProperty:
33033
+ def __init__(self, *, storage_size_gib: jsii.Number) -> None:
33034
+ '''The storage configuration for Amazon ECS Managed Instances.
33035
+
33036
+ This defines the root volume configuration for the instances.
33037
+
33038
+ :param storage_size_gib: The size of the tasks volume.
33039
+
33040
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesstorageconfiguration.html
33041
+ :exampleMetadata: fixture=_generated
33042
+
33043
+ Example::
33044
+
33045
+ # The code below shows an example of how to instantiate this type.
33046
+ # The values are placeholders you should change.
33047
+ from aws_cdk import aws_ecs as ecs
33048
+
33049
+ managed_instances_storage_configuration_property = ecs.CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty(
33050
+ storage_size_gi_b=123
33051
+ )
33052
+ '''
33053
+ if __debug__:
33054
+ type_hints = typing.get_type_hints(_typecheckingstub__8d1e06667171eb082ce77bd8060c435a6f130ac6e9384412fb372763b838e22b)
33055
+ check_type(argname="argument storage_size_gib", value=storage_size_gib, expected_type=type_hints["storage_size_gib"])
33056
+ self._values: typing.Dict[builtins.str, typing.Any] = {
33057
+ "storage_size_gib": storage_size_gib,
33058
+ }
33059
+
33060
+ @builtins.property
33061
+ def storage_size_gib(self) -> jsii.Number:
33062
+ '''The size of the tasks volume.
33063
+
33064
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedinstancesstorageconfiguration.html#cfn-ecs-capacityprovider-managedinstancesstorageconfiguration-storagesizegib
33065
+ '''
33066
+ result = self._values.get("storage_size_gib")
33067
+ assert result is not None, "Required property 'storage_size_gib' is missing"
33068
+ return typing.cast(jsii.Number, result)
33069
+
33070
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33071
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33072
+
33073
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33074
+ return not (rhs == self)
33075
+
33076
+ def __repr__(self) -> str:
33077
+ return "ManagedInstancesStorageConfigurationProperty(%s)" % ", ".join(
33078
+ k + "=" + repr(v) for k, v in self._values.items()
33079
+ )
33080
+
30982
33081
  @jsii.data_type(
30983
33082
  jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.ManagedScalingProperty",
30984
33083
  jsii_struct_bases=[],
@@ -31114,6 +33213,468 @@ class CfnCapacityProvider(
31114
33213
  k + "=" + repr(v) for k, v in self._values.items()
31115
33214
  )
31116
33215
 
33216
+ @jsii.data_type(
33217
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty",
33218
+ jsii_struct_bases=[],
33219
+ name_mapping={"max": "max", "min": "min"},
33220
+ )
33221
+ class MemoryGiBPerVCpuRequestProperty:
33222
+ def __init__(
33223
+ self,
33224
+ *,
33225
+ max: typing.Optional[jsii.Number] = None,
33226
+ min: typing.Optional[jsii.Number] = None,
33227
+ ) -> None:
33228
+ '''The minimum and maximum amount of memory per vCPU in gibibytes (GiB).
33229
+
33230
+ This helps ensure that instance types have the appropriate memory-to-CPU ratio for your workloads.
33231
+
33232
+ :param max: The maximum amount of memory per vCPU in GiB. Instance types with a higher memory-to-vCPU ratio are excluded from selection.
33233
+ :param min: The minimum amount of memory per vCPU in GiB. Instance types with a lower memory-to-vCPU ratio are excluded from selection.
33234
+
33235
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-memorygibpervcpurequest.html
33236
+ :exampleMetadata: fixture=_generated
33237
+
33238
+ Example::
33239
+
33240
+ # The code below shows an example of how to instantiate this type.
33241
+ # The values are placeholders you should change.
33242
+ from aws_cdk import aws_ecs as ecs
33243
+
33244
+ memory_gi_bPer_vCpu_request_property = ecs.CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty(
33245
+ max=123,
33246
+ min=123
33247
+ )
33248
+ '''
33249
+ if __debug__:
33250
+ type_hints = typing.get_type_hints(_typecheckingstub__01b8a285c0250eb2fa8268dc32a515cb17c662ef0085fef55300ca206a1a746c)
33251
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
33252
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
33253
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
33254
+ if max is not None:
33255
+ self._values["max"] = max
33256
+ if min is not None:
33257
+ self._values["min"] = min
33258
+
33259
+ @builtins.property
33260
+ def max(self) -> typing.Optional[jsii.Number]:
33261
+ '''The maximum amount of memory per vCPU in GiB.
33262
+
33263
+ Instance types with a higher memory-to-vCPU ratio are excluded from selection.
33264
+
33265
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-memorygibpervcpurequest.html#cfn-ecs-capacityprovider-memorygibpervcpurequest-max
33266
+ '''
33267
+ result = self._values.get("max")
33268
+ return typing.cast(typing.Optional[jsii.Number], result)
33269
+
33270
+ @builtins.property
33271
+ def min(self) -> typing.Optional[jsii.Number]:
33272
+ '''The minimum amount of memory per vCPU in GiB.
33273
+
33274
+ Instance types with a lower memory-to-vCPU ratio are excluded from selection.
33275
+
33276
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-memorygibpervcpurequest.html#cfn-ecs-capacityprovider-memorygibpervcpurequest-min
33277
+ '''
33278
+ result = self._values.get("min")
33279
+ return typing.cast(typing.Optional[jsii.Number], result)
33280
+
33281
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33282
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33283
+
33284
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33285
+ return not (rhs == self)
33286
+
33287
+ def __repr__(self) -> str:
33288
+ return "MemoryGiBPerVCpuRequestProperty(%s)" % ", ".join(
33289
+ k + "=" + repr(v) for k, v in self._values.items()
33290
+ )
33291
+
33292
+ @jsii.data_type(
33293
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.MemoryMiBRequestProperty",
33294
+ jsii_struct_bases=[],
33295
+ name_mapping={"min": "min", "max": "max"},
33296
+ )
33297
+ class MemoryMiBRequestProperty:
33298
+ def __init__(
33299
+ self,
33300
+ *,
33301
+ min: jsii.Number,
33302
+ max: typing.Optional[jsii.Number] = None,
33303
+ ) -> None:
33304
+ '''The minimum and maximum amount of memory in mebibytes (MiB) for instance type selection.
33305
+
33306
+ This ensures that selected instance types have adequate memory for your workloads.
33307
+
33308
+ :param min: The minimum amount of memory in MiB. Instance types with less memory than this value are excluded from selection.
33309
+ :param max: The maximum amount of memory in MiB. Instance types with more memory than this value are excluded from selection.
33310
+
33311
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-memorymibrequest.html
33312
+ :exampleMetadata: fixture=_generated
33313
+
33314
+ Example::
33315
+
33316
+ # The code below shows an example of how to instantiate this type.
33317
+ # The values are placeholders you should change.
33318
+ from aws_cdk import aws_ecs as ecs
33319
+
33320
+ memory_mi_bRequest_property = ecs.CfnCapacityProvider.MemoryMiBRequestProperty(
33321
+ min=123,
33322
+
33323
+ # the properties below are optional
33324
+ max=123
33325
+ )
33326
+ '''
33327
+ if __debug__:
33328
+ type_hints = typing.get_type_hints(_typecheckingstub__a69680081ccdd5c785405398f4f1d616d0c97b874ced183049da2f9c6e34787e)
33329
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
33330
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
33331
+ self._values: typing.Dict[builtins.str, typing.Any] = {
33332
+ "min": min,
33333
+ }
33334
+ if max is not None:
33335
+ self._values["max"] = max
33336
+
33337
+ @builtins.property
33338
+ def min(self) -> jsii.Number:
33339
+ '''The minimum amount of memory in MiB.
33340
+
33341
+ Instance types with less memory than this value are excluded from selection.
33342
+
33343
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-memorymibrequest.html#cfn-ecs-capacityprovider-memorymibrequest-min
33344
+ '''
33345
+ result = self._values.get("min")
33346
+ assert result is not None, "Required property 'min' is missing"
33347
+ return typing.cast(jsii.Number, result)
33348
+
33349
+ @builtins.property
33350
+ def max(self) -> typing.Optional[jsii.Number]:
33351
+ '''The maximum amount of memory in MiB.
33352
+
33353
+ Instance types with more memory than this value are excluded from selection.
33354
+
33355
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-memorymibrequest.html#cfn-ecs-capacityprovider-memorymibrequest-max
33356
+ '''
33357
+ result = self._values.get("max")
33358
+ return typing.cast(typing.Optional[jsii.Number], result)
33359
+
33360
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33361
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33362
+
33363
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33364
+ return not (rhs == self)
33365
+
33366
+ def __repr__(self) -> str:
33367
+ return "MemoryMiBRequestProperty(%s)" % ", ".join(
33368
+ k + "=" + repr(v) for k, v in self._values.items()
33369
+ )
33370
+
33371
+ @jsii.data_type(
33372
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty",
33373
+ jsii_struct_bases=[],
33374
+ name_mapping={"max": "max", "min": "min"},
33375
+ )
33376
+ class NetworkBandwidthGbpsRequestProperty:
33377
+ def __init__(
33378
+ self,
33379
+ *,
33380
+ max: typing.Optional[jsii.Number] = None,
33381
+ min: typing.Optional[jsii.Number] = None,
33382
+ ) -> None:
33383
+ '''The minimum and maximum network bandwidth in gigabits per second (Gbps) for instance type selection.
33384
+
33385
+ This is important for network-intensive workloads.
33386
+
33387
+ :param max: The maximum network bandwidth in Gbps. Instance types with higher network bandwidth are excluded from selection.
33388
+ :param min: The minimum network bandwidth in Gbps. Instance types with lower network bandwidth are excluded from selection.
33389
+
33390
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-networkbandwidthgbpsrequest.html
33391
+ :exampleMetadata: fixture=_generated
33392
+
33393
+ Example::
33394
+
33395
+ # The code below shows an example of how to instantiate this type.
33396
+ # The values are placeholders you should change.
33397
+ from aws_cdk import aws_ecs as ecs
33398
+
33399
+ network_bandwidth_gbps_request_property = ecs.CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty(
33400
+ max=123,
33401
+ min=123
33402
+ )
33403
+ '''
33404
+ if __debug__:
33405
+ type_hints = typing.get_type_hints(_typecheckingstub__0b64349de0e0aa036cd2591e8e4db2f873feceecef981a341ecb449ccf6868be)
33406
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
33407
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
33408
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
33409
+ if max is not None:
33410
+ self._values["max"] = max
33411
+ if min is not None:
33412
+ self._values["min"] = min
33413
+
33414
+ @builtins.property
33415
+ def max(self) -> typing.Optional[jsii.Number]:
33416
+ '''The maximum network bandwidth in Gbps.
33417
+
33418
+ Instance types with higher network bandwidth are excluded from selection.
33419
+
33420
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-networkbandwidthgbpsrequest.html#cfn-ecs-capacityprovider-networkbandwidthgbpsrequest-max
33421
+ '''
33422
+ result = self._values.get("max")
33423
+ return typing.cast(typing.Optional[jsii.Number], result)
33424
+
33425
+ @builtins.property
33426
+ def min(self) -> typing.Optional[jsii.Number]:
33427
+ '''The minimum network bandwidth in Gbps.
33428
+
33429
+ Instance types with lower network bandwidth are excluded from selection.
33430
+
33431
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-networkbandwidthgbpsrequest.html#cfn-ecs-capacityprovider-networkbandwidthgbpsrequest-min
33432
+ '''
33433
+ result = self._values.get("min")
33434
+ return typing.cast(typing.Optional[jsii.Number], result)
33435
+
33436
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33437
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33438
+
33439
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33440
+ return not (rhs == self)
33441
+
33442
+ def __repr__(self) -> str:
33443
+ return "NetworkBandwidthGbpsRequestProperty(%s)" % ", ".join(
33444
+ k + "=" + repr(v) for k, v in self._values.items()
33445
+ )
33446
+
33447
+ @jsii.data_type(
33448
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty",
33449
+ jsii_struct_bases=[],
33450
+ name_mapping={"max": "max", "min": "min"},
33451
+ )
33452
+ class NetworkInterfaceCountRequestProperty:
33453
+ def __init__(
33454
+ self,
33455
+ *,
33456
+ max: typing.Optional[jsii.Number] = None,
33457
+ min: typing.Optional[jsii.Number] = None,
33458
+ ) -> None:
33459
+ '''The minimum and maximum number of network interfaces for instance type selection.
33460
+
33461
+ This is useful for workloads that require multiple network interfaces.
33462
+
33463
+ :param max: The maximum number of network interfaces. Instance types that support more network interfaces are excluded from selection.
33464
+ :param min: The minimum number of network interfaces. Instance types that support fewer network interfaces are excluded from selection.
33465
+
33466
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-networkinterfacecountrequest.html
33467
+ :exampleMetadata: fixture=_generated
33468
+
33469
+ Example::
33470
+
33471
+ # The code below shows an example of how to instantiate this type.
33472
+ # The values are placeholders you should change.
33473
+ from aws_cdk import aws_ecs as ecs
33474
+
33475
+ network_interface_count_request_property = ecs.CfnCapacityProvider.NetworkInterfaceCountRequestProperty(
33476
+ max=123,
33477
+ min=123
33478
+ )
33479
+ '''
33480
+ if __debug__:
33481
+ type_hints = typing.get_type_hints(_typecheckingstub__b7767213e94df32328c6564e342330aa95c25ac187a4114099951ea2e0802ddb)
33482
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
33483
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
33484
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
33485
+ if max is not None:
33486
+ self._values["max"] = max
33487
+ if min is not None:
33488
+ self._values["min"] = min
33489
+
33490
+ @builtins.property
33491
+ def max(self) -> typing.Optional[jsii.Number]:
33492
+ '''The maximum number of network interfaces.
33493
+
33494
+ Instance types that support more network interfaces are excluded from selection.
33495
+
33496
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-networkinterfacecountrequest.html#cfn-ecs-capacityprovider-networkinterfacecountrequest-max
33497
+ '''
33498
+ result = self._values.get("max")
33499
+ return typing.cast(typing.Optional[jsii.Number], result)
33500
+
33501
+ @builtins.property
33502
+ def min(self) -> typing.Optional[jsii.Number]:
33503
+ '''The minimum number of network interfaces.
33504
+
33505
+ Instance types that support fewer network interfaces are excluded from selection.
33506
+
33507
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-networkinterfacecountrequest.html#cfn-ecs-capacityprovider-networkinterfacecountrequest-min
33508
+ '''
33509
+ result = self._values.get("min")
33510
+ return typing.cast(typing.Optional[jsii.Number], result)
33511
+
33512
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33513
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33514
+
33515
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33516
+ return not (rhs == self)
33517
+
33518
+ def __repr__(self) -> str:
33519
+ return "NetworkInterfaceCountRequestProperty(%s)" % ", ".join(
33520
+ k + "=" + repr(v) for k, v in self._values.items()
33521
+ )
33522
+
33523
+ @jsii.data_type(
33524
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty",
33525
+ jsii_struct_bases=[],
33526
+ name_mapping={"max": "max", "min": "min"},
33527
+ )
33528
+ class TotalLocalStorageGBRequestProperty:
33529
+ def __init__(
33530
+ self,
33531
+ *,
33532
+ max: typing.Optional[jsii.Number] = None,
33533
+ min: typing.Optional[jsii.Number] = None,
33534
+ ) -> None:
33535
+ '''The minimum and maximum total local storage in gigabytes (GB) for instance types with local storage.
33536
+
33537
+ This is useful for workloads that require local storage for temporary data or caching.
33538
+
33539
+ :param max: The maximum total local storage in GB. Instance types with more local storage are excluded from selection.
33540
+ :param min: The minimum total local storage in GB. Instance types with less local storage are excluded from selection.
33541
+
33542
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-totallocalstoragegbrequest.html
33543
+ :exampleMetadata: fixture=_generated
33544
+
33545
+ Example::
33546
+
33547
+ # The code below shows an example of how to instantiate this type.
33548
+ # The values are placeholders you should change.
33549
+ from aws_cdk import aws_ecs as ecs
33550
+
33551
+ total_local_storage_gBRequest_property = ecs.CfnCapacityProvider.TotalLocalStorageGBRequestProperty(
33552
+ max=123,
33553
+ min=123
33554
+ )
33555
+ '''
33556
+ if __debug__:
33557
+ type_hints = typing.get_type_hints(_typecheckingstub__0b9cda28d66272632c4d42fbe68333883ca70c46c98159c2cd3f806c8bcc87fb)
33558
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
33559
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
33560
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
33561
+ if max is not None:
33562
+ self._values["max"] = max
33563
+ if min is not None:
33564
+ self._values["min"] = min
33565
+
33566
+ @builtins.property
33567
+ def max(self) -> typing.Optional[jsii.Number]:
33568
+ '''The maximum total local storage in GB.
33569
+
33570
+ Instance types with more local storage are excluded from selection.
33571
+
33572
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-totallocalstoragegbrequest.html#cfn-ecs-capacityprovider-totallocalstoragegbrequest-max
33573
+ '''
33574
+ result = self._values.get("max")
33575
+ return typing.cast(typing.Optional[jsii.Number], result)
33576
+
33577
+ @builtins.property
33578
+ def min(self) -> typing.Optional[jsii.Number]:
33579
+ '''The minimum total local storage in GB.
33580
+
33581
+ Instance types with less local storage are excluded from selection.
33582
+
33583
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-totallocalstoragegbrequest.html#cfn-ecs-capacityprovider-totallocalstoragegbrequest-min
33584
+ '''
33585
+ result = self._values.get("min")
33586
+ return typing.cast(typing.Optional[jsii.Number], result)
33587
+
33588
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33589
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33590
+
33591
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33592
+ return not (rhs == self)
33593
+
33594
+ def __repr__(self) -> str:
33595
+ return "TotalLocalStorageGBRequestProperty(%s)" % ", ".join(
33596
+ k + "=" + repr(v) for k, v in self._values.items()
33597
+ )
33598
+
33599
+ @jsii.data_type(
33600
+ jsii_type="aws-cdk-lib.aws_ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty",
33601
+ jsii_struct_bases=[],
33602
+ name_mapping={"min": "min", "max": "max"},
33603
+ )
33604
+ class VCpuCountRangeRequestProperty:
33605
+ def __init__(
33606
+ self,
33607
+ *,
33608
+ min: jsii.Number,
33609
+ max: typing.Optional[jsii.Number] = None,
33610
+ ) -> None:
33611
+ '''The minimum and maximum number of vCPUs for instance type selection.
33612
+
33613
+ This allows you to specify a range of vCPU counts that meet your workload requirements.
33614
+
33615
+ :param min: The minimum number of vCPUs. Instance types with fewer vCPUs than this value are excluded from selection.
33616
+ :param max: The maximum number of vCPUs. Instance types with more vCPUs than this value are excluded from selection.
33617
+
33618
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-vcpucountrangerequest.html
33619
+ :exampleMetadata: fixture=_generated
33620
+
33621
+ Example::
33622
+
33623
+ # The code below shows an example of how to instantiate this type.
33624
+ # The values are placeholders you should change.
33625
+ from aws_cdk import aws_ecs as ecs
33626
+
33627
+ v_cpu_count_range_request_property = ecs.CfnCapacityProvider.VCpuCountRangeRequestProperty(
33628
+ min=123,
33629
+
33630
+ # the properties below are optional
33631
+ max=123
33632
+ )
33633
+ '''
33634
+ if __debug__:
33635
+ type_hints = typing.get_type_hints(_typecheckingstub__f6d818d37cfd5e478cf4f6075fe0ba45bdd81aa83e9eb5b3f01094a71abf8822)
33636
+ check_type(argname="argument min", value=min, expected_type=type_hints["min"])
33637
+ check_type(argname="argument max", value=max, expected_type=type_hints["max"])
33638
+ self._values: typing.Dict[builtins.str, typing.Any] = {
33639
+ "min": min,
33640
+ }
33641
+ if max is not None:
33642
+ self._values["max"] = max
33643
+
33644
+ @builtins.property
33645
+ def min(self) -> jsii.Number:
33646
+ '''The minimum number of vCPUs.
33647
+
33648
+ Instance types with fewer vCPUs than this value are excluded from selection.
33649
+
33650
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-vcpucountrangerequest.html#cfn-ecs-capacityprovider-vcpucountrangerequest-min
33651
+ '''
33652
+ result = self._values.get("min")
33653
+ assert result is not None, "Required property 'min' is missing"
33654
+ return typing.cast(jsii.Number, result)
33655
+
33656
+ @builtins.property
33657
+ def max(self) -> typing.Optional[jsii.Number]:
33658
+ '''The maximum number of vCPUs.
33659
+
33660
+ Instance types with more vCPUs than this value are excluded from selection.
33661
+
33662
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-vcpucountrangerequest.html#cfn-ecs-capacityprovider-vcpucountrangerequest-max
33663
+ '''
33664
+ result = self._values.get("max")
33665
+ return typing.cast(typing.Optional[jsii.Number], result)
33666
+
33667
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
33668
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
33669
+
33670
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
33671
+ return not (rhs == self)
33672
+
33673
+ def __repr__(self) -> str:
33674
+ return "VCpuCountRangeRequestProperty(%s)" % ", ".join(
33675
+ k + "=" + repr(v) for k, v in self._values.items()
33676
+ )
33677
+
31117
33678
 
31118
33679
  @jsii.implements(_IInspectable_c2943556, IClusterRef, _ITaggable_36806126)
31119
33680
  class CfnCluster(
@@ -32795,7 +35356,7 @@ class CfnService(
32795
35356
  :param enable_ecs_managed_tags: Specifies whether to turn on Amazon ECS managed tags for the tasks within the service. For more information, see `Tagging your Amazon ECS resources <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html>`_ in the *Amazon Elastic Container Service Developer Guide* . When you use Amazon ECS managed tags, you must set the ``propagateTags`` request parameter.
32796
35357
  :param enable_execute_command: Determines whether the execute command functionality is turned on for the service. If ``true`` , the execute command functionality is turned on for all containers in tasks as part of the service.
32797
35358
  :param force_new_deployment: Determines whether to force a new deployment of the service. By default, deployments aren't forced. You can use this option to start a new deployment with no service definition changes. For example, you can update a service's tasks to use a newer Docker image with the same image/tag combination ( ``my_image:latest`` ) or to roll Fargate tasks onto a newer platform version.
32798
- :param health_check_grace_period_seconds: The period of time, in seconds, that the Amazon Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started. If you do not specify a health check grace period value, the default value of 0 is used. If you do not use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused. If your service has more running tasks than desired, unhealthy tasks in the grace period might be stopped to reach the desired count.
35359
+ :param health_check_grace_period_seconds: The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started. If you do not specify a health check grace period value, the default value of 0 is used. If you do not use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused. If your service has more running tasks than desired, unhealthy tasks in the grace period might be stopped to reach the desired count.
32799
35360
  :param launch_type: The launch type on which to run your service. For more information, see `Amazon ECS Launch Types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
32800
35361
  :param load_balancers: A list of load balancer objects to associate with the service. If you specify the ``Role`` property, ``LoadBalancers`` must be specified as well. For information about the number of load balancers that you can specify per service, see `Service Load Balancing <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: To remove this property from your service resource, specify an empty ``LoadBalancer`` array.
32801
35362
  :param network_configuration: The network configuration for the service. This parameter is required for task definitions that use the ``awsvpc`` network mode to receive their own elastic network interface, and it is not supported for other network modes. For more information, see `Task Networking <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
@@ -33068,7 +35629,7 @@ class CfnService(
33068
35629
  @builtins.property
33069
35630
  @jsii.member(jsii_name="healthCheckGracePeriodSeconds")
33070
35631
  def health_check_grace_period_seconds(self) -> typing.Optional[jsii.Number]:
33071
- '''The period of time, in seconds, that the Amazon Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started.'''
35632
+ '''The period of time, in seconds, that the Amazon ECS service scheduler ignores unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after a task has first started.'''
33072
35633
  return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "healthCheckGracePeriodSeconds"))
33073
35634
 
33074
35635
  @health_check_grace_period_seconds.setter
@@ -37028,7 +39589,7 @@ class CfnTaskDefinition(
37028
39589
  :param pid_mode: The process namespace to use for the containers in the task. The valid values are ``host`` or ``task`` . On Fargate for Linux containers, the only valid value is ``task`` . For example, monitoring sidecars might need ``pidMode`` to access information about other containers running in the same task. If ``host`` is specified, all containers within the tasks that specified the ``host`` PID mode on the same container instance share the same process namespace with the host Amazon EC2 instance. If ``task`` is specified, all containers within the specified task share the same process namespace. If no value is specified, the default is a private namespace for each container. If the ``host`` PID mode is used, there's a heightened risk of undesired process namespace exposure. .. epigraph:: This parameter is not supported for Windows containers. > This parameter is only supported for tasks that are hosted on AWS Fargate if the tasks are using platform version ``1.4.0`` or later (Linux). This isn't supported for Windows containers on Fargate.
37029
39590
  :param placement_constraints: An array of placement constraint objects to use for tasks. .. epigraph:: This parameter isn't supported for tasks run on AWS Fargate .
37030
39591
  :param proxy_configuration: The configuration details for the App Mesh proxy. Your Amazon ECS container instances require at least version 1.26.0 of the container agent and at least version 1.26.0-1 of the ``ecs-init`` package to use a proxy configuration. If your container instances are launched from the Amazon ECS optimized AMI version ``20190301`` or later, they contain the required versions of the container agent and ``ecs-init`` . For more information, see `Amazon ECS-optimized Linux AMI <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
37031
- :param requires_compatibilities: The task launch types the task definition was validated against. The valid values are ``EC2`` , ``FARGATE`` , and ``EXTERNAL`` . For more information, see `Amazon ECS launch types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
39592
+ :param requires_compatibilities: The task launch types the task definition was validated against. The valid values are ``MANAGED_INSTANCES`` , ``EC2`` , ``FARGATE`` , and ``EXTERNAL`` . For more information, see `Amazon ECS launch types <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
37032
39593
  :param runtime_platform: The operating system that your tasks definitions run on. A platform family is specified only for tasks using the Fargate launch type.
37033
39594
  :param tags: The metadata that you apply to the task definition to help you categorize and organize them. Each tag consists of a key and an optional value. You define both of them. The following basic restrictions apply to tags: - Maximum number of tags per resource - 50 - For each resource, each tag key must be unique, and each tag key can have only one value. - Maximum key length - 128 Unicode characters in UTF-8 - Maximum value length - 256 Unicode characters in UTF-8 - If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : /
37034
39595
  :param task_role_arn: The short name or full Amazon Resource Name (ARN) of the AWS Identity and Access Management role that grants containers in the task permission to call AWS APIs on your behalf. For more information, see `Amazon ECS Task Role <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html>`_ in the *Amazon Elastic Container Service Developer Guide* . IAM roles for tasks on Windows require that the ``-EnableTaskIAMRole`` option is set when you launch the Amazon ECS-optimized Windows AMI. Your containers must also run some configuration code to use the feature. For more information, see `Windows IAM roles for tasks <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: String validation is done on the ECS side. If an invalid string value is given for ``TaskRoleArn`` , it may cause the Cloudformation job to hang.
@@ -42799,24 +45360,43 @@ class Cluster(
42799
45360
 
42800
45361
  Example::
42801
45362
 
42802
- from aws_cdk import Tags
45363
+ # vpc: ec2.Vpc
42803
45364
 
42804
45365
 
42805
- vpc = ec2.Vpc(self, "Vpc", max_azs=1)
42806
- cluster = ecs.Cluster(self, "EcsCluster", vpc=vpc)
42807
- task_definition = ecs.FargateTaskDefinition(self, "TaskDef",
42808
- memory_limit_mi_b=512,
42809
- cpu=256
45366
+ cluster = ecs.Cluster(self, "Cluster",
45367
+ vpc=vpc
42810
45368
  )
42811
- task_definition.add_container("WebContainer",
42812
- image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample")
45369
+
45370
+ auto_scaling_group = autoscaling.AutoScalingGroup(self, "ASG",
45371
+ vpc=vpc,
45372
+ instance_type=ec2.InstanceType("t2.micro"),
45373
+ machine_image=ecs.EcsOptimizedImage.amazon_linux2(),
45374
+ min_capacity=0,
45375
+ max_capacity=100
42813
45376
  )
42814
- Tags.of(task_definition).add("my-tag", "my-tag-value")
42815
- scheduled_fargate_task = ecs_patterns.ScheduledFargateTask(self, "ScheduledFargateTask",
45377
+
45378
+ capacity_provider = ecs.AsgCapacityProvider(self, "AsgCapacityProvider",
45379
+ auto_scaling_group=auto_scaling_group,
45380
+ instance_warmup_period=300
45381
+ )
45382
+ cluster.add_asg_capacity_provider(capacity_provider)
45383
+
45384
+ task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
45385
+
45386
+ task_definition.add_container("web",
45387
+ image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
45388
+ memory_reservation_mi_b=256
45389
+ )
45390
+
45391
+ ecs.Ec2Service(self, "EC2Service",
42816
45392
  cluster=cluster,
42817
45393
  task_definition=task_definition,
42818
- schedule=appscaling.Schedule.expression("rate(1 minute)"),
42819
- propagate_tags=ecs.PropagatedTagSource.TASK_DEFINITION
45394
+ min_healthy_percent=100,
45395
+ capacity_provider_strategies=[ecs.CapacityProviderStrategy(
45396
+ capacity_provider=capacity_provider.capacity_provider_name,
45397
+ weight=1
45398
+ )
45399
+ ]
42820
45400
  )
42821
45401
  '''
42822
45402
 
@@ -43145,6 +45725,20 @@ class Cluster(
43145
45725
 
43146
45726
  return typing.cast(_INamespace_6b61e84f, jsii.invoke(self, "addDefaultCloudMapNamespace", [options]))
43147
45727
 
45728
+ @jsii.member(jsii_name="addManagedInstancesCapacityProvider")
45729
+ def add_managed_instances_capacity_provider(
45730
+ self,
45731
+ provider: ManagedInstancesCapacityProvider,
45732
+ ) -> None:
45733
+ '''This method adds a Managed Instances Capacity Provider to a cluster.
45734
+
45735
+ :param provider: the capacity provider to add to this cluster.
45736
+ '''
45737
+ if __debug__:
45738
+ type_hints = typing.get_type_hints(_typecheckingstub__5a82d1be969d3085ebea9661809bac2d0fcfb12723cd197d9b51420e44f7dbe3)
45739
+ check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
45740
+ return typing.cast(None, jsii.invoke(self, "addManagedInstancesCapacityProvider", [provider]))
45741
+
43148
45742
  @jsii.member(jsii_name="arnForTasks")
43149
45743
  def arn_for_tasks(self, key_pattern: builtins.str) -> builtins.str:
43150
45744
  '''Returns an ARN that represents all tasks within the cluster that match the task pattern specified.
@@ -43459,6 +46053,15 @@ class Cluster(
43459
46053
  '''The name of the cluster.'''
43460
46054
  return typing.cast(builtins.str, jsii.get(self, "clusterName"))
43461
46055
 
46056
+ @builtins.property
46057
+ @jsii.member(jsii_name="clusterScopedCapacityProviderNames")
46058
+ def cluster_scoped_capacity_provider_names(self) -> typing.List[builtins.str]:
46059
+ '''Getter for _clusterScopedCapacityProviderNames.
46060
+
46061
+ :attribute: true
46062
+ '''
46063
+ return typing.cast(typing.List[builtins.str], jsii.get(self, "clusterScopedCapacityProviderNames"))
46064
+
43462
46065
  @builtins.property
43463
46066
  @jsii.member(jsii_name="connections")
43464
46067
  def connections(self) -> _Connections_0f31fce8:
@@ -44972,30 +47575,33 @@ class Ec2Service(
44972
47575
 
44973
47576
  Example::
44974
47577
 
44975
- # vpc: ec2.Vpc
44976
-
47578
+ # task_definition: ecs.TaskDefinition
47579
+ # cluster: ecs.Cluster
44977
47580
 
44978
- # Create an ECS cluster
44979
- cluster = ecs.Cluster(self, "Cluster", vpc=vpc)
44980
47581
 
44981
- # Add capacity to it
44982
- cluster.add_capacity("DefaultAutoScalingGroupCapacity",
44983
- instance_type=ec2.InstanceType("t2.xlarge"),
44984
- desired_capacity=3
47582
+ # Add a container to the task definition
47583
+ specific_container = task_definition.add_container("Container",
47584
+ image=ecs.ContainerImage.from_registry("/aws/aws-example-app"),
47585
+ memory_limit_mi_b=2048
44985
47586
  )
44986
47587
 
44987
- task_definition = ecs.Ec2TaskDefinition(self, "TaskDef")
44988
-
44989
- task_definition.add_container("DefaultContainer",
44990
- image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
44991
- memory_limit_mi_b=512
47588
+ # Add a port mapping
47589
+ specific_container.add_port_mappings(
47590
+ container_port=7600,
47591
+ protocol=ecs.Protocol.TCP
44992
47592
  )
44993
47593
 
44994
- # Instantiate an Amazon ECS Service
44995
- ecs_service = ecs.Ec2Service(self, "Service",
47594
+ ecs.Ec2Service(self, "Service",
44996
47595
  cluster=cluster,
44997
47596
  task_definition=task_definition,
44998
- min_healthy_percent=100
47597
+ min_healthy_percent=100,
47598
+ cloud_map_options=ecs.CloudMapOptions(
47599
+ # Create SRV records - useful for bridge networking
47600
+ dns_record_type=cloudmap.DnsRecordType.SRV,
47601
+ # Targets port TCP port 7600 `specificContainer`
47602
+ container=specific_container,
47603
+ container_port=7600
47604
+ )
44999
47605
  )
45000
47606
  '''
45001
47607
 
@@ -45953,6 +48559,9 @@ class FargateService(
45953
48559
  ):
45954
48560
  '''This creates a service using the Fargate launch type on an ECS cluster.
45955
48561
 
48562
+ Can also be used with Managed Instances compatible task definitions when using
48563
+ capacity provider strategies.
48564
+
45956
48565
  :resource: AWS::ECS::Service
45957
48566
  :exampleMetadata: infused
45958
48567
 
@@ -46510,6 +49119,7 @@ __all__ = [
46510
49119
  "ITaskDefinitionRef",
46511
49120
  "ITaskSetRef",
46512
49121
  "InferenceAccelerator",
49122
+ "InstanceMonitoring",
46513
49123
  "IpcMode",
46514
49124
  "JournaldLogDriver",
46515
49125
  "JournaldLogDriverProps",
@@ -46525,6 +49135,8 @@ __all__ = [
46525
49135
  "LogDriverConfig",
46526
49136
  "LogDrivers",
46527
49137
  "MachineImageType",
49138
+ "ManagedInstancesCapacityProvider",
49139
+ "ManagedInstancesCapacityProviderProps",
46528
49140
  "ManagedStorageConfiguration",
46529
49141
  "MemoryUtilizationScalingProps",
46530
49142
  "MountPoint",
@@ -46536,6 +49148,7 @@ __all__ = [
46536
49148
  "PortMap",
46537
49149
  "PortMapping",
46538
49150
  "PrimaryTaskSetReference",
49151
+ "PropagateManagedInstancesTags",
46539
49152
  "PropagatedTagSource",
46540
49153
  "Protocol",
46541
49154
  "ProxyConfiguration",
@@ -46914,6 +49527,8 @@ def _typecheckingstub__481a7064afb879135819febdd572a91fb6799e4bfadf66c711f640b51
46914
49527
  def _typecheckingstub__48080bdf05dc1c4ca9ab46c833774163f6afcd0d1551b378b8d59e67bc180c3f(
46915
49528
  *,
46916
49529
  auto_scaling_group_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.AutoScalingGroupProviderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
49530
+ cluster_name: typing.Optional[builtins.str] = None,
49531
+ managed_instances_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.ManagedInstancesProviderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
46917
49532
  name: typing.Optional[builtins.str] = None,
46918
49533
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
46919
49534
  ) -> None:
@@ -48323,6 +50938,44 @@ def _typecheckingstub__4028d39adfbd4018be781b02eae5afae009ba3d6754c9cac3c26580b7
48323
50938
  """Type checking stubs"""
48324
50939
  pass
48325
50940
 
50941
+ def _typecheckingstub__718bb820f1409b5f15556f2e394659a060bda46e302dbb4e973a6484f24497de(
50942
+ scope: _constructs_77d1e7e8.Construct,
50943
+ id: builtins.str,
50944
+ *,
50945
+ ec2_instance_profile: _IInstanceProfile_10d5ce2c,
50946
+ subnets: typing.Sequence[_ISubnet_d57d1229],
50947
+ capacity_provider_name: typing.Optional[builtins.str] = None,
50948
+ infrastructure_role: typing.Optional[_IRole_235f5d8e] = None,
50949
+ instance_requirements: typing.Optional[typing.Union[_InstanceRequirementsConfig_1b353659, typing.Dict[builtins.str, typing.Any]]] = None,
50950
+ monitoring: typing.Optional[InstanceMonitoring] = None,
50951
+ propagate_tags: typing.Optional[PropagateManagedInstancesTags] = None,
50952
+ security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
50953
+ task_volume_storage: typing.Optional[_Size_7b441c34] = None,
50954
+ ) -> None:
50955
+ """Type checking stubs"""
50956
+ pass
50957
+
50958
+ def _typecheckingstub__86f1df235e6255faeece6081f964f386186a84532c53bb8fad57fd4ab50e809d(
50959
+ cluster: ICluster,
50960
+ ) -> None:
50961
+ """Type checking stubs"""
50962
+ pass
50963
+
50964
+ def _typecheckingstub__efa15b9a00384128ebdb40ffd56f7e66e8863f1c3a6b8d4cf8bc61fb9e822e92(
50965
+ *,
50966
+ ec2_instance_profile: _IInstanceProfile_10d5ce2c,
50967
+ subnets: typing.Sequence[_ISubnet_d57d1229],
50968
+ capacity_provider_name: typing.Optional[builtins.str] = None,
50969
+ infrastructure_role: typing.Optional[_IRole_235f5d8e] = None,
50970
+ instance_requirements: typing.Optional[typing.Union[_InstanceRequirementsConfig_1b353659, typing.Dict[builtins.str, typing.Any]]] = None,
50971
+ monitoring: typing.Optional[InstanceMonitoring] = None,
50972
+ propagate_tags: typing.Optional[PropagateManagedInstancesTags] = None,
50973
+ security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
50974
+ task_volume_storage: typing.Optional[_Size_7b441c34] = None,
50975
+ ) -> None:
50976
+ """Type checking stubs"""
50977
+ pass
50978
+
48326
50979
  def _typecheckingstub__2f9a1356d6603371cc25e0653216ab0167448ba43002bef5b32c489376e7fbb9(
48327
50980
  *,
48328
50981
  fargate_ephemeral_storage_kms_key: typing.Optional[_IKey_5f11635f] = None,
@@ -49178,6 +51831,8 @@ def _typecheckingstub__59a913caee739f6d41600bf8ae89985db638913fbcb77a8abd5451cda
49178
51831
  id: builtins.str,
49179
51832
  *,
49180
51833
  auto_scaling_group_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.AutoScalingGroupProviderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51834
+ cluster_name: typing.Optional[builtins.str] = None,
51835
+ managed_instances_provider: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.ManagedInstancesProviderProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
49181
51836
  name: typing.Optional[builtins.str] = None,
49182
51837
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
49183
51838
  ) -> None:
@@ -49210,6 +51865,18 @@ def _typecheckingstub__5888da07adc4050987d977b4699983a6760a2abcd538f800018e65953
49210
51865
  """Type checking stubs"""
49211
51866
  pass
49212
51867
 
51868
+ def _typecheckingstub__56e821d6de113ad791628d9a188368814c7c0fb94ce466313a674dfb2a04780b(
51869
+ value: typing.Optional[builtins.str],
51870
+ ) -> None:
51871
+ """Type checking stubs"""
51872
+ pass
51873
+
51874
+ def _typecheckingstub__1eade181f601623fa0955313b90bd74d62cfcd3ee4f4809fd9998abc514cb4bc(
51875
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCapacityProvider.ManagedInstancesProviderProperty]],
51876
+ ) -> None:
51877
+ """Type checking stubs"""
51878
+ pass
51879
+
49213
51880
  def _typecheckingstub__6b097d35daad25c1c594150aba1acbb2fe2a7052d42d247db35563ec5fed6bd4(
49214
51881
  value: typing.Optional[builtins.str],
49215
51882
  ) -> None:
@@ -49222,6 +51889,22 @@ def _typecheckingstub__81c56757bceb2c5880b41cbaabe62c67844b248e61c810588b5c50b5f
49222
51889
  """Type checking stubs"""
49223
51890
  pass
49224
51891
 
51892
+ def _typecheckingstub__43d53bcba92c90cf6f4d328d0942a76121d27482644e63c47c94438bbe161846(
51893
+ *,
51894
+ max: typing.Optional[jsii.Number] = None,
51895
+ min: typing.Optional[jsii.Number] = None,
51896
+ ) -> None:
51897
+ """Type checking stubs"""
51898
+ pass
51899
+
51900
+ def _typecheckingstub__05b0b4abd870382eb40911671e91b829abe416723b1b38346d22783d1a2c8f67(
51901
+ *,
51902
+ max: typing.Optional[jsii.Number] = None,
51903
+ min: typing.Optional[jsii.Number] = None,
51904
+ ) -> None:
51905
+ """Type checking stubs"""
51906
+ pass
51907
+
49225
51908
  def _typecheckingstub__ca441075e92a847965e776db4f5ab9f545ce368b5efa4bc2476d58061dd0b742(
49226
51909
  *,
49227
51910
  auto_scaling_group_arn: builtins.str,
@@ -49232,6 +51915,79 @@ def _typecheckingstub__ca441075e92a847965e776db4f5ab9f545ce368b5efa4bc2476d58061
49232
51915
  """Type checking stubs"""
49233
51916
  pass
49234
51917
 
51918
+ def _typecheckingstub__55f829b236ccb12cc42e7c374a47c6c0909fecf313bf4ebb779169af029b2ba4(
51919
+ *,
51920
+ max: typing.Optional[jsii.Number] = None,
51921
+ min: typing.Optional[jsii.Number] = None,
51922
+ ) -> None:
51923
+ """Type checking stubs"""
51924
+ pass
51925
+
51926
+ def _typecheckingstub__cb545da33f3067adee24bf90d3e903b06a7562a7e6ea6b3785f5b0ae6f3e105d(
51927
+ *,
51928
+ ec2_instance_profile_arn: builtins.str,
51929
+ network_configuration: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.ManagedInstancesNetworkConfigurationProperty, typing.Dict[builtins.str, typing.Any]]],
51930
+ instance_requirements: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.InstanceRequirementsRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51931
+ monitoring: typing.Optional[builtins.str] = None,
51932
+ storage_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.ManagedInstancesStorageConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51933
+ ) -> None:
51934
+ """Type checking stubs"""
51935
+ pass
51936
+
51937
+ def _typecheckingstub__d2fd7f319e7a3e49a0d45d342ee067f3719bf8c8519bbab1a3a3c81f41641bec(
51938
+ *,
51939
+ memory_mib: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.MemoryMiBRequestProperty, typing.Dict[builtins.str, typing.Any]]],
51940
+ v_cpu_count: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.VCpuCountRangeRequestProperty, typing.Dict[builtins.str, typing.Any]]],
51941
+ accelerator_count: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.AcceleratorCountRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51942
+ accelerator_manufacturers: typing.Optional[typing.Sequence[builtins.str]] = None,
51943
+ accelerator_names: typing.Optional[typing.Sequence[builtins.str]] = None,
51944
+ accelerator_total_memory_mib: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.AcceleratorTotalMemoryMiBRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51945
+ accelerator_types: typing.Optional[typing.Sequence[builtins.str]] = None,
51946
+ allowed_instance_types: typing.Optional[typing.Sequence[builtins.str]] = None,
51947
+ bare_metal: typing.Optional[builtins.str] = None,
51948
+ baseline_ebs_bandwidth_mbps: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.BaselineEbsBandwidthMbpsRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51949
+ burstable_performance: typing.Optional[builtins.str] = None,
51950
+ cpu_manufacturers: typing.Optional[typing.Sequence[builtins.str]] = None,
51951
+ excluded_instance_types: typing.Optional[typing.Sequence[builtins.str]] = None,
51952
+ instance_generations: typing.Optional[typing.Sequence[builtins.str]] = None,
51953
+ local_storage: typing.Optional[builtins.str] = None,
51954
+ local_storage_types: typing.Optional[typing.Sequence[builtins.str]] = None,
51955
+ max_spot_price_as_percentage_of_optimal_on_demand_price: typing.Optional[jsii.Number] = None,
51956
+ memory_gib_per_v_cpu: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.MemoryGiBPerVCpuRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51957
+ network_bandwidth_gbps: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.NetworkBandwidthGbpsRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51958
+ network_interface_count: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.NetworkInterfaceCountRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51959
+ on_demand_max_price_percentage_over_lowest_price: typing.Optional[jsii.Number] = None,
51960
+ require_hibernate_support: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
51961
+ spot_max_price_percentage_over_lowest_price: typing.Optional[jsii.Number] = None,
51962
+ total_local_storage_gb: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.TotalLocalStorageGBRequestProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
51963
+ ) -> None:
51964
+ """Type checking stubs"""
51965
+ pass
51966
+
51967
+ def _typecheckingstub__b8cf486af6edb309081654dbba3fcab445314c93a7a69231f0ca16b32fff9ae0(
51968
+ *,
51969
+ subnets: typing.Sequence[builtins.str],
51970
+ security_groups: typing.Optional[typing.Sequence[builtins.str]] = None,
51971
+ ) -> None:
51972
+ """Type checking stubs"""
51973
+ pass
51974
+
51975
+ def _typecheckingstub__45a3888e29c1b6fb29bc3dbf90f279f8c543b8924bb51956a75f3290eca0b7c9(
51976
+ *,
51977
+ infrastructure_role_arn: builtins.str,
51978
+ instance_launch_template: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCapacityProvider.InstanceLaunchTemplateProperty, typing.Dict[builtins.str, typing.Any]]],
51979
+ propagate_tags: typing.Optional[builtins.str] = None,
51980
+ ) -> None:
51981
+ """Type checking stubs"""
51982
+ pass
51983
+
51984
+ def _typecheckingstub__8d1e06667171eb082ce77bd8060c435a6f130ac6e9384412fb372763b838e22b(
51985
+ *,
51986
+ storage_size_gib: jsii.Number,
51987
+ ) -> None:
51988
+ """Type checking stubs"""
51989
+ pass
51990
+
49235
51991
  def _typecheckingstub__b6ba7d15ac2121ea6e10f20fe3e2441ae17d00f30897db384f8f72e7d6406865(
49236
51992
  *,
49237
51993
  instance_warmup_period: typing.Optional[jsii.Number] = None,
@@ -49243,6 +51999,54 @@ def _typecheckingstub__b6ba7d15ac2121ea6e10f20fe3e2441ae17d00f30897db384f8f72e7d
49243
51999
  """Type checking stubs"""
49244
52000
  pass
49245
52001
 
52002
+ def _typecheckingstub__01b8a285c0250eb2fa8268dc32a515cb17c662ef0085fef55300ca206a1a746c(
52003
+ *,
52004
+ max: typing.Optional[jsii.Number] = None,
52005
+ min: typing.Optional[jsii.Number] = None,
52006
+ ) -> None:
52007
+ """Type checking stubs"""
52008
+ pass
52009
+
52010
+ def _typecheckingstub__a69680081ccdd5c785405398f4f1d616d0c97b874ced183049da2f9c6e34787e(
52011
+ *,
52012
+ min: jsii.Number,
52013
+ max: typing.Optional[jsii.Number] = None,
52014
+ ) -> None:
52015
+ """Type checking stubs"""
52016
+ pass
52017
+
52018
+ def _typecheckingstub__0b64349de0e0aa036cd2591e8e4db2f873feceecef981a341ecb449ccf6868be(
52019
+ *,
52020
+ max: typing.Optional[jsii.Number] = None,
52021
+ min: typing.Optional[jsii.Number] = None,
52022
+ ) -> None:
52023
+ """Type checking stubs"""
52024
+ pass
52025
+
52026
+ def _typecheckingstub__b7767213e94df32328c6564e342330aa95c25ac187a4114099951ea2e0802ddb(
52027
+ *,
52028
+ max: typing.Optional[jsii.Number] = None,
52029
+ min: typing.Optional[jsii.Number] = None,
52030
+ ) -> None:
52031
+ """Type checking stubs"""
52032
+ pass
52033
+
52034
+ def _typecheckingstub__0b9cda28d66272632c4d42fbe68333883ca70c46c98159c2cd3f806c8bcc87fb(
52035
+ *,
52036
+ max: typing.Optional[jsii.Number] = None,
52037
+ min: typing.Optional[jsii.Number] = None,
52038
+ ) -> None:
52039
+ """Type checking stubs"""
52040
+ pass
52041
+
52042
+ def _typecheckingstub__f6d818d37cfd5e478cf4f6075fe0ba45bdd81aa83e9eb5b3f01094a71abf8822(
52043
+ *,
52044
+ min: jsii.Number,
52045
+ max: typing.Optional[jsii.Number] = None,
52046
+ ) -> None:
52047
+ """Type checking stubs"""
52048
+ pass
52049
+
49246
52050
  def _typecheckingstub__ea27f9318b2a509011f1175119715629617e6b8d976d0782e37d54e45f1e94c8(
49247
52051
  scope: _constructs_77d1e7e8.Construct,
49248
52052
  id: builtins.str,
@@ -50683,6 +53487,12 @@ def _typecheckingstub__e4b0382e0260e2588867571eddfb9f2d145389bea69e7e0b00917ba8a
50683
53487
  """Type checking stubs"""
50684
53488
  pass
50685
53489
 
53490
+ def _typecheckingstub__5a82d1be969d3085ebea9661809bac2d0fcfb12723cd197d9b51420e44f7dbe3(
53491
+ provider: ManagedInstancesCapacityProvider,
53492
+ ) -> None:
53493
+ """Type checking stubs"""
53494
+ pass
53495
+
50686
53496
  def _typecheckingstub__dc82c424ab5a0b25f0e355e707c39f45826ed166c15976f45690abfa1ffcd30e(
50687
53497
  key_pattern: builtins.str,
50688
53498
  ) -> None: