updateDeploymentStrategy method

Future<DeploymentStrategy> updateDeploymentStrategy({
  1. required String deploymentStrategyId,
  2. int? deploymentDurationInMinutes,
  3. String? description,
  4. int? finalBakeTimeInMinutes,
  5. double? growthFactor,
  6. GrowthType? growthType,
})

Updates a deployment strategy.

May throw BadRequestException. May throw ResourceNotFoundException. May throw InternalServerException.

Parameter deploymentStrategyId : The deployment strategy ID.

Parameter deploymentDurationInMinutes : Total amount of time for a deployment to last.

Parameter description : A description of the deployment strategy.

Parameter finalBakeTimeInMinutes : The amount of time AppConfig monitors for alarms before considering the deployment to be complete and no longer eligible for automatic roll back.

Parameter growthFactor : The percentage of targets to receive a deployed configuration during each interval.

Parameter growthType : The algorithm used to define how percentage grows over time. AWS AppConfig supports the following growth types:

Linear: For this type, AppConfig processes the deployment by increments of the growth factor evenly distributed over the deployment time. For example, a linear deployment that uses a growth factor of 20 initially makes the configuration available to 20 percent of the targets. After 1/5th of the deployment time has passed, the system updates the percentage to 40 percent. This continues until 100% of the targets are set to receive the deployed configuration.

Exponential: For this type, AppConfig processes the deployment exponentially using the following formula: G*(2^N). In this formula, G is the growth factor specified by the user and N is the number of steps until the configuration is deployed to all targets. For example, if you specify a growth factor of 2, then the system rolls out the configuration as follows:

2*(2^0)

2*(2^1)

2*(2^2)

Expressed numerically, the deployment rolls out as follows: 2% of the targets, 4% of the targets, 8% of the targets, and continues until the configuration has been deployed to all targets.

Implementation

Future<DeploymentStrategy> updateDeploymentStrategy({
  required String deploymentStrategyId,
  int? deploymentDurationInMinutes,
  String? description,
  int? finalBakeTimeInMinutes,
  double? growthFactor,
  GrowthType? growthType,
}) async {
  ArgumentError.checkNotNull(deploymentStrategyId, 'deploymentStrategyId');
  _s.validateNumRange(
    'deploymentDurationInMinutes',
    deploymentDurationInMinutes,
    0,
    1440,
  );
  _s.validateStringLength(
    'description',
    description,
    0,
    1024,
  );
  _s.validateNumRange(
    'finalBakeTimeInMinutes',
    finalBakeTimeInMinutes,
    0,
    1440,
  );
  _s.validateNumRange(
    'growthFactor',
    growthFactor,
    1,
    100,
  );
  final $payload = <String, dynamic>{
    if (deploymentDurationInMinutes != null)
      'DeploymentDurationInMinutes': deploymentDurationInMinutes,
    if (description != null) 'Description': description,
    if (finalBakeTimeInMinutes != null)
      'FinalBakeTimeInMinutes': finalBakeTimeInMinutes,
    if (growthFactor != null) 'GrowthFactor': growthFactor,
    if (growthType != null) 'GrowthType': growthType.toValue(),
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'PATCH',
    requestUri:
        '/deploymentstrategies/${Uri.encodeComponent(deploymentStrategyId)}',
    exceptionFnMap: _exceptionFns,
  );
  return DeploymentStrategy.fromJson(response);
}