aws-sdk-ecs 1.230.0 → 1.232.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c90cc570dc81a8be2fe1cd024150a4669527a9826affb5a12cb6a83c2362d85
4
- data.tar.gz: e5f9a4459598c70fb67b0a5167cd87756eb04ec21cd1c25925e218756fbf670f
3
+ metadata.gz: ccadd1f1077c40eef261dc1b99627959ad68b4c6eb11dc7f3ac0ab77aae74a56
4
+ data.tar.gz: eaa0a5022e7238162ec9043b41ba82247d1a4c14aa2bd1306f9c5a02d61eda7a
5
5
  SHA512:
6
- metadata.gz: 929d509e6b12cd17f0b395a2c1e1189438065e4195e62d7eb05105b3b5e9c6551afbdcf1b5ab66795d589513e74a350d3c813d981d818134f90a5d343a6655af
7
- data.tar.gz: df032863827e7cefb08e0623886d05a299ceb8acc4ba2ac914970dd8ec1ce9612811d289ae18824f0f9667195afbf240a30f6a5b58ff9c8b7d32d86fed312c00
6
+ metadata.gz: c5984fc2f4ce6414895f6bf1ea97246c800e1cb3d4066df46a234aaa2b8e96afaa27a432a69350d338a7f26e1f5518e48d1b487b33e3ce66fc226dbe95379cda
7
+ data.tar.gz: bbcfaff7fe5dc278dfbeb45db86ce54b6686f0d230fe58bf9471914cf7c277da2640af458e41b373b9a01a1ecf28d9a8e5294d18b2ba4a63f62a308a29e89c1c
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.232.0 (2026-05-19)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.231.0 (2026-05-18)
10
+ ------------------
11
+
12
+ * Feature - Amazon ECS now supports Pause lifecycle hooks for service deployments, allowing customers to automatically pause deployments at specified stages and use the new ContinueServiceDeployment API to continue or roll back with confidence.
13
+
4
14
  1.230.0 (2026-05-13)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.230.0
1
+ 1.232.0
@@ -483,6 +483,102 @@ module Aws::ECS
483
483
 
484
484
  # @!group API Operations
485
485
 
486
+ # Continues or rolls back an Amazon ECS service deployment that is
487
+ # paused at a lifecycle hook.
488
+ #
489
+ # When a service deployment reaches a lifecycle stage that has a `PAUSE`
490
+ # hook configured, the deployment pauses and waits for an explicit
491
+ # action. Use this API to either continue the deployment to the next
492
+ # stage or roll back to the previous service revision.
493
+ #
494
+ # To find the `hookId` of the paused hook, call
495
+ # [DescribeServiceDeployments][1] and inspect the `lifecycleHookDetails`
496
+ # field.
497
+ #
498
+ #
499
+ #
500
+ # [1]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeServiceDeployments.html
501
+ #
502
+ # @option params [required, String] :service_deployment_arn
503
+ # The ARN of the service deployment to continue or roll back.
504
+ #
505
+ # @option params [required, String] :hook_id
506
+ # The ID of the paused lifecycle hook to act on. You can find the
507
+ # `hookId` by calling [DescribeServiceDeployments][1] and inspecting the
508
+ # `lifecycleHookDetails` field of the service deployment.
509
+ #
510
+ #
511
+ #
512
+ # [1]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeServiceDeployments.html
513
+ #
514
+ # @option params [String] :action
515
+ # The action to take on the paused lifecycle hook. Valid values are:
516
+ #
517
+ # * `CONTINUE` - Proceeds the deployment to the next lifecycle stage.
518
+ #
519
+ # * `ROLLBACK` - Rolls back the deployment to the previous service
520
+ # revision.
521
+ #
522
+ # If no value is specified, the default action is `CONTINUE`.
523
+ #
524
+ # @return [Types::ContinueServiceDeploymentResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
525
+ #
526
+ # * {Types::ContinueServiceDeploymentResponse#service_deployment_arn #service_deployment_arn} => String
527
+ #
528
+ #
529
+ # @example Example: To continue a paused service deployment
530
+ #
531
+ # # This example continues a service deployment that is paused at a lifecycle hook, using the CONTINUE action to proceed to
532
+ # # the next deployment stage.
533
+ #
534
+ # resp = client.continue_service_deployment({
535
+ # action: "CONTINUE",
536
+ # hook_id: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
537
+ # service_deployment_arn: "arn:aws:ecs:us-east-1:123456789012:service-deployment/MyCluster/MyService/r9i43YFjvgF_xlg7m2eJ1r",
538
+ # })
539
+ #
540
+ # resp.to_h outputs the following:
541
+ # {
542
+ # service_deployment_arn: "arn:aws:ecs:us-east-1:123456789012:service-deployment/MyCluster/MyService/r9i43YFjvgF_xlg7m2eJ1r",
543
+ # }
544
+ #
545
+ # @example Example: To roll back a paused service deployment
546
+ #
547
+ # # This example rolls back a service deployment that is paused at a lifecycle hook, using the ROLLBACK action to revert to
548
+ # # the previous service revision.
549
+ #
550
+ # resp = client.continue_service_deployment({
551
+ # action: "ROLLBACK",
552
+ # hook_id: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
553
+ # service_deployment_arn: "arn:aws:ecs:us-east-1:123456789012:service-deployment/MyCluster/MyService/r9i43YFjvgF_xlg7m2eJ1r",
554
+ # })
555
+ #
556
+ # resp.to_h outputs the following:
557
+ # {
558
+ # service_deployment_arn: "arn:aws:ecs:us-east-1:123456789012:service-deployment/MyCluster/MyService/r9i43YFjvgF_xlg7m2eJ1r",
559
+ # }
560
+ #
561
+ # @example Request syntax with placeholder values
562
+ #
563
+ # resp = client.continue_service_deployment({
564
+ # service_deployment_arn: "String", # required
565
+ # hook_id: "String", # required
566
+ # action: "ROLLBACK", # accepts ROLLBACK, CONTINUE
567
+ # })
568
+ #
569
+ # @example Response structure
570
+ #
571
+ # resp.service_deployment_arn #=> String
572
+ #
573
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ContinueServiceDeployment AWS API Documentation
574
+ #
575
+ # @overload continue_service_deployment(params = {})
576
+ # @param [Hash] params ({})
577
+ def continue_service_deployment(params = {}, options = {})
578
+ req = build_request(:continue_service_deployment, params)
579
+ req.send_request(options)
580
+ end
581
+
486
582
  # Creates a capacity provider. Capacity providers are associated with a
