updateDeploymentStrategy method
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);
}