aws-cdk-lib 2.213.0__py3-none-any.whl → 2.214.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 +23 -3
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.213.0.jsii.tgz → aws-cdk-lib@2.214.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_appconfig/__init__.py +18 -6
  5. aws_cdk/aws_appintegrations/__init__.py +4 -4
  6. aws_cdk/aws_apprunner/__init__.py +5 -8
  7. aws_cdk/aws_aps/__init__.py +243 -10
  8. aws_cdk/aws_b2bi/__init__.py +1015 -128
  9. aws_cdk/aws_batch/__init__.py +33 -11
  10. aws_cdk/aws_bedrock/__init__.py +22 -216
  11. aws_cdk/aws_budgets/__init__.py +18 -0
  12. aws_cdk/aws_certificatemanager/__init__.py +96 -15
  13. aws_cdk/aws_cloudformation/__init__.py +3 -3
  14. aws_cdk/aws_cloudwatch/__init__.py +80 -49
  15. aws_cdk/aws_cognito/__init__.py +76 -5
  16. aws_cdk/aws_connect/__init__.py +188 -2
  17. aws_cdk/aws_datazone/__init__.py +2267 -0
  18. aws_cdk/aws_deadline/__init__.py +6 -5
  19. aws_cdk/aws_dynamodb/__init__.py +27 -16
  20. aws_cdk/aws_ec2/__init__.py +51 -10
  21. aws_cdk/aws_ecs/__init__.py +288 -25
  22. aws_cdk/aws_ecs_patterns/__init__.py +2 -0
  23. aws_cdk/aws_eks/__init__.py +124 -0
  24. aws_cdk/aws_elasticloadbalancingv2/__init__.py +6 -2
  25. aws_cdk/aws_entityresolution/__init__.py +107 -0
  26. aws_cdk/aws_events/__init__.py +153 -55
  27. aws_cdk/aws_events_targets/__init__.py +87 -36
  28. aws_cdk/aws_fsx/__init__.py +62 -0
  29. aws_cdk/aws_gameliftstreams/__init__.py +1 -1
  30. aws_cdk/aws_glue/__init__.py +205 -23
  31. aws_cdk/aws_guardduty/__init__.py +205 -100
  32. aws_cdk/aws_iam/__init__.py +24 -21
  33. aws_cdk/aws_inspectorv2/__init__.py +125 -80
  34. aws_cdk/aws_iot/__init__.py +37 -19
  35. aws_cdk/aws_iotsitewise/__init__.py +111 -75
  36. aws_cdk/aws_ivs/__init__.py +17 -17
  37. aws_cdk/aws_kinesisanalytics/__init__.py +122 -3
  38. aws_cdk/aws_kinesisanalyticsv2/__init__.py +122 -3
  39. aws_cdk/aws_lambda/__init__.py +23 -2
  40. aws_cdk/aws_logs/__init__.py +20 -15
  41. aws_cdk/aws_mediapackagev2/__init__.py +2 -2
  42. aws_cdk/aws_networkfirewall/__init__.py +6 -6
  43. aws_cdk/aws_omics/__init__.py +477 -2
  44. aws_cdk/aws_qbusiness/__init__.py +4 -2
  45. aws_cdk/aws_rds/__init__.py +132 -4
  46. aws_cdk/aws_route53/__init__.py +18 -11
  47. aws_cdk/aws_s3/__init__.py +4 -4
  48. aws_cdk/aws_s3_deployment/__init__.py +45 -0
  49. aws_cdk/aws_sagemaker/__init__.py +653 -0
  50. aws_cdk/aws_servicediscovery/__init__.py +22 -37
  51. aws_cdk/aws_sns/__init__.py +12 -2
  52. aws_cdk/aws_sns_subscriptions/__init__.py +3 -1
  53. aws_cdk/aws_sqs/__init__.py +5 -5
  54. aws_cdk/aws_ssm/__init__.py +8 -3
  55. aws_cdk/aws_ssmquicksetup/__init__.py +2 -2
  56. aws_cdk/aws_synthetics/__init__.py +222 -12
  57. aws_cdk/aws_transfer/__init__.py +15 -2
  58. aws_cdk/aws_vpclattice/__init__.py +41 -0
  59. aws_cdk/aws_workspacesweb/__init__.py +71 -41
  60. {aws_cdk_lib-2.213.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/METADATA +2 -2
  61. {aws_cdk_lib-2.213.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/RECORD +65 -65
  62. {aws_cdk_lib-2.213.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/LICENSE +0 -0
  63. {aws_cdk_lib-2.213.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/NOTICE +0 -0
  64. {aws_cdk_lib-2.213.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/WHEEL +0 -0
  65. {aws_cdk_lib-2.213.0.dist-info → aws_cdk_lib-2.214.0.dist-info}/top_level.txt +0 -0
@@ -2011,7 +2011,10 @@ volume_from_snapshot = ecs.ServiceManagedVolume(self, "EBSVolume",
2011
2011
  managed_eBSVolume=ecs.ServiceManagedEBSVolumeConfiguration(
2012
2012
  snap_shot_id="snap-066877671789bd71b",
2013
2013
  volume_type=ec2.EbsDeviceVolumeType.GP3,
2014
- file_system_type=ecs.FileSystemType.XFS
2014
+ file_system_type=ecs.FileSystemType.XFS,
2015
+ # Specifies the Amazon EBS Provisioned Rate for Volume Initialization.
2016
+ # Valid range is between 100 and 300 MiB/s.
2017
+ volume_initialization_rate=Size.mebibytes(200)
2015
2018
  )
2016
2019
  )
2017
2020
 
@@ -7527,9 +7530,9 @@ class CfnCluster(
7527
7530
 
7528
7531
  When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.
7529
7532
 
7530
- :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
7533
+ :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used. Base value characteristics: - Only one capacity provider in a strategy can have a base defined - Default value is ``0`` if not specified - Valid range: 0 to 100,000 - Base requirements are satisfied first before weight distribution
7531
7534
  :param capacity_provider: The short name of the capacity provider.
7532
- :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
7535
+ :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. Weight value characteristics: - Weight is considered after the base value is satisfied - Default value is ``0`` if not specified - Valid range: 0 to 1,000 - At least one capacity provider must have a weight greater than zero - Capacity providers with weight of ``0`` cannot place tasks Task distribution logic: - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios Examples: Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met. Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
7533
7536
 
7534
7537
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-capacityproviderstrategyitem.html
7535
7538
  :exampleMetadata: fixture=_generated
@@ -7561,10 +7564,17 @@ class CfnCluster(
7561
7564
 
7562
7565
  @builtins.property
7563
7566
  def base(self) -> typing.Optional[jsii.Number]:
7564
- '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider.
7567
+ '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service.
7565
7568
 
7566
7569
  Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
7567
7570
 
7571
+ Base value characteristics:
7572
+
7573
+ - Only one capacity provider in a strategy can have a base defined
7574
+ - Default value is ``0`` if not specified
7575
+ - Valid range: 0 to 100,000
7576
+ - Base requirements are satisfied first before weight distribution
7577
+
7568
7578
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-capacityproviderstrategyitem.html#cfn-ecs-cluster-capacityproviderstrategyitem-base
7569
7579
  '''
7570
7580
  result = self._values.get("base")
@@ -7587,7 +7597,24 @@ class CfnCluster(
7587
7597
 
7588
7598
  If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.
7589
7599
 
7590
- An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
7600
+ Weight value characteristics:
7601
+
7602
+ - Weight is considered after the base value is satisfied
7603
+ - Default value is ``0`` if not specified
7604
+ - Valid range: 0 to 1,000
7605
+ - At least one capacity provider must have a weight greater than zero
7606
+ - Capacity providers with weight of ``0`` cannot place tasks
7607
+
7608
+ Task distribution logic:
7609
+
7610
+ - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider
7611
+ - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios
7612
+
7613
+ Examples:
7614
+
7615
+ Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met.
7616
+
7617
+ Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
7591
7618
 
7592
7619
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-cluster-capacityproviderstrategyitem.html#cfn-ecs-cluster-capacityproviderstrategyitem-weight
7593
7620
  '''
@@ -8328,8 +8355,8 @@ class CfnClusterCapacityProviderAssociations(
8328
8355
  When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.
8329
8356
 
8330
8357
  :param capacity_provider: The short name of the capacity provider.
8331
- :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
8332
- :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
8358
+ :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used. Base value characteristics: - Only one capacity provider in a strategy can have a base defined - Default value is ``0`` if not specified - Valid range: 0 to 100,000 - Base requirements are satisfied first before weight distribution
8359
+ :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. Weight value characteristics: - Weight is considered after the base value is satisfied - Default value is ``0`` if not specified - Valid range: 0 to 1,000 - At least one capacity provider must have a weight greater than zero - Capacity providers with weight of ``0`` cannot place tasks Task distribution logic: - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios Examples: Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met. Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
8333
8360
 
8334
8361
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html
8335
8362
  :exampleMetadata: fixture=_generated
@@ -8373,10 +8400,17 @@ class CfnClusterCapacityProviderAssociations(
8373
8400
 
8374
8401
  @builtins.property
8375
8402
  def base(self) -> typing.Optional[jsii.Number]:
8376
- '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider.
8403
+ '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service.
8377
8404
 
8378
8405
  Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
8379
8406
 
8407
+ Base value characteristics:
8408
+
8409
+ - Only one capacity provider in a strategy can have a base defined
8410
+ - Default value is ``0`` if not specified
8411
+ - Valid range: 0 to 100,000
8412
+ - Base requirements are satisfied first before weight distribution
8413
+
8380
8414
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html#cfn-ecs-clustercapacityproviderassociations-capacityproviderstrategy-base
8381
8415
  '''
8382
8416
  result = self._values.get("base")
@@ -8390,7 +8424,24 @@ class CfnClusterCapacityProviderAssociations(
8390
8424
 
8391
8425
  If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.
8392
8426
 
8393
- An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
8427
+ Weight value characteristics:
8428
+
8429
+ - Weight is considered after the base value is satisfied
8430
+ - Default value is ``0`` if not specified
8431
+ - Valid range: 0 to 1,000
8432
+ - At least one capacity provider must have a weight greater than zero
8433
+ - Capacity providers with weight of ``0`` cannot place tasks
8434
+
8435
+ Task distribution logic:
8436
+
8437
+ - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider
8438
+ - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios
8439
+
8440
+ Examples:
8441
+
8442
+ Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met.
8443
+
8444
+ Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
8394
8445
 
8395
8446
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-clustercapacityproviderassociations-capacityproviderstrategy.html#cfn-ecs-clustercapacityproviderassociations-capacityproviderstrategy-weight
8396
8447
  '''
@@ -9038,6 +9089,12 @@ class CfnService(
9038
9089
  desired_count=123,
9039
9090
  enable_ecs_managed_tags=False,
9040
9091
  enable_execute_command=False,
9092
+ force_new_deployment=ecs.CfnService.ForceNewDeploymentProperty(
9093
+ enable_force_new_deployment=False,
9094
+
9095
+ # the properties below are optional
9096
+ force_new_deployment_nonce="forceNewDeploymentNonce"
9097
+ ),
9041
9098
  health_check_grace_period_seconds=123,
9042
9099
  launch_type="launchType",
9043
9100
  load_balancers=[ecs.CfnService.LoadBalancerProperty(
@@ -9191,6 +9248,7 @@ class CfnService(
9191
9248
  desired_count: typing.Optional[jsii.Number] = None,
9192
9249
  enable_ecs_managed_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
9193
9250
  enable_execute_command: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
9251
+ force_new_deployment: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.ForceNewDeploymentProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
9194
9252
  health_check_grace_period_seconds: typing.Optional[jsii.Number] = None,
9195
9253
  launch_type: typing.Optional[builtins.str] = None,
9196
9254
  load_balancers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnService.LoadBalancerProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
@@ -9212,7 +9270,7 @@ class CfnService(
9212
9270
  '''
9213
9271
  :param scope: Scope in which this resource is defined.
9214
9272
  :param id: Construct identifier for this resource (unique in its scope).
9215
- :param availability_zone_rebalancing: Indicates whether to use Availability Zone rebalancing for the service. For more information, see `Balancing an Amazon ECS service across Availability Zones <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html>`_ in the **Amazon Elastic Container Service Developer Guide** . Default: - "ENABLED"
9273
+ :param availability_zone_rebalancing: Indicates whether to use Availability Zone rebalancing for the service. For more information, see `Balancing an Amazon ECS service across Availability Zones <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html>`_ in the **Amazon Elastic Container Service Developer Guide** . Default: - "DISABLED"
9216
9274
  :param capacity_provider_strategy: The capacity provider strategy to use for the service. If a ``capacityProviderStrategy`` is specified, the ``launchType`` parameter must be omitted. If no ``capacityProviderStrategy`` or ``launchType`` is specified, the ``defaultCapacityProviderStrategy`` for the cluster is used. A capacity provider strategy can contain a maximum of 20 capacity providers. .. epigraph:: To remove this property from your service resource, specify an empty ``CapacityProviderStrategyItem`` array.
9217
9275
  :param cluster: The short name or full Amazon Resource Name (ARN) of the cluster that you run your service on. If you do not specify a cluster, the default cluster is assumed.
9218
9276
  :param deployment_configuration: Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks.
@@ -9220,6 +9278,7 @@ class CfnService(
9220
9278
  :param desired_count: The number of instantiations of the specified task definition to place and keep running in your service. For new services, if a desired count is not specified, a default value of ``1`` is used. When using the ``DAEMON`` scheduling strategy, the desired count is not required. For existing services, if a desired count is not specified, it is omitted from the operation.
9221
9279
  :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.
9222
9280
  :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.
9281
+ :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.
9223
9282
  :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 don't specify a health check grace period value, the default value of ``0`` is used. If you don't use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused. If your service's tasks take a while to start and respond to health checks, you can specify a health check grace period of up to 2,147,483,647 seconds (about 69 years). During that time, the Amazon ECS service scheduler ignores health check status. This grace period can prevent the service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.
9224
9283
  :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* .
9225
9284
  :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.
@@ -9251,6 +9310,7 @@ class CfnService(
9251
9310
  desired_count=desired_count,
9252
9311
  enable_ecs_managed_tags=enable_ecs_managed_tags,
9253
9312
  enable_execute_command=enable_execute_command,
9313
+ force_new_deployment=force_new_deployment,
9254
9314
  health_check_grace_period_seconds=health_check_grace_period_seconds,
9255
9315
  launch_type=launch_type,
9256
9316
  load_balancers=load_balancers,
@@ -9465,6 +9525,24 @@ class CfnService(
9465
9525
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9466
9526
  jsii.set(self, "enableExecuteCommand", value) # pyright: ignore[reportArgumentType]
9467
9527
 
9528
+ @builtins.property
9529
+ @jsii.member(jsii_name="forceNewDeployment")
9530
+ def force_new_deployment(
9531
+ self,
9532
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ForceNewDeploymentProperty"]]:
9533
+ '''Determines whether to force a new deployment of the service.'''
9534
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ForceNewDeploymentProperty"]], jsii.get(self, "forceNewDeployment"))
9535
+
9536
+ @force_new_deployment.setter
9537
+ def force_new_deployment(
9538
+ self,
9539
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnService.ForceNewDeploymentProperty"]],
9540
+ ) -> None:
9541
+ if __debug__:
9542
+ type_hints = typing.get_type_hints(_typecheckingstub__30697d792a144902af8d5ce8bec3db2e9ebb612ed4d71a72a5ee98dcace27fce)
9543
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
9544
+ jsii.set(self, "forceNewDeployment", value) # pyright: ignore[reportArgumentType]
9545
+
9468
9546
  @builtins.property
9469
9547
  @jsii.member(jsii_name="healthCheckGracePeriodSeconds")
9470
9548
  def health_check_grace_period_seconds(self) -> typing.Optional[jsii.Number]:
@@ -9978,9 +10056,9 @@ class CfnService(
9978
10056
 
9979
10057
  To use an AWS Fargate capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The AWS Fargate capacity providers are available to all accounts and only need to be associated with a cluster to be used in a capacity provider strategy.
9980
10058
 
9981
- :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
10059
+ :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used. Base value characteristics: - Only one capacity provider in a strategy can have a base defined - Default value is ``0`` if not specified - Valid range: 0 to 100,000 - Base requirements are satisfied first before weight distribution
9982
10060
  :param capacity_provider: The short name of the capacity provider.
9983
- :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
10061
+ :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. Weight value characteristics: - Weight is considered after the base value is satisfied - Default value is ``0`` if not specified - Valid range: 0 to 1,000 - At least one capacity provider must have a weight greater than zero - Capacity providers with weight of ``0`` cannot place tasks Task distribution logic: - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios Examples: Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met. Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
9984
10062
 
9985
10063
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-capacityproviderstrategyitem.html
9986
10064
  :exampleMetadata: fixture=_generated
@@ -10012,10 +10090,17 @@ class CfnService(
10012
10090
 
10013
10091
  @builtins.property
10014
10092
  def base(self) -> typing.Optional[jsii.Number]:
10015
- '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider.
10093
+ '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service.
10016
10094
 
10017
10095
  Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
10018
10096
 
10097
+ Base value characteristics:
10098
+
10099
+ - Only one capacity provider in a strategy can have a base defined
10100
+ - Default value is ``0`` if not specified
10101
+ - Valid range: 0 to 100,000
10102
+ - Base requirements are satisfied first before weight distribution
10103
+
10019
10104
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-capacityproviderstrategyitem.html#cfn-ecs-service-capacityproviderstrategyitem-base
10020
10105
  '''
10021
10106
  result = self._values.get("base")
@@ -10038,7 +10123,24 @@ class CfnService(
10038
10123
 
10039
10124
  If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.
10040
10125
 
10041
- An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
10126
+ Weight value characteristics:
10127
+
10128
+ - Weight is considered after the base value is satisfied
10129
+ - Default value is ``0`` if not specified
10130
+ - Valid range: 0 to 1,000
10131
+ - At least one capacity provider must have a weight greater than zero
10132
+ - Capacity providers with weight of ``0`` cannot place tasks
10133
+
10134
+ Task distribution logic:
10135
+
10136
+ - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider
10137
+ - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios
10138
+
10139
+ Examples:
10140
+
10141
+ Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met.
10142
+
10143
+ Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
10042
10144
 
10043
10145
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-capacityproviderstrategyitem.html#cfn-ecs-service-capacityproviderstrategyitem-weight
10044
10146
  '''
@@ -10793,6 +10895,81 @@ class CfnService(
10793
10895
  k + "=" + repr(v) for k, v in self._values.items()
10794
10896
  )
10795
10897
 
10898
+ @jsii.data_type(
10899
+ jsii_type="aws-cdk-lib.aws_ecs.CfnService.ForceNewDeploymentProperty",
10900
+ jsii_struct_bases=[],
10901
+ name_mapping={
10902
+ "enable_force_new_deployment": "enableForceNewDeployment",
10903
+ "force_new_deployment_nonce": "forceNewDeploymentNonce",
10904
+ },
10905
+ )
10906
+ class ForceNewDeploymentProperty:
10907
+ def __init__(
10908
+ self,
10909
+ *,
10910
+ enable_force_new_deployment: typing.Union[builtins.bool, _IResolvable_da3f097b],
10911
+ force_new_deployment_nonce: typing.Optional[builtins.str] = None,
10912
+ ) -> None:
10913
+ '''
10914
+ :param enable_force_new_deployment:
10915
+ :param force_new_deployment_nonce:
10916
+
10917
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-forcenewdeployment.html
10918
+ :exampleMetadata: fixture=_generated
10919
+
10920
+ Example::
10921
+
10922
+ # The code below shows an example of how to instantiate this type.
10923
+ # The values are placeholders you should change.
10924
+ from aws_cdk import aws_ecs as ecs
10925
+
10926
+ force_new_deployment_property = ecs.CfnService.ForceNewDeploymentProperty(
10927
+ enable_force_new_deployment=False,
10928
+
10929
+ # the properties below are optional
10930
+ force_new_deployment_nonce="forceNewDeploymentNonce"
10931
+ )
10932
+ '''
10933
+ if __debug__:
10934
+ type_hints = typing.get_type_hints(_typecheckingstub__61f79b8cfbfd89da452531f374d2c8ed25d98693945205dbbe670de811c5ed06)
10935
+ check_type(argname="argument enable_force_new_deployment", value=enable_force_new_deployment, expected_type=type_hints["enable_force_new_deployment"])
10936
+ check_type(argname="argument force_new_deployment_nonce", value=force_new_deployment_nonce, expected_type=type_hints["force_new_deployment_nonce"])
10937
+ self._values: typing.Dict[builtins.str, typing.Any] = {
10938
+ "enable_force_new_deployment": enable_force_new_deployment,
10939
+ }
10940
+ if force_new_deployment_nonce is not None:
10941
+ self._values["force_new_deployment_nonce"] = force_new_deployment_nonce
10942
+
10943
+ @builtins.property
10944
+ def enable_force_new_deployment(
10945
+ self,
10946
+ ) -> typing.Union[builtins.bool, _IResolvable_da3f097b]:
10947
+ '''
10948
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-forcenewdeployment.html#cfn-ecs-service-forcenewdeployment-enableforcenewdeployment
10949
+ '''
10950
+ result = self._values.get("enable_force_new_deployment")
10951
+ assert result is not None, "Required property 'enable_force_new_deployment' is missing"
10952
+ return typing.cast(typing.Union[builtins.bool, _IResolvable_da3f097b], result)
10953
+
10954
+ @builtins.property
10955
+ def force_new_deployment_nonce(self) -> typing.Optional[builtins.str]:
10956
+ '''
10957
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-forcenewdeployment.html#cfn-ecs-service-forcenewdeployment-forcenewdeploymentnonce
10958
+ '''
10959
+ result = self._values.get("force_new_deployment_nonce")
10960
+ return typing.cast(typing.Optional[builtins.str], result)
10961
+
10962
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
10963
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
10964
+
10965
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
10966
+ return not (rhs == self)
10967
+
10968
+ def __repr__(self) -> str:
10969
+ return "ForceNewDeploymentProperty(%s)" % ", ".join(
10970
+ k + "=" + repr(v) for k, v in self._values.items()
10971
+ )
10972
+
10796
10973
  @jsii.data_type(
10797
10974
  jsii_type="aws-cdk-lib.aws_ecs.CfnService.LoadBalancerProperty",
10798
10975
  jsii_struct_bases=[],
@@ -10980,7 +11157,7 @@ class CfnService(
10980
11157
  - For tasks that are on AWS Fargate , because you don't have access to the underlying infrastructure your tasks are hosted on, any additional software needed must be installed outside of the task. For example, the Fluentd output aggregators or a remote host running Logstash to send Gelf logs to.
10981
11158
 
10982
11159
  :param log_driver: The log driver to use for the container. For tasks on AWS Fargate , the supported log drivers are ``awslogs`` , ``splunk`` , and ``awsfirelens`` . For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs`` , ``fluentd`` , ``gelf`` , ``json-file`` , ``journald`` , ``syslog`` , ``splunk`` , and ``awsfirelens`` . For more information about using the ``awslogs`` log driver, see `Send Amazon ECS logs to CloudWatch <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html>`_ in the *Amazon Elastic Container Service Developer Guide* . For more information about using the ``awsfirelens`` log driver, see `Send Amazon ECS logs to an AWS service or AWS Partner <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html>`_ . .. epigraph:: If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's `available on GitHub <https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent>`_ and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.
10983
- :param options: The configuration options to send to the log driver. The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following: - **awslogs-create-group** - Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to ``false`` . .. epigraph:: Your IAM policy must include the ``logs:CreateLogGroup`` permission before you attempt to use ``awslogs-create-group`` . - **awslogs-region** - Required: Yes Specify the AWS Region that the ``awslogs`` log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. - **awslogs-group** - Required: Yes Make sure to specify a log group that the ``awslogs`` log driver sends its log streams to. - **awslogs-stream-prefix** - Required: Yes, when using Fargate.Optional when using EC2. Use the ``awslogs-stream-prefix`` option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format ``prefix-name/container-name/ecs-task-id`` . If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. - **awslogs-datetime-format** - Required: No This option defines a multiline start pattern in Python ``strftime`` format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see `awslogs-datetime-format <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format>`_ . You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. - **awslogs-multiline-pattern** - Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see `awslogs-multiline-pattern <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern>`_ . This option is ignored if ``awslogs-datetime-format`` is also configured. You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. The following options apply to all supported log drivers. - **mode** - Required: No Valid values: ``non-blocking`` | ``blocking`` This option defines the delivery mode of log messages from the container to the log driver specified using ``logDriver`` . The delivery mode you choose affects application availability when the flow of logs from container is interrupted. If you use the ``blocking`` mode and the flow of logs is interrupted, calls from container code to write to the ``stdout`` and ``stderr`` streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the ``non-blocking`` mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the ``max-buffer-size`` option. This prevents the application from becoming unresponsive when logs cannot be sent. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see `Preventing log loss with non-blocking mode in the ``awslogs`` container log driver <https://docs.aws.amazon.com/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/>`_ . You can set a default ``mode`` for all containers in a specific AWS Region by using the ``defaultLogDriverMode`` account setting. If you don't specify the ``mode`` option or configure the account setting, Amazon ECS will default to the ``non-blocking`` mode. For more information about the account setting, see `Default log driver mode <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#default-log-driver-mode>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: On June 25, 2025, Amazon ECS changed the default log driver mode from ``blocking`` to ``non-blocking`` to prioritize task availability over logging. To continue using the ``blocking`` mode after this change, do one of the following: - Set the ``mode`` option in your container definition's ``logConfiguration`` as ``blocking`` . - Set the ``defaultLogDriverMode`` account setting to ``blocking`` . - **max-buffer-size** - Required: No Default value: ``1m`` When ``non-blocking`` mode is used, the ``max-buffer-size`` log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url`` . When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker. Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream`` . When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream`` . When you export logs to Amazon OpenSearch Service, you can specify options like ``Name`` , ``Host`` (OpenSearch Service endpoint without protocol), ``Port`` , ``Index`` , ``Type`` , ``Aws_auth`` , ``Aws_region`` , ``Suppress_Type_Name`` , and ``tls`` . For more information, see `Under the hood: FireLens for Amazon ECS Tasks <https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/>`_ . When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region`` , ``total_file_size`` , ``upload_timeout`` , and ``use_put_object`` as options. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``
11160
+ :param options: The configuration options to send to the log driver. The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following: - **awslogs-create-group** - Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to ``false`` . .. epigraph:: Your IAM policy must include the ``logs:CreateLogGroup`` permission before you attempt to use ``awslogs-create-group`` . - **awslogs-region** - Required: Yes Specify the AWS Region that the ``awslogs`` log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. - **awslogs-group** - Required: Yes Make sure to specify a log group that the ``awslogs`` log driver sends its log streams to. - **awslogs-stream-prefix** - Required: Yes, when using Fargate.Optional when using EC2. Use the ``awslogs-stream-prefix`` option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format ``prefix-name/container-name/ecs-task-id`` . If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. - **awslogs-datetime-format** - Required: No This option defines a multiline start pattern in Python ``strftime`` format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see `awslogs-datetime-format <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format>`_ . You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. - **awslogs-multiline-pattern** - Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see `awslogs-multiline-pattern <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern>`_ . This option is ignored if ``awslogs-datetime-format`` is also configured. You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. The following options apply to all supported log drivers. - **mode** - Required: No Valid values: ``non-blocking`` | ``blocking`` This option defines the delivery mode of log messages from the container to the log driver specified using ``logDriver`` . The delivery mode you choose affects application availability when the flow of logs from container is interrupted. If you use the ``blocking`` mode and the flow of logs is interrupted, calls from container code to write to the ``stdout`` and ``stderr`` streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the ``non-blocking`` mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the ``max-buffer-size`` option. This prevents the application from becoming unresponsive when logs cannot be sent. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see `Preventing log loss with non-blocking mode in the ``awslogs`` container log driver <https://docs.aws.amazon.com/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/>`_ . You can set a default ``mode`` for all containers in a specific AWS Region by using the ``defaultLogDriverMode`` account setting. If you don't specify the ``mode`` option or configure the account setting, Amazon ECS will default to the ``non-blocking`` mode. For more information about the account setting, see `Default log driver mode <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#default-log-driver-mode>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: On June 25, 2025, Amazon ECS changed the default log driver mode from ``blocking`` to ``non-blocking`` to prioritize task availability over logging. To continue using the ``blocking`` mode after this change, do one of the following: - Set the ``mode`` option in your container definition's ``logConfiguration`` as ``blocking`` . - Set the ``defaultLogDriverMode`` account setting to ``blocking`` . - **max-buffer-size** - Required: No Default value: ``10m`` When ``non-blocking`` mode is used, the ``max-buffer-size`` log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url`` . When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker. Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream`` . When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream`` . When you export logs to Amazon OpenSearch Service, you can specify options like ``Name`` , ``Host`` (OpenSearch Service endpoint without protocol), ``Port`` , ``Index`` , ``Type`` , ``Aws_auth`` , ``Aws_region`` , ``Suppress_Type_Name`` , and ``tls`` . For more information, see `Under the hood: FireLens for Amazon ECS Tasks <https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/>`_ . When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region`` , ``total_file_size`` , ``upload_timeout`` , and ``use_put_object`` as options. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``
10984
11161
  :param secret_options: The secrets to pass to the log configuration. For more information, see `Specifying sensitive data <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
10985
11162
 
10986
11163
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-logconfiguration.html
@@ -11117,7 +11294,7 @@ class CfnService(
11117
11294
 
11118
11295
  - **max-buffer-size** - Required: No
11119
11296
 
11120
- Default value: ``1m``
11297
+ Default value: ``10m``
11121
11298
 
11122
11299
  When ``non-blocking`` mode is used, the ``max-buffer-size`` log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost.
11123
11300
 
@@ -13020,6 +13197,7 @@ class CfnService(
13020
13197
  "desired_count": "desiredCount",
13021
13198
  "enable_ecs_managed_tags": "enableEcsManagedTags",
13022
13199
  "enable_execute_command": "enableExecuteCommand",
13200
+ "force_new_deployment": "forceNewDeployment",
13023
13201
  "health_check_grace_period_seconds": "healthCheckGracePeriodSeconds",
13024
13202
  "launch_type": "launchType",
13025
13203
  "load_balancers": "loadBalancers",
@@ -13051,6 +13229,7 @@ class CfnServiceProps:
13051
13229
  desired_count: typing.Optional[jsii.Number] = None,
13052
13230
  enable_ecs_managed_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
13053
13231
  enable_execute_command: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
13232
+ force_new_deployment: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.ForceNewDeploymentProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
13054
13233
  health_check_grace_period_seconds: typing.Optional[jsii.Number] = None,
13055
13234
  launch_type: typing.Optional[builtins.str] = None,
13056
13235
  load_balancers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.LoadBalancerProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
@@ -13071,7 +13250,7 @@ class CfnServiceProps:
13071
13250
  ) -> None:
13072
13251
  '''Properties for defining a ``CfnService``.
13073
13252
 
13074
- :param availability_zone_rebalancing: Indicates whether to use Availability Zone rebalancing for the service. For more information, see `Balancing an Amazon ECS service across Availability Zones <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html>`_ in the **Amazon Elastic Container Service Developer Guide** . Default: - "ENABLED"
13253
+ :param availability_zone_rebalancing: Indicates whether to use Availability Zone rebalancing for the service. For more information, see `Balancing an Amazon ECS service across Availability Zones <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html>`_ in the **Amazon Elastic Container Service Developer Guide** . Default: - "DISABLED"
13075
13254
  :param capacity_provider_strategy: The capacity provider strategy to use for the service. If a ``capacityProviderStrategy`` is specified, the ``launchType`` parameter must be omitted. If no ``capacityProviderStrategy`` or ``launchType`` is specified, the ``defaultCapacityProviderStrategy`` for the cluster is used. A capacity provider strategy can contain a maximum of 20 capacity providers. .. epigraph:: To remove this property from your service resource, specify an empty ``CapacityProviderStrategyItem`` array.
13076
13255
  :param cluster: The short name or full Amazon Resource Name (ARN) of the cluster that you run your service on. If you do not specify a cluster, the default cluster is assumed.
13077
13256
  :param deployment_configuration: Optional deployment parameters that control how many tasks run during the deployment and the ordering of stopping and starting tasks.
@@ -13079,6 +13258,7 @@ class CfnServiceProps:
13079
13258
  :param desired_count: The number of instantiations of the specified task definition to place and keep running in your service. For new services, if a desired count is not specified, a default value of ``1`` is used. When using the ``DAEMON`` scheduling strategy, the desired count is not required. For existing services, if a desired count is not specified, it is omitted from the operation.
13080
13259
  :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.
13081
13260
  :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.
13261
+ :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.
13082
13262
  :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 don't specify a health check grace period value, the default value of ``0`` is used. If you don't use any of the health checks, then ``healthCheckGracePeriodSeconds`` is unused. If your service's tasks take a while to start and respond to health checks, you can specify a health check grace period of up to 2,147,483,647 seconds (about 69 years). During that time, the Amazon ECS service scheduler ignores health check status. This grace period can prevent the service scheduler from marking tasks as unhealthy and stopping them before they have time to come up.
13083
13263
  :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* .
13084
13264
  :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.
@@ -13140,6 +13320,12 @@ class CfnServiceProps:
13140
13320
  desired_count=123,
13141
13321
  enable_ecs_managed_tags=False,
13142
13322
  enable_execute_command=False,
13323
+ force_new_deployment=ecs.CfnService.ForceNewDeploymentProperty(
13324
+ enable_force_new_deployment=False,
13325
+
13326
+ # the properties below are optional
13327
+ force_new_deployment_nonce="forceNewDeploymentNonce"
13328
+ ),
13143
13329
  health_check_grace_period_seconds=123,
13144
13330
  launch_type="launchType",
13145
13331
  load_balancers=[ecs.CfnService.LoadBalancerProperty(
@@ -13289,6 +13475,7 @@ class CfnServiceProps:
13289
13475
  check_type(argname="argument desired_count", value=desired_count, expected_type=type_hints["desired_count"])
13290
13476
  check_type(argname="argument enable_ecs_managed_tags", value=enable_ecs_managed_tags, expected_type=type_hints["enable_ecs_managed_tags"])
13291
13477
  check_type(argname="argument enable_execute_command", value=enable_execute_command, expected_type=type_hints["enable_execute_command"])
13478
+ check_type(argname="argument force_new_deployment", value=force_new_deployment, expected_type=type_hints["force_new_deployment"])
13292
13479
  check_type(argname="argument health_check_grace_period_seconds", value=health_check_grace_period_seconds, expected_type=type_hints["health_check_grace_period_seconds"])
13293
13480
  check_type(argname="argument launch_type", value=launch_type, expected_type=type_hints["launch_type"])
13294
13481
  check_type(argname="argument load_balancers", value=load_balancers, expected_type=type_hints["load_balancers"])
@@ -13323,6 +13510,8 @@ class CfnServiceProps:
13323
13510
  self._values["enable_ecs_managed_tags"] = enable_ecs_managed_tags
13324
13511
  if enable_execute_command is not None:
13325
13512
  self._values["enable_execute_command"] = enable_execute_command
13513
+ if force_new_deployment is not None:
13514
+ self._values["force_new_deployment"] = force_new_deployment
13326
13515
  if health_check_grace_period_seconds is not None:
13327
13516
  self._values["health_check_grace_period_seconds"] = health_check_grace_period_seconds
13328
13517
  if launch_type is not None:
@@ -13364,7 +13553,7 @@ class CfnServiceProps:
13364
13553
 
13365
13554
  For more information, see `Balancing an Amazon ECS service across Availability Zones <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html>`_ in the **Amazon Elastic Container Service Developer Guide** .
13366
13555
 
13367
- :default: - "ENABLED"
13556
+ :default: - "DISABLED"
13368
13557
 
13369
13558
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-availabilityzonerebalancing
13370
13559
  '''
@@ -13463,6 +13652,19 @@ class CfnServiceProps:
13463
13652
  result = self._values.get("enable_execute_command")
13464
13653
  return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
13465
13654
 
13655
+ @builtins.property
13656
+ def force_new_deployment(
13657
+ self,
13658
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnService.ForceNewDeploymentProperty]]:
13659
+ '''Determines whether to force a new deployment of the service.
13660
+
13661
+ 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.
13662
+
13663
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-forcenewdeployment
13664
+ '''
13665
+ result = self._values.get("force_new_deployment")
13666
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnService.ForceNewDeploymentProperty]], result)
13667
+
13466
13668
  @builtins.property
13467
13669
  def health_check_grace_period_seconds(self) -> typing.Optional[jsii.Number]:
13468
13670
  '''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.
@@ -17187,7 +17389,7 @@ class CfnTaskDefinition(
17187
17389
  '''The ``LogConfiguration`` property specifies log configuration options to send to a custom log driver for the container.
17188
17390
 
17189
17391
  :param log_driver: The log driver to use for the container. For tasks on AWS Fargate , the supported log drivers are ``awslogs`` , ``splunk`` , and ``awsfirelens`` . For tasks hosted on Amazon EC2 instances, the supported log drivers are ``awslogs`` , ``fluentd`` , ``gelf`` , ``json-file`` , ``journald`` , ``syslog`` , ``splunk`` , and ``awsfirelens`` . For more information about using the ``awslogs`` log driver, see `Send Amazon ECS logs to CloudWatch <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html>`_ in the *Amazon Elastic Container Service Developer Guide* . For more information about using the ``awsfirelens`` log driver, see `Send Amazon ECS logs to an AWS service or AWS Partner <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html>`_ . .. epigraph:: If you have a custom driver that isn't listed, you can fork the Amazon ECS container agent project that's `available on GitHub <https://docs.aws.amazon.com/https://github.com/aws/amazon-ecs-agent>`_ and customize it to work with that driver. We encourage you to submit pull requests for changes that you would like to have included. However, we don't currently provide support for running modified copies of this software.
17190
- :param options: The configuration options to send to the log driver. The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following: - **awslogs-create-group** - Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to ``false`` . .. epigraph:: Your IAM policy must include the ``logs:CreateLogGroup`` permission before you attempt to use ``awslogs-create-group`` . - **awslogs-region** - Required: Yes Specify the AWS Region that the ``awslogs`` log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. - **awslogs-group** - Required: Yes Make sure to specify a log group that the ``awslogs`` log driver sends its log streams to. - **awslogs-stream-prefix** - Required: Yes, when using Fargate.Optional when using EC2. Use the ``awslogs-stream-prefix`` option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format ``prefix-name/container-name/ecs-task-id`` . If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. - **awslogs-datetime-format** - Required: No This option defines a multiline start pattern in Python ``strftime`` format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see `awslogs-datetime-format <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format>`_ . You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. - **awslogs-multiline-pattern** - Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see `awslogs-multiline-pattern <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern>`_ . This option is ignored if ``awslogs-datetime-format`` is also configured. You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. The following options apply to all supported log drivers. - **mode** - Required: No Valid values: ``non-blocking`` | ``blocking`` This option defines the delivery mode of log messages from the container to the log driver specified using ``logDriver`` . The delivery mode you choose affects application availability when the flow of logs from container is interrupted. If you use the ``blocking`` mode and the flow of logs is interrupted, calls from container code to write to the ``stdout`` and ``stderr`` streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the ``non-blocking`` mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the ``max-buffer-size`` option. This prevents the application from becoming unresponsive when logs cannot be sent. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see `Preventing log loss with non-blocking mode in the ``awslogs`` container log driver <https://docs.aws.amazon.com/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/>`_ . You can set a default ``mode`` for all containers in a specific AWS Region by using the ``defaultLogDriverMode`` account setting. If you don't specify the ``mode`` option or configure the account setting, Amazon ECS will default to the ``non-blocking`` mode. For more information about the account setting, see `Default log driver mode <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#default-log-driver-mode>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: On June 25, 2025, Amazon ECS changed the default log driver mode from ``blocking`` to ``non-blocking`` to prioritize task availability over logging. To continue using the ``blocking`` mode after this change, do one of the following: - Set the ``mode`` option in your container definition's ``logConfiguration`` as ``blocking`` . - Set the ``defaultLogDriverMode`` account setting to ``blocking`` . - **max-buffer-size** - Required: No Default value: ``1m`` When ``non-blocking`` mode is used, the ``max-buffer-size`` log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url`` . When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker. Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream`` . When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream`` . When you export logs to Amazon OpenSearch Service, you can specify options like ``Name`` , ``Host`` (OpenSearch Service endpoint without protocol), ``Port`` , ``Index`` , ``Type`` , ``Aws_auth`` , ``Aws_region`` , ``Suppress_Type_Name`` , and ``tls`` . For more information, see `Under the hood: FireLens for Amazon ECS Tasks <https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/>`_ . When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region`` , ``total_file_size`` , ``upload_timeout`` , and ``use_put_object`` as options. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``
17392
+ :param options: The configuration options to send to the log driver. The options you can specify depend on the log driver. Some of the options you can specify when you use the ``awslogs`` log driver to route logs to Amazon CloudWatch include the following: - **awslogs-create-group** - Required: No Specify whether you want the log group to be created automatically. If this option isn't specified, it defaults to ``false`` . .. epigraph:: Your IAM policy must include the ``logs:CreateLogGroup`` permission before you attempt to use ``awslogs-create-group`` . - **awslogs-region** - Required: Yes Specify the AWS Region that the ``awslogs`` log driver is to send your Docker logs to. You can choose to send all of your logs from clusters in different Regions to a single region in CloudWatch Logs. This is so that they're all visible in one location. Otherwise, you can separate them by Region for more granularity. Make sure that the specified log group exists in the Region that you specify with this option. - **awslogs-group** - Required: Yes Make sure to specify a log group that the ``awslogs`` log driver sends its log streams to. - **awslogs-stream-prefix** - Required: Yes, when using Fargate.Optional when using EC2. Use the ``awslogs-stream-prefix`` option to associate a log stream with the specified prefix, the container name, and the ID of the Amazon ECS task that the container belongs to. If you specify a prefix with this option, then the log stream takes the format ``prefix-name/container-name/ecs-task-id`` . If you don't specify a prefix with this option, then the log stream is named after the container ID that's assigned by the Docker daemon on the container instance. Because it's difficult to trace logs back to the container that sent them with just the Docker container ID (which is only available on the container instance), we recommend that you specify a prefix with this option. For Amazon ECS services, you can use the service name as the prefix. Doing so, you can trace log streams to the service that the container belongs to, the name of the container that sent them, and the ID of the task that the container belongs to. You must specify a stream-prefix for your logs to have your logs appear in the Log pane when using the Amazon ECS console. - **awslogs-datetime-format** - Required: No This option defines a multiline start pattern in Python ``strftime`` format. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. One example of a use case for using this format is for parsing output such as a stack dump, which might otherwise be logged in multiple entries. The correct pattern allows it to be captured in a single entry. For more information, see `awslogs-datetime-format <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format>`_ . You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. - **awslogs-multiline-pattern** - Required: No This option defines a multiline start pattern that uses a regular expression. A log message consists of a line that matches the pattern and any following lines that don’t match the pattern. The matched line is the delimiter between log messages. For more information, see `awslogs-multiline-pattern <https://docs.aws.amazon.com/https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern>`_ . This option is ignored if ``awslogs-datetime-format`` is also configured. You cannot configure both the ``awslogs-datetime-format`` and ``awslogs-multiline-pattern`` options. .. epigraph:: Multiline logging performs regular expression parsing and matching of all log messages. This might have a negative impact on logging performance. The following options apply to all supported log drivers. - **mode** - Required: No Valid values: ``non-blocking`` | ``blocking`` This option defines the delivery mode of log messages from the container to the log driver specified using ``logDriver`` . The delivery mode you choose affects application availability when the flow of logs from container is interrupted. If you use the ``blocking`` mode and the flow of logs is interrupted, calls from container code to write to the ``stdout`` and ``stderr`` streams will block. The logging thread of the application will block as a result. This may cause the application to become unresponsive and lead to container healthcheck failure. If you use the ``non-blocking`` mode, the container's logs are instead stored in an in-memory intermediate buffer configured with the ``max-buffer-size`` option. This prevents the application from becoming unresponsive when logs cannot be sent. We recommend using this mode if you want to ensure service availability and are okay with some log loss. For more information, see `Preventing log loss with non-blocking mode in the ``awslogs`` container log driver <https://docs.aws.amazon.com/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/>`_ . You can set a default ``mode`` for all containers in a specific AWS Region by using the ``defaultLogDriverMode`` account setting. If you don't specify the ``mode`` option or configure the account setting, Amazon ECS will default to the ``non-blocking`` mode. For more information about the account setting, see `Default log driver mode <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#default-log-driver-mode>`_ in the *Amazon Elastic Container Service Developer Guide* . .. epigraph:: On June 25, 2025, Amazon ECS changed the default log driver mode from ``blocking`` to ``non-blocking`` to prioritize task availability over logging. To continue using the ``blocking`` mode after this change, do one of the following: - Set the ``mode`` option in your container definition's ``logConfiguration`` as ``blocking`` . - Set the ``defaultLogDriverMode`` account setting to ``blocking`` . - **max-buffer-size** - Required: No Default value: ``10m`` When ``non-blocking`` mode is used, the ``max-buffer-size`` log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost. To route logs using the ``splunk`` log router, you need to specify a ``splunk-token`` and a ``splunk-url`` . When you use the ``awsfirelens`` log router to route logs to an AWS Service or AWS Partner Network destination for log storage and analytics, you can set the ``log-driver-buffer-limit`` option to limit the number of events that are buffered in memory, before being sent to the log router container. It can help to resolve potential log loss issue because high throughput might result in memory running out for the buffer inside of Docker. Other options you can specify when using ``awsfirelens`` to route logs depend on the destination. When you export logs to Amazon Data Firehose, you can specify the AWS Region with ``region`` and a name for the log stream with ``delivery_stream`` . When you export logs to Amazon Kinesis Data Streams, you can specify an AWS Region with ``region`` and a data stream name with ``stream`` . When you export logs to Amazon OpenSearch Service, you can specify options like ``Name`` , ``Host`` (OpenSearch Service endpoint without protocol), ``Port`` , ``Index`` , ``Type`` , ``Aws_auth`` , ``Aws_region`` , ``Suppress_Type_Name`` , and ``tls`` . For more information, see `Under the hood: FireLens for Amazon ECS Tasks <https://docs.aws.amazon.com/containers/under-the-hood-firelens-for-amazon-ecs-tasks/>`_ . When you export logs to Amazon S3, you can specify the bucket using the ``bucket`` option. You can also specify ``region`` , ``total_file_size`` , ``upload_timeout`` , and ``use_put_object`` as options. This parameter requires version 1.19 of the Docker Remote API or greater on your container instance. To check the Docker Remote API version on your container instance, log in to your container instance and run the following command: ``sudo docker version --format '{{.Server.APIVersion}}'``
17191
17393
  :param secret_options: The secrets to pass to the log configuration. For more information, see `Specifying sensitive data <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html>`_ in the *Amazon Elastic Container Service Developer Guide* .
17192
17394
 
17193
17395
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-logconfiguration.html
@@ -17327,7 +17529,7 @@ class CfnTaskDefinition(
17327
17529
 
17328
17530
  - **max-buffer-size** - Required: No
17329
17531
 
17330
- Default value: ``1m``
17532
+ Default value: ``10m``
17331
17533
 
17332
17534
  When ``non-blocking`` mode is used, the ``max-buffer-size`` log option controls the size of the buffer that's used for intermediate message storage. Make sure to specify an adequate buffer size based on your application. When the buffer fills up, further logs cannot be stored. Logs that cannot be stored are lost.
17333
17535
 
@@ -19956,9 +20158,9 @@ class CfnTaskSet(
19956
20158
 
19957
20159
  A capacity provider strategy can contain a maximum of 20 capacity providers.
19958
20160
 
19959
- :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
20161
+ :param base: The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used. Base value characteristics: - Only one capacity provider in a strategy can have a base defined - Default value is ``0`` if not specified - Valid range: 0 to 100,000 - Base requirements are satisfied first before weight distribution
19960
20162
  :param capacity_provider: The short name of the capacity provider.
19961
- :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
20163
+ :param weight: The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. Weight value characteristics: - Weight is considered after the base value is satisfied - Default value is ``0`` if not specified - Valid range: 0 to 1,000 - At least one capacity provider must have a weight greater than zero - Capacity providers with weight of ``0`` cannot place tasks Task distribution logic: - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios Examples: Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met. Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
19962
20164
 
19963
20165
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskset-capacityproviderstrategyitem.html
19964
20166
  :exampleMetadata: fixture=_generated
@@ -19990,10 +20192,17 @@ class CfnTaskSet(
19990
20192
 
19991
20193
  @builtins.property
19992
20194
  def base(self) -> typing.Optional[jsii.Number]:
19993
- '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider.
20195
+ '''The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider for each service.
19994
20196
 
19995
20197
  Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.
19996
20198
 
20199
+ Base value characteristics:
20200
+
20201
+ - Only one capacity provider in a strategy can have a base defined
20202
+ - Default value is ``0`` if not specified
20203
+ - Valid range: 0 to 100,000
20204
+ - Base requirements are satisfied first before weight distribution
20205
+
19997
20206
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskset-capacityproviderstrategyitem.html#cfn-ecs-taskset-capacityproviderstrategyitem-base
19998
20207
  '''
19999
20208
  result = self._values.get("base")
@@ -20016,7 +20225,24 @@ class CfnTaskSet(
20016
20225
 
20017
20226
  If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0`` , any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.
20018
20227
 
20019
- An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1`` , then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB* , then for every one task that's run using *capacityProviderA* , four tasks would use *capacityProviderB* .
20228
+ Weight value characteristics:
20229
+
20230
+ - Weight is considered after the base value is satisfied
20231
+ - Default value is ``0`` if not specified
20232
+ - Valid range: 0 to 1,000
20233
+ - At least one capacity provider must have a weight greater than zero
20234
+ - Capacity providers with weight of ``0`` cannot place tasks
20235
+
20236
+ Task distribution logic:
20237
+
20238
+ - Base satisfaction: The minimum number of tasks specified by the base value are placed on that capacity provider
20239
+ - Weight distribution: After base requirements are met, additional tasks are distributed according to weight ratios
20240
+
20241
+ Examples:
20242
+
20243
+ Equal Distribution: Two capacity providers both with weight ``1`` will split tasks evenly after base requirements are met.
20244
+
20245
+ Weighted Distribution: If capacityProviderA has weight ``1`` and capacityProviderB has weight ``4`` , then for every 1 task on A, 4 tasks will run on B.
20020
20246
 
20021
20247
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskset-capacityproviderstrategyitem.html#cfn-ecs-taskset-capacityproviderstrategyitem-weight
20022
20248
  '''
@@ -37629,6 +37855,7 @@ class ServiceConnectTlsConfiguration:
37629
37855
  "snap_shot_id": "snapShotId",
37630
37856
  "tag_specifications": "tagSpecifications",
37631
37857
  "throughput": "throughput",
37858
+ "volume_initialization_rate": "volumeInitializationRate",
37632
37859
  "volume_type": "volumeType",
37633
37860
  },
37634
37861
  )
@@ -37645,6 +37872,7 @@ class ServiceManagedEBSVolumeConfiguration:
37645
37872
  snap_shot_id: typing.Optional[builtins.str] = None,
37646
37873
  tag_specifications: typing.Optional[typing.Sequence[typing.Union[EBSTagSpecification, typing.Dict[builtins.str, typing.Any]]]] = None,
37647
37874
  throughput: typing.Optional[jsii.Number] = None,
37875
+ volume_initialization_rate: typing.Optional[_Size_7b441c34] = None,
37648
37876
  volume_type: typing.Optional[_EbsDeviceVolumeType_6792555b] = None,
37649
37877
  ) -> None:
37650
37878
  '''Represents the configuration for an ECS Service managed EBS volume.
@@ -37658,6 +37886,7 @@ class ServiceManagedEBSVolumeConfiguration:
37658
37886
  :param snap_shot_id: The snapshot that Amazon ECS uses to create the volume. You must specify either ``size`` or ``snapshotId``. Default: - No snapshot.
37659
37887
  :param tag_specifications: Specifies the tags to apply to the volume and whether to propagate those tags to the volume. Default: - No tags are specified.
37660
37888
  :param throughput: The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. This parameter is only supported for the gp3 volume type. Default: - No throughput.
37889
+ :param volume_initialization_rate: Specifies the Amazon EBS Provisioned Rate for Volume Initialization (volume initialization rate), at which to download the snapshot blocks from Amazon S3 to the volume. Valid range is between 100 and 300 MiB/s. Default: undefined - The volume initialization rate is not set.
37661
37890
  :param volume_type: The volume type. Default: - ec2.EbsDeviceVolumeType.GP2
37662
37891
 
37663
37892
  :exampleMetadata: infused
@@ -37717,6 +37946,7 @@ class ServiceManagedEBSVolumeConfiguration:
37717
37946
  check_type(argname="argument snap_shot_id", value=snap_shot_id, expected_type=type_hints["snap_shot_id"])
37718
37947
  check_type(argname="argument tag_specifications", value=tag_specifications, expected_type=type_hints["tag_specifications"])
37719
37948
  check_type(argname="argument throughput", value=throughput, expected_type=type_hints["throughput"])
37949
+ check_type(argname="argument volume_initialization_rate", value=volume_initialization_rate, expected_type=type_hints["volume_initialization_rate"])
37720
37950
  check_type(argname="argument volume_type", value=volume_type, expected_type=type_hints["volume_type"])
37721
37951
  self._values: typing.Dict[builtins.str, typing.Any] = {}
37722
37952
  if encrypted is not None:
@@ -37737,6 +37967,8 @@ class ServiceManagedEBSVolumeConfiguration:
37737
37967
  self._values["tag_specifications"] = tag_specifications
37738
37968
  if throughput is not None:
37739
37969
  self._values["throughput"] = throughput
37970
+ if volume_initialization_rate is not None:
37971
+ self._values["volume_initialization_rate"] = volume_initialization_rate
37740
37972
  if volume_type is not None:
37741
37973
  self._values["volume_type"] = volume_type
37742
37974
 
@@ -37860,6 +38092,17 @@ class ServiceManagedEBSVolumeConfiguration:
37860
38092
  result = self._values.get("throughput")
37861
38093
  return typing.cast(typing.Optional[jsii.Number], result)
37862
38094
 
38095
+ @builtins.property
38096
+ def volume_initialization_rate(self) -> typing.Optional[_Size_7b441c34]:
38097
+ '''Specifies the Amazon EBS Provisioned Rate for Volume Initialization (volume initialization rate), at which to download the snapshot blocks from Amazon S3 to the volume.
38098
+
38099
+ Valid range is between 100 and 300 MiB/s.
38100
+
38101
+ :default: undefined - The volume initialization rate is not set.
38102
+ '''
38103
+ result = self._values.get("volume_initialization_rate")
38104
+ return typing.cast(typing.Optional[_Size_7b441c34], result)
38105
+
37863
38106
  @builtins.property
37864
38107
  def volume_type(self) -> typing.Optional[_EbsDeviceVolumeType_6792555b]:
37865
38108
  '''The volume type.
@@ -40936,7 +41179,10 @@ class Volume:
40936
41179
  managed_eBSVolume=ecs.ServiceManagedEBSVolumeConfiguration(
40937
41180
  snap_shot_id="snap-066877671789bd71b",
40938
41181
  volume_type=ec2.EbsDeviceVolumeType.GP3,
40939
- file_system_type=ecs.FileSystemType.XFS
41182
+ file_system_type=ecs.FileSystemType.XFS,
41183
+ # Specifies the Amazon EBS Provisioned Rate for Volume Initialization.
41184
+ # Valid range is between 100 and 300 MiB/s.
41185
+ volume_initialization_rate=Size.mebibytes(200)
40940
41186
  )
40941
41187
  )
40942
41188
 
@@ -46116,6 +46362,7 @@ def _typecheckingstub__ec1192a1d20e03deef75c7fa1457b92ecf9506c5c5df97b5a4473fc3a
46116
46362
  desired_count: typing.Optional[jsii.Number] = None,
46117
46363
  enable_ecs_managed_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
46118
46364
  enable_execute_command: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
46365
+ force_new_deployment: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.ForceNewDeploymentProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
46119
46366
  health_check_grace_period_seconds: typing.Optional[jsii.Number] = None,
46120
46367
  launch_type: typing.Optional[builtins.str] = None,
46121
46368
  load_balancers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.LoadBalancerProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
@@ -46197,6 +46444,12 @@ def _typecheckingstub__8e2bc49b758cd7bd2d560e7ef349cc9fd90122266047080d15fab50f9
46197
46444
  """Type checking stubs"""
46198
46445
  pass
46199
46446
 
46447
+ def _typecheckingstub__30697d792a144902af8d5ce8bec3db2e9ebb612ed4d71a72a5ee98dcace27fce(
46448
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnService.ForceNewDeploymentProperty]],
46449
+ ) -> None:
46450
+ """Type checking stubs"""
46451
+ pass
46452
+
46200
46453
  def _typecheckingstub__f711c1f6061fd4cde1ef9b3193fac0a0271ff054aad08ad6b79914e6f0f6db0f(
46201
46454
  value: typing.Optional[jsii.Number],
46202
46455
  ) -> None:
@@ -46382,6 +46635,14 @@ def _typecheckingstub__ac73ec1d9d94d0e545ad276e88baeb61d67c664fed33ac2082b94f93d
46382
46635
  """Type checking stubs"""
46383
46636
  pass
46384
46637
 
46638
+ def _typecheckingstub__61f79b8cfbfd89da452531f374d2c8ed25d98693945205dbbe670de811c5ed06(
46639
+ *,
46640
+ enable_force_new_deployment: typing.Union[builtins.bool, _IResolvable_da3f097b],
46641
+ force_new_deployment_nonce: typing.Optional[builtins.str] = None,
46642
+ ) -> None:
46643
+ """Type checking stubs"""
46644
+ pass
46645
+
46385
46646
  def _typecheckingstub__251c3999c1586967f7c9091782e6a113831e05b5f853b910cad8c8e75f654def(
46386
46647
  *,
46387
46648
  advanced_configuration: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.AdvancedConfigurationProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -46564,6 +46825,7 @@ def _typecheckingstub__7f93658ccdbf3f250d0d1ce12224e9eddaef71a8f664c6a279122f60d
46564
46825
  desired_count: typing.Optional[jsii.Number] = None,
46565
46826
  enable_ecs_managed_tags: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
46566
46827
  enable_execute_command: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
46828
+ force_new_deployment: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.ForceNewDeploymentProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
46567
46829
  health_check_grace_period_seconds: typing.Optional[jsii.Number] = None,
46568
46830
  launch_type: typing.Optional[builtins.str] = None,
46569
46831
  load_balancers: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnService.LoadBalancerProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
@@ -48888,6 +49150,7 @@ def _typecheckingstub__82a45c504d50ae45d687364dad808578c5d6f56116cf95de590987e67
48888
49150
  snap_shot_id: typing.Optional[builtins.str] = None,
48889
49151
  tag_specifications: typing.Optional[typing.Sequence[typing.Union[EBSTagSpecification, typing.Dict[builtins.str, typing.Any]]]] = None,
48890
49152
  throughput: typing.Optional[jsii.Number] = None,
49153
+ volume_initialization_rate: typing.Optional[_Size_7b441c34] = None,
48891
49154
  volume_type: typing.Optional[_EbsDeviceVolumeType_6792555b] = None,
48892
49155
  ) -> None:
48893
49156
  """Type checking stubs"""