487
583
  # cluster and are used in capacity provider strategies to facilitate
488
584
  # cluster auto scaling. You can create capacity providers for Amazon ECS
@@ -2178,6 +2274,81 @@ module Aws::ECS
2178
2274
  # },
2179
2275
  # }
2180
2276
  #
2277
+ # @example Example: To create a service with a pause lifecycle hook
2278
+ #
2279
+ # # This example creates a service with a blue/green deployment strategy that includes a pause lifecycle hook at the
2280
+ # # POST_PRODUCTION_TRAFFIC_SHIFT stage. The deployment will pause at that stage until you explicitly continue or roll back
2281
+ # # using the ContinueServiceDeployment API, or until the 60-minute timeout expires and triggers a rollback.
2282
+ #
2283
+ # resp = client.create_service({
2284
+ # deployment_configuration: {
2285
+ # lifecycle_hooks: [
2286
+ # {
2287
+ # lifecycle_stages: [
2288
+ # "POST_PRODUCTION_TRAFFIC_SHIFT",
2289
+ # ],
2290
+ # target_type: "PAUSE",
2291
+ # timeout_configuration: {
2292
+ # action: "ROLLBACK",
2293
+ # timeout_in_minutes: 60,
2294
+ # },
2295
+ # },
2296
+ # ],
2297
+ # strategy: "BLUE_GREEN",
2298
+ # },
2299
+ # desired_count: 2,
2300
+ # service_name: "ecs-service-with-pause-hook",
2301
+ # task_definition: "ecs-demo",
2302
+ # })
2303
+ #
2304
+ # resp.to_h outputs the following:
2305
+ # {
2306
+ # service: {
2307
+ # cluster_arn: "arn:aws:ecs:us-east-1:012345678910:cluster/default",
2308
+ # created_at: Time.parse("2026-05-06T16:00:00.000Z"),
2309
+ # deployment_configuration: {
2310
+ # lifecycle_hooks: [
2311
+ # {
2312
+ # lifecycle_stages: [
2313
+ # "POST_PRODUCTION_TRAFFIC_SHIFT",
2314
+ # ],
2315
+ # target_type: "PAUSE",
2316
+ # timeout_configuration: {
2317
+ # action: "ROLLBACK",
2318
+ # timeout_in_minutes: 60,
2319
+ # },
2320
+ # },
2321
+ # ],
2322
+ # maximum_percent: 200,
2323
+ # minimum_healthy_percent: 100,
2324
+ # strategy: "BLUE_GREEN",
2325
+ # },
2326
+ # deployments: [
2327
+ # {
2328
+ # created_at: Time.parse("2026-05-06T16:00:00.000Z"),
2329
+ # desired_count: 2,
2330
+ # id: "ecs-svc/9223370564342348388",
2331
+ # pending_count: 0,
2332
+ # running_count: 0,
2333
+ # status: "PRIMARY",
2334
+ # task_definition: "arn:aws:ecs:us-east-1:012345678910:task-definition/ecs-demo:1",
2335
+ # updated_at: Time.parse("2026-05-06T16:00:00.000Z"),
2336
+ # },
2337
+ # ],
2338
+ # desired_count: 2,
2339
+ # events: [
2340
+ # ],
2341
+ # load_balancers: [
2342
+ # ],
2343
+ # pending_count: 0,
2344
+ # running_count: 0,
2345
+ # service_arn: "arn:aws:ecs:us-east-1:012345678910:service/default/ecs-service-with-pause-hook",
2346
+ # service_name: "ecs-service-with-pause-hook",
2347
+ # status: "ACTIVE",
2348
+ # task_definition: "arn:aws:ecs:us-east-1:012345678910:task-definition/ecs-demo:1",
2349
+ # },
2350
+ # }
2351
+ #
2181
2352
  # @example Request syntax with placeholder values
2182
2353
  #
2183
2354
  # resp = client.create_service({
@@ -2235,11 +2406,16 @@ module Aws::ECS
2235
2406
  # bake_time_in_minutes: 1,
2236
2407
  # lifecycle_hooks: [
2237
2408
  # {
2409
+ # target_type: "AWS_LAMBDA", # accepts AWS_LAMBDA, PAUSE
2238
2410
  # hook_target_arn: "String",
2239
2411
  # role_arn: "IAMRoleArn",
2240
- # lifecycle_stages: ["RECONCILE_SERVICE"], # accepts RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, TEST_TRAFFIC_SHIFT, POST_TEST_TRAFFIC_SHIFT, PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT
2412
+ # lifecycle_stages: ["RECONCILE_SERVICE"], # accepts RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, TEST_TRAFFIC_SHIFT, POST_TEST_TRAFFIC_SHIFT, PRE_PRODUCTION_TRAFFIC_SHIFT, PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT
2241
2413
  # hook_details: {
2242
2414
  # },
2415
+ # timeout_configuration: {
2416
+ # timeout_in_minutes: 1,
2417
+ # action: "ROLLBACK", # accepts ROLLBACK, CONTINUE
2418
+ # },
2243
2419
  # },
2244
2420
  # ],
2245
2421
  # linear_configuration: {
@@ -2416,10 +2592,13 @@ module Aws::ECS
2416
2592
  # resp.service.deployment_configuration.strategy #=> String, one of "ROLLING", "BLUE_GREEN", "LINEAR", "CANARY"
2417
2593
  # resp.service.deployment_configuration.bake_time_in_minutes #=> Integer
2418
2594
  # resp.service.deployment_configuration.lifecycle_hooks #=> Array
2595
+ # resp.service.deployment_configuration.lifecycle_hooks[0].target_type #=> String, one of "AWS_LAMBDA", "PAUSE"
2419
2596
  # resp.service.deployment_configuration.lifecycle_hooks[0].hook_target_arn #=> String
2420
2597
  # resp.service.deployment_configuration.lifecycle_hooks[0].role_arn #=> String
2421
2598
  # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages #=> Array
2422
- # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
2599
+ # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRE_PRODUCTION_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
2600
+ # resp.service.deployment_configuration.lifecycle_hooks[0].timeout_configuration.timeout_in_minutes #=> Integer
2601
+ # resp.service.deployment_configuration.lifecycle_hooks[0].timeout_configuration.action #=> String, one of "ROLLBACK", "CONTINUE"
2423
2602
  # resp.service.deployment_configuration.linear_configuration.step_percent #=> Float
2424
2603
  # resp.service.deployment_configuration.linear_configuration.step_bake_time_in_minutes #=> Integer
2425
2604
  # resp.service.deployment_configuration.canary_configuration.canary_percent #=> Float
@@ -3651,10 +3830,13 @@ module Aws::ECS
3651
3830
  # resp.service.deployment_configuration.strategy #=> String, one of "ROLLING", "BLUE_GREEN", "LINEAR", "CANARY"
3652
3831
  # resp.service.deployment_configuration.bake_time_in_minutes #=> Integer
3653
3832
  # resp.service.deployment_configuration.lifecycle_hooks #=> Array
3833
+ # resp.service.deployment_configuration.lifecycle_hooks[0].target_type #=> String, one of "AWS_LAMBDA", "PAUSE"
3654
3834
  # resp.service.deployment_configuration.lifecycle_hooks[0].hook_target_arn #=> String
3655
3835
  # resp.service.deployment_configuration.lifecycle_hooks[0].role_arn #=> String
3656
3836
  # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages #=> Array
3657
- # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
3837
+ # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRE_PRODUCTION_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
3838
+ # resp.service.deployment_configuration.lifecycle_hooks[0].timeout_configuration.timeout_in_minutes #=> Integer
3839
+ # resp.service.deployment_configuration.lifecycle_hooks[0].timeout_configuration.action #=> String, one of "ROLLBACK", "CONTINUE"
3658
3840
  # resp.service.deployment_configuration.linear_configuration.step_percent #=> Float
3659
3841
  # resp.service.deployment_configuration.linear_configuration.step_bake_time_in_minutes #=> Integer
3660
3842
  # resp.service.deployment_configuration.canary_configuration.canary_percent #=> Float
@@ -5872,6 +6054,70 @@ module Aws::ECS
5872
6054
  # ],
5873
6055
  # }
5874
6056
  #
6057
+ # @example Example: To describe a service deployment with a paused lifecycle hook
6058
+ #
6059
+ # # This example describes a service deployment that is currently paused at a lifecycle hook. The lifecycleHookDetails field
6060
+ # # shows the status of the pause hook, including when it will expire and what action will be taken if the timeout is
6061
+ # # reached.
6062
+ #
6063
+ # resp = client.describe_service_deployments({
6064
+ # service_deployment_arns: [
6065
+ # "arn:aws:ecs:us-east-1:123456789012:service-deployment/MyCluster/MyService/r9i43YFjvgF_xlg7m2eJ1r",
6066
+ # ],
6067
+ # })
6068
+ #
6069
+ # resp.to_h outputs the following:
6070
+ # {
6071
+ # failures: [
6072
+ # ],
6073
+ # service_deployments: [
6074
+ # {
6075
+ # cluster_arn: "arn:aws:ecs:us-east-1:123456789012:cluster/MyCluster",
6076
+ # deployment_configuration: {
6077
+ # deployment_circuit_breaker: {
6078
+ # enable: false,
6079
+ # rollback: false,
6080
+ # },
6081
+ # lifecycle_hooks: [
6082
+ # {
6083
+ # lifecycle_stages: [
6084
+ # "POST_PRODUCTION_TRAFFIC_SHIFT",
6085
+ # ],
6086
+ # target_type: "PAUSE",
6087
+ # timeout_configuration: {
6088
+ # action: "ROLLBACK",
6089
+ # timeout_in_minutes: 60,
6090
+ # },
6091
+ # },
6092
+ # ],
6093
+ # maximum_percent: 200,
6094
+ # minimum_healthy_percent: 100,
6095
+ # strategy: "BLUE_GREEN",
6096
+ # },
6097
+ # lifecycle_hook_details: [
6098
+ # {
6099
+ # expires_at: Time.parse("2026-05-06T17:00:00.000Z"),
6100
+ # hook_id: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
6101
+ # status: "AWAITING_ACTION",
6102
+ # target_type: "PAUSE",
6103
+ # timeout_action: "ROLLBACK",
6104
+ # },
6105
+ # ],
6106
+ # lifecycle_stage: "POST_PRODUCTION_TRAFFIC_SHIFT",
6107
+ # service_arn: "arn:aws:ecs:us-east-1:123456789012:service/MyCluster/MyService",
6108
+ # service_deployment_arn: "arn:aws:ecs:us-east-1:123456789012:service-deployment/MyCluster/MyService/r9i43YFjvgF_xlg7m2eJ1r",
6109
+ # status: "IN_PROGRESS",
6110
+ # target_service_revision: {
6111
+ # arn: "arn:aws:ecs:us-east-1:123456789012:service-revision/MyCluster/MyService/1234567890123456789",
6112
+ # pending_task_count: 1,
6113
+ # requested_task_count: 2,
6114
+ # running_task_count: 1,
6115
+ # },
6116
+ # updated_at: Time.parse("2026-05-06T16:00:00.000Z"),
6117
+ # },
6118
+ # ],
6119
+ # }
6120
+ #
5875
6121
  # @example Request syntax with placeholder values
5876
6122
  #
5877
6123
  # resp = client.describe_service_deployments({
@@ -5905,6 +6151,13 @@ module Aws::ECS
5905
6151
  # resp.service_deployments[0].status #=> String, one of "PENDING", "SUCCESSFUL", "STOPPED", "STOP_REQUESTED", "IN_PROGRESS", "ROLLBACK_REQUESTED", "ROLLBACK_IN_PROGRESS", "ROLLBACK_SUCCESSFUL", "ROLLBACK_FAILED"
5906
6152
  # resp.service_deployments[0].status_reason #=> String
5907
6153
  # resp.service_deployments[0].lifecycle_stage #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT", "BAKE_TIME", "CLEAN_UP"
6154
+ # resp.service_deployments[0].lifecycle_hook_details #=> Array
6155
+ # resp.service_deployments[0].lifecycle_hook_details[0].hook_id #=> String
6156
+ # resp.service_deployments[0].lifecycle_hook_details[0].target_type #=> String, one of "AWS_LAMBDA", "PAUSE"
6157
+ # resp.service_deployments[0].lifecycle_hook_details[0].target_arn #=> String
6158
+ # resp.service_deployments[0].lifecycle_hook_details[0].status #=> String, one of "AWAITING_ACTION", "IN_PROGRESS", "SUCCEEDED", "FAILED", "TIMED_OUT"
6159
+ # resp.service_deployments[0].lifecycle_hook_details[0].expires_at #=> Time
6160
+ # resp.service_deployments[0].lifecycle_hook_details[0].timeout_action #=> String, one of "ROLLBACK", "CONTINUE"
5908
6161
  # resp.service_deployments[0].deployment_configuration.deployment_circuit_breaker.enable #=> Boolean
5909
6162
  # resp.service_deployments[0].deployment_configuration.deployment_circuit_breaker.rollback #=> Boolean
5910
6163
  # resp.service_deployments[0].deployment_configuration.maximum_percent #=> Integer
@@ -5916,10 +6169,13 @@ module Aws::ECS
5916
6169
  # resp.service_deployments[0].deployment_configuration.strategy #=> String, one of "ROLLING", "BLUE_GREEN", "LINEAR", "CANARY"
5917
6170
  # resp.service_deployments[0].deployment_configuration.bake_time_in_minutes #=> Integer
5918
6171
  # resp.service_deployments[0].deployment_configuration.lifecycle_hooks #=> Array
6172
+ # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].target_type #=> String, one of "AWS_LAMBDA", "PAUSE"
5919
6173
  # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].hook_target_arn #=> String
5920
6174
  # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].role_arn #=> String
5921
6175
  # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].lifecycle_stages #=> Array
5922
- # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
6176
+ # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRE_PRODUCTION_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
6177
+ # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].timeout_configuration.timeout_in_minutes #=> Integer
6178
+ # resp.service_deployments[0].deployment_configuration.lifecycle_hooks[0].timeout_configuration.action #=> String, one of "ROLLBACK", "CONTINUE"
5923
6179
  # resp.service_deployments[0].deployment_configuration.linear_configuration.step_percent #=> Float
5924
6180
  # resp.service_deployments[0].deployment_configuration.linear_configuration.step_bake_time_in_minutes #=> Integer
5925
6181
  # resp.service_deployments[0].deployment_configuration.canary_configuration.canary_percent #=> Float
@@ -6275,6 +6531,69 @@ module Aws::ECS
6275
6531
  # ],
6276
6532
  # }
6277
6533
  #
6534
+ # @example Example: To describe a service with a pause lifecycle hook
6535
+ #
6536
+ # # This example provides descriptive information about the service ``ecs-service-with-pause-hook``, which is configured
6537
+ # # with a pause lifecycle hook in its deployment configuration.
6538
+ #
6539
+ # resp = client.describe_services({
6540
+ # services: [
6541
+ # "ecs-service-with-pause-hook",
6542
+ # ],
6543
+ # })
6544
+ #
6545
+ # resp.to_h outputs the following:
6546
+ # {
6547
+ # failures: [
6548
+ # ],
6549
+ # services: [
6550
+ # {
6551
+ # cluster_arn: "arn:aws:ecs:us-east-1:012345678910:cluster/default",
6552
+ # created_at: Time.parse("2026-05-06T16:00:00.000Z"),
6553
+ # deployment_configuration: {
6554
+ # lifecycle_hooks: [
6555
+ # {
6556
+ # lifecycle_stages: [
6557
+ # "POST_PRODUCTION_TRAFFIC_SHIFT",
6558
+ # ],
6559
+ # target_type: "PAUSE",
6560
+ # timeout_configuration: {
6561
+ # action: "ROLLBACK",
6562
+ # timeout_in_minutes: 60,
6563
+ # },
6564
+ # },
6565
+ # ],
6566
+ # maximum_percent: 200,
6567
+ # minimum_healthy_percent: 100,
6568
+ # strategy: "BLUE_GREEN",
6569
+ # },
6570
+ # deployments: [
6571
+ # {
6572
+ # created_at: Time.parse("2026-05-06T16:00:00.000Z"),
6573
+ # desired_count: 2,
6574
+ # id: "ecs-svc/9223370564341623665",
6575
+ # pending_count: 0,
6576
+ # running_count: 2,
6577
+ # status: "PRIMARY",
6578
+ # task_definition: "arn:aws:ecs:us-east-1:012345678910:task-definition/ecs-demo:1",
6579
+ # updated_at: Time.parse("2026-05-06T16:00:00.000Z"),
6580
+ # },
6581
+ # ],
6582
+ # desired_count: 2,
6583
+ # events: [
6584
+ # ],
6585
+ # load_balancers: [
6586
+ # ],
6587
+ # pending_count: 0,
6588
+ # running_count: 2,
6589
+ # service_arn: "arn:aws:ecs:us-east-1:012345678910:service/default/ecs-service-with-pause-hook",
6590
+ # service_name: "ecs-service-with-pause-hook",
6591
+ # status: "ACTIVE",
6592
+ # task_definition: "arn:aws:ecs:us-east-1:012345678910:task-definition/ecs-demo:1",
6593
+ # },
6594
+ # ],
6595
+ # }
6596
+ #
6278
6597
  # @example Request syntax with placeholder values
6279
6598
  #
6280
6599
  # resp = client.describe_services({
@@ -6326,10 +6645,13 @@ module Aws::ECS
6326
6645
  # resp.services[0].deployment_configuration.strategy #=> String, one of "ROLLING", "BLUE_GREEN", "LINEAR", "CANARY"
6327
6646
  # resp.services[0].deployment_configuration.bake_time_in_minutes #=> Integer
6328
6647
  # resp.services[0].deployment_configuration.lifecycle_hooks #=> Array
6648
+ # resp.services[0].deployment_configuration.lifecycle_hooks[0].target_type #=> String, one of "AWS_LAMBDA", "PAUSE"
6329
6649
  # resp.services[0].deployment_configuration.lifecycle_hooks[0].hook_target_arn #=> String
6330
6650
  # resp.services[0].deployment_configuration.lifecycle_hooks[0].role_arn #=> String
6331
6651
  # resp.services[0].deployment_configuration.lifecycle_hooks[0].lifecycle_stages #=> Array
6332
- # resp.services[0].deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
6652
+ # resp.services[0].deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRE_PRODUCTION_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
6653
+ # resp.services[0].deployment_configuration.lifecycle_hooks[0].timeout_configuration.timeout_in_minutes #=> Integer
6654
+ # resp.services[0].deployment_configuration.lifecycle_hooks[0].timeout_configuration.action #=> String, one of "ROLLBACK", "CONTINUE"
6333
6655
  # resp.services[0].deployment_configuration.linear_configuration.step_percent #=> Float
6334
6656
  # resp.services[0].deployment_configuration.linear_configuration.step_bake_time_in_minutes #=> Integer
6335
6657
  # resp.services[0].deployment_configuration.canary_configuration.canary_percent #=> Float
@@ -14757,6 +15079,35 @@ module Aws::ECS
14757
15079
  # {
14758
15080
  # }
14759
15081
  #
15082
+ # @example Example: To update a service to add a pause lifecycle hook
15083
+ #
15084
+ # # This example updates the my-blue-green-service service to add a pause lifecycle hook at the
15085
+ # # POST_PRODUCTION_TRAFFIC_SHIFT stage. The deployment will pause at that stage until you explicitly continue or roll back
15086
+ # # using the ContinueServiceDeployment API, or until the 30-minute timeout expires and triggers a continue.
15087
+ #
15088
+ # resp = client.update_service({
15089
+ # deployment_configuration: {
15090
+ # lifecycle_hooks: [
15091
+ # {
15092
+ # lifecycle_stages: [
15093
+ # "POST_PRODUCTION_TRAFFIC_SHIFT",
15094
+ # ],
15095
+ # target_type: "PAUSE",
15096
+ # timeout_configuration: {
15097
+ # action: "CONTINUE",
15098
+ # timeout_in_minutes: 30,
15099
+ # },
15100
+ # },
15101
+ # ],
15102
+ # strategy: "BLUE_GREEN",
15103
+ # },
15104
+ # service: "my-blue-green-service",
15105
+ # })
15106
+ #
15107
+ # resp.to_h outputs the following:
15108
+ # {
15109
+ # }
15110
+ #
14760
15111
  # @example Request syntax with placeholder values
14761
15112
  #
14762
15113
  # resp = client.update_service({
@@ -14787,11 +15138,16 @@ module Aws::ECS
14787
15138
  # bake_time_in_minutes: 1,
14788
15139
  # lifecycle_hooks: [
14789
15140
  # {
15141
+ # target_type: "AWS_LAMBDA", # accepts AWS_LAMBDA, PAUSE
14790
15142
  # hook_target_arn: "String",
14791
15143
  # role_arn: "IAMRoleArn",
14792
- # lifecycle_stages: ["RECONCILE_SERVICE"], # accepts RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, TEST_TRAFFIC_SHIFT, POST_TEST_TRAFFIC_SHIFT, PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT
15144
+ # lifecycle_stages: ["RECONCILE_SERVICE"], # accepts RECONCILE_SERVICE, PRE_SCALE_UP, POST_SCALE_UP, TEST_TRAFFIC_SHIFT, POST_TEST_TRAFFIC_SHIFT, PRE_PRODUCTION_TRAFFIC_SHIFT, PRODUCTION_TRAFFIC_SHIFT, POST_PRODUCTION_TRAFFIC_SHIFT
14793
15145
  # hook_details: {
14794
15146
  # },
15147
+ # timeout_configuration: {
15148
+ # timeout_in_minutes: 1,
15149
+ # action: "ROLLBACK", # accepts ROLLBACK, CONTINUE
15150
+ # },
14795
15151
  # },
14796
15152
  # ],
14797
15153
  # linear_configuration: {
@@ -14986,10 +15342,13 @@ module Aws::ECS
14986
15342
  # resp.service.deployment_configuration.strategy #=> String, one of "ROLLING", "BLUE_GREEN", "LINEAR", "CANARY"
14987
15343
  # resp.service.deployment_configuration.bake_time_in_minutes #=> Integer
14988
15344
  # resp.service.deployment_configuration.lifecycle_hooks #=> Array
15345
+ # resp.service.deployment_configuration.lifecycle_hooks[0].target_type #=> String, one of "AWS_LAMBDA", "PAUSE"
14989
15346
  # resp.service.deployment_configuration.lifecycle_hooks[0].hook_target_arn #=> String
14990
15347
  # resp.service.deployment_configuration.lifecycle_hooks[0].role_arn #=> String
14991
15348
  # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages #=> Array
14992
- # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
15349
+ # resp.service.deployment_configuration.lifecycle_hooks[0].lifecycle_stages[0] #=> String, one of "RECONCILE_SERVICE", "PRE_SCALE_UP", "POST_SCALE_UP", "TEST_TRAFFIC_SHIFT", "POST_TEST_TRAFFIC_SHIFT", "PRE_PRODUCTION_TRAFFIC_SHIFT", "PRODUCTION_TRAFFIC_SHIFT", "POST_PRODUCTION_TRAFFIC_SHIFT"
15350
+ # resp.service.deployment_configuration.lifecycle_hooks[0].timeout_configuration.timeout_in_minutes #=> Integer
15351
+ # resp.service.deployment_configuration.lifecycle_hooks[0].timeout_configuration.action #=> String, one of "ROLLBACK", "CONTINUE"
14993
15352
  # resp.service.deployment_configuration.linear_configuration.step_percent #=> Float
14994
15353
  # resp.service.deployment_configuration.linear_configuration.step_bake_time_in_minutes #=> Integer
14995
15354
  # resp.service.deployment_configuration.canary_configuration.canary_percent #=> Float
@@ -15645,7 +16004,7 @@ module Aws::ECS
15645
16004
  tracer: tracer
15646
16005
  )
15647
16006
  context[:gem_name] = 'aws-sdk-ecs'
15648
- context[:gem_version] = '1.230.0'
16007
+ context[:gem_version] = '1.232.0'
15649
16008
  Seahorse::Client::Request.new(handlers, context)
15650
16009
  end
15651
16010
 
@@ -108,6 +108,8 @@ module Aws::ECS
108
108
  ContainerStateChange = Shapes::StructureShape.new(name: 'ContainerStateChange')
109
109
  ContainerStateChanges = Shapes::ListShape.new(name: 'ContainerStateChanges')
110
110
  Containers = Shapes::ListShape.new(name: 'Containers')
111
+ ContinueServiceDeploymentRequest = Shapes::StructureShape.new(name: 'ContinueServiceDeploymentRequest')
112
+ ContinueServiceDeploymentResponse = Shapes::StructureShape.new(name: 'ContinueServiceDeploymentResponse')
111
113
  CpuManufacturer = Shapes::StringShape.new(name: 'CpuManufacturer')
112
114
  CpuManufacturerSet = Shapes::ListShape.new(name: 'CpuManufacturerSet')
113
115
  CreateCapacityProviderRequest = Shapes::StructureShape.new(name: 'CreateCapacityProviderRequest')
@@ -195,9 +197,16 @@ module Aws::ECS
195
197
  DeploymentControllerType = Shapes::StringShape.new(name: 'DeploymentControllerType')
196
198
  DeploymentEphemeralStorage = Shapes::StructureShape.new(name: 'DeploymentEphemeralStorage')
197
199
  DeploymentLifecycleHook = Shapes::StructureShape.new(name: 'DeploymentLifecycleHook')
200
+ DeploymentLifecycleHookAction = Shapes::StringShape.new(name: 'DeploymentLifecycleHookAction')
201
+ DeploymentLifecycleHookDetail = Shapes::StructureShape.new(name: 'DeploymentLifecycleHookDetail')
202
+ DeploymentLifecycleHookDetailList = Shapes::ListShape.new(name: 'DeploymentLifecycleHookDetailList')
203
+ DeploymentLifecycleHookDuration = Shapes::IntegerShape.new(name: 'DeploymentLifecycleHookDuration')
198
204
  DeploymentLifecycleHookList = Shapes::ListShape.new(name: 'DeploymentLifecycleHookList')
199
205
  DeploymentLifecycleHookStage = Shapes::StringShape.new(name: 'DeploymentLifecycleHookStage')
200
206
  DeploymentLifecycleHookStageList = Shapes::ListShape.new(name: 'DeploymentLifecycleHookStageList')
207
+ DeploymentLifecycleHookStatus = Shapes::StringShape.new(name: 'DeploymentLifecycleHookStatus')
208
+ DeploymentLifecycleHookTargetType = Shapes::StringShape.new(name: 'DeploymentLifecycleHookTargetType')
209
+ DeploymentLifecycleHookTimeoutConfiguration = Shapes::StructureShape.new(name: 'DeploymentLifecycleHookTimeoutConfiguration')
201
210
  DeploymentRolloutState = Shapes::StringShape.new(name: 'DeploymentRolloutState')
202
211
  DeploymentStrategy = Shapes::StringShape.new(name: 'DeploymentStrategy')
203
212
  Deployments = Shapes::ListShape.new(name: 'Deployments')
@@ -939,6 +948,14 @@ module Aws::ECS
939
948
 
940
949
  Containers.member = Shapes::ShapeRef.new(shape: Container)
941
950
 
951
+ ContinueServiceDeploymentRequest.add_member(:service_deployment_arn, Shapes::ShapeRef.new(shape: String, required: true, location_name: "serviceDeploymentArn"))
952
+ ContinueServiceDeploymentRequest.add_member(:hook_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "hookId"))
953
+ ContinueServiceDeploymentRequest.add_member(:action, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookAction, location_name: "action"))
954
+ ContinueServiceDeploymentRequest.struct_class = Types::ContinueServiceDeploymentRequest
955
+
956
+ ContinueServiceDeploymentResponse.add_member(:service_deployment_arn, Shapes::ShapeRef.new(shape: String, location_name: "serviceDeploymentArn"))
957
+ ContinueServiceDeploymentResponse.struct_class = Types::ContinueServiceDeploymentResponse
958
+
942
959
  CpuManufacturerSet.member = Shapes::ShapeRef.new(shape: CpuManufacturer)
943
960
 
944
961
  CreateCapacityProviderRequest.add_member(:name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "name"))
@@ -1379,16 +1396,32 @@ module Aws::ECS
1379
1396
  DeploymentEphemeralStorage.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: String, location_name: "kmsKeyId"))
1380
1397
  DeploymentEphemeralStorage.struct_class = Types::DeploymentEphemeralStorage
1381
1398
 
1399
+ DeploymentLifecycleHook.add_member(:target_type, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookTargetType, location_name: "targetType"))
1382
1400
  DeploymentLifecycleHook.add_member(:hook_target_arn, Shapes::ShapeRef.new(shape: String, location_name: "hookTargetArn"))
1383
1401
  DeploymentLifecycleHook.add_member(:role_arn, Shapes::ShapeRef.new(shape: IAMRoleArn, location_name: "roleArn"))
1384
1402
  DeploymentLifecycleHook.add_member(:lifecycle_stages, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookStageList, location_name: "lifecycleStages"))
1385
1403
  DeploymentLifecycleHook.add_member(:hook_details, Shapes::ShapeRef.new(shape: HookDetails, location_name: "hookDetails"))
1404
+ DeploymentLifecycleHook.add_member(:timeout_configuration, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookTimeoutConfiguration, location_name: "timeoutConfiguration"))
1386
1405
  DeploymentLifecycleHook.struct_class = Types::DeploymentLifecycleHook
1387
1406
 
1407
+ DeploymentLifecycleHookDetail.add_member(:hook_id, Shapes::ShapeRef.new(shape: String, location_name: "hookId"))
1408
+ DeploymentLifecycleHookDetail.add_member(:target_type, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookTargetType, location_name: "targetType"))
1409
+ DeploymentLifecycleHookDetail.add_member(:target_arn, Shapes::ShapeRef.new(shape: String, location_name: "targetArn"))
1410
+ DeploymentLifecycleHookDetail.add_member(:status, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookStatus, location_name: "status"))
1411
+ DeploymentLifecycleHookDetail.add_member(:expires_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "expiresAt"))
1412
+ DeploymentLifecycleHookDetail.add_member(:timeout_action, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookAction, location_name: "timeoutAction"))
1413
+ DeploymentLifecycleHookDetail.struct_class = Types::DeploymentLifecycleHookDetail
1414
+
1415
+ DeploymentLifecycleHookDetailList.member = Shapes::ShapeRef.new(shape: DeploymentLifecycleHookDetail)
1416
+
1388
1417
  DeploymentLifecycleHookList.member = Shapes::ShapeRef.new(shape: DeploymentLifecycleHook)
1389
1418
 
1390
1419
  DeploymentLifecycleHookStageList.member = Shapes::ShapeRef.new(shape: DeploymentLifecycleHookStage)
1391
1420
 
1421
+ DeploymentLifecycleHookTimeoutConfiguration.add_member(:timeout_in_minutes, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookDuration, location_name: "timeoutInMinutes"))
1422
+ DeploymentLifecycleHookTimeoutConfiguration.add_member(:action, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookAction, location_name: "action"))
1423
+ DeploymentLifecycleHookTimeoutConfiguration.struct_class = Types::DeploymentLifecycleHookTimeoutConfiguration
1424
+
1392
1425
  Deployments.member = Shapes::ShapeRef.new(shape: Deployment)
1393
1426
 
1394
1427
  DeregisterContainerInstanceRequest.add_member(:cluster, Shapes::ShapeRef.new(shape: String, location_name: "cluster"))
@@ -2518,6 +2551,7 @@ module Aws::ECS
2518
2551
  ServiceDeployment.add_member(:status, Shapes::ShapeRef.new(shape: ServiceDeploymentStatus, location_name: "status"))
2519
2552
  ServiceDeployment.add_member(:status_reason, Shapes::ShapeRef.new(shape: String, location_name: "statusReason"))
2520
2553
  ServiceDeployment.add_member(:lifecycle_stage, Shapes::ShapeRef.new(shape: ServiceDeploymentLifecycleStage, location_name: "lifecycleStage"))
2554
+ ServiceDeployment.add_member(:lifecycle_hook_details, Shapes::ShapeRef.new(shape: DeploymentLifecycleHookDetailList, location_name: "lifecycleHookDetails"))
2521
2555
  ServiceDeployment.add_member(:deployment_configuration, Shapes::ShapeRef.new(shape: DeploymentConfiguration, location_name: "deploymentConfiguration"))
2522
2556
  ServiceDeployment.add_member(:rollback, Shapes::ShapeRef.new(shape: Rollback, location_name: "rollback"))
2523
2557
  ServiceDeployment.add_member(:deployment_circuit_breaker, Shapes::ShapeRef.new(shape: ServiceDeploymentCircuitBreaker, location_name: "deploymentCircuitBreaker"))
@@ -3134,6 +3168,20 @@ module Aws::ECS
3134
3168
  "uid" => "ecs-2014-11-13",
3135
3169
  }
3136
3170
 
3171
+ api.add_operation(:continue_service_deployment, Seahorse::Model::Operation.new.tap do |o|
3172
+ o.name = "ContinueServiceDeployment"
3173
+ o.http_method = "POST"
3174
+ o.http_request_uri = "/"
3175
+ o.input = Shapes::ShapeRef.new(shape: ContinueServiceDeploymentRequest)
3176
+ o.output = Shapes::ShapeRef.new(shape: ContinueServiceDeploymentResponse)
3177
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
3178
+ o.errors << Shapes::ShapeRef.new(shape: ServerException)
3179
+ o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
3180
+ o.errors << Shapes::ShapeRef.new(shape: ClientException)
3181
+ o.errors << Shapes::ShapeRef.new(shape: ServiceDeploymentNotFoundException)
3182
+ o.errors << Shapes::ShapeRef.new(shape: UnsupportedFeatureException)
3183
+ end)
3184
+
3137
3185
  api.add_operation(:create_capacity_provider, Seahorse::Model::Operation.new.tap do |o|
3138
3186
  o.name = "CreateCapacityProvider"
3139
3187
  o.http_method = "POST"