156 lines
5.9 KiB
TypeScript
156 lines
5.9 KiB
TypeScript
import type { Construct } from 'constructs';
|
|
import type { MinimumHealthyHosts, MinimumHealthyHostsPerZone } from './host-health-config';
|
|
import type { TrafficRouting } from './traffic-routing-config';
|
|
import type { Duration } from '../../core';
|
|
import { Resource } from '../../core';
|
|
import type { DeploymentConfigReference, IDeploymentConfigRef, IDeploymentGroupRef } from '../../interfaces/generated/aws-codedeploy-interfaces.generated';
|
|
/**
|
|
* The base class for ServerDeploymentConfig, EcsDeploymentConfig,
|
|
* and LambdaDeploymentConfig deployment configurations.
|
|
*/
|
|
export interface IBaseDeploymentConfig extends IDeploymentConfigRef {
|
|
/**
|
|
* The physical, human-readable name of the Deployment Configuration.
|
|
* @attribute
|
|
*/
|
|
readonly deploymentConfigName: string;
|
|
/**
|
|
* The ARN of the Deployment Configuration.
|
|
* @attribute
|
|
*/
|
|
readonly deploymentConfigArn: string;
|
|
}
|
|
/**
|
|
* Construction properties of `BaseDeploymentConfig`.
|
|
*/
|
|
export interface BaseDeploymentConfigOptions {
|
|
/**
|
|
* The physical, human-readable name of the Deployment Configuration.
|
|
* @default - automatically generated name
|
|
*/
|
|
readonly deploymentConfigName?: string;
|
|
}
|
|
/**
|
|
* The compute platform of a deployment configuration
|
|
*/
|
|
export declare enum ComputePlatform {
|
|
/**
|
|
* The deployment will target EC2 instances or on-premise servers
|
|
*/
|
|
SERVER = "Server",
|
|
/**
|
|
* The deployment will target a Lambda function
|
|
*/
|
|
LAMBDA = "Lambda",
|
|
/**
|
|
* The deployment will target an ECS server
|
|
*/
|
|
ECS = "ECS"
|
|
}
|
|
/**
|
|
* Configuration for CodeDeploy to deploy your application to one Availability Zone at a time within an AWS Region.
|
|
*/
|
|
export interface ZonalConfig {
|
|
/**
|
|
* The period of time that CodeDeploy must wait after completing a deployment to an Availability Zone.
|
|
*
|
|
* Accepted Values:
|
|
* * 0
|
|
* * Greater than or equal to 1
|
|
*
|
|
* @default - CodeDeploy starts deploying to the next Availability Zone immediately
|
|
*/
|
|
readonly monitorDuration?: Duration;
|
|
/**
|
|
* The period of time that CodeDeploy must wait after completing a deployment to the first Availability Zone.
|
|
*
|
|
* Accepted Values:
|
|
* * 0
|
|
* * Greater than or equal to 1
|
|
*
|
|
* @default - the same value as `monitorDuration`
|
|
*/
|
|
readonly firstZoneMonitorDuration?: Duration;
|
|
/**
|
|
* The number or percentage of instances that must remain available per Availability Zone during a deployment.
|
|
* This option works in conjunction with the `minimumHealthyHosts` option.
|
|
*
|
|
* @see https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-health.html#minimum-healthy-hosts-az
|
|
*
|
|
* @default - 0 percent
|
|
*/
|
|
readonly minimumHealthyHostsPerZone?: MinimumHealthyHostsPerZone;
|
|
}
|
|
/**
|
|
* Complete base deployment config properties that are required to be supplied by the implementation
|
|
* of the BaseDeploymentConfig class.
|
|
*/
|
|
export interface BaseDeploymentConfigProps extends BaseDeploymentConfigOptions {
|
|
/**
|
|
* The destination compute platform for the deployment.
|
|
*
|
|
* @default ComputePlatform.Server
|
|
*/
|
|
readonly computePlatform?: ComputePlatform;
|
|
/**
|
|
* The configuration that specifies how traffic is shifted during a deployment.
|
|
* Only applicable to ECS and Lambda deployments, and must not be specified for Server deployments.
|
|
* @default None
|
|
*/
|
|
readonly trafficRouting?: TrafficRouting;
|
|
/**
|
|
* Minimum number of healthy hosts.
|
|
* @default None
|
|
*/
|
|
readonly minimumHealthyHosts?: MinimumHealthyHosts;
|
|
/**
|
|
* Configure CodeDeploy to deploy your application to one Availability Zone at a time within an AWS Region.
|
|
*
|
|
* @see https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations-create.html#zonal-config
|
|
*
|
|
* @default - deploy your application to a random selection of hosts across a Region
|
|
*/
|
|
readonly zonalConfig?: ZonalConfig;
|
|
}
|
|
/**
|
|
* The base class for ServerDeploymentConfig, EcsDeploymentConfig,
|
|
* and LambdaDeploymentConfig deployment configurations.
|
|
*
|
|
* @resource AWS::CodeDeploy::DeploymentConfig
|
|
*/
|
|
export declare abstract class BaseDeploymentConfig extends Resource implements IBaseDeploymentConfig {
|
|
/**
|
|
* Import a custom Deployment Configuration for a Deployment Group defined outside the CDK.
|
|
*
|
|
* @param scope the parent Construct for this new Construct
|
|
* @param id the logical ID of this new Construct
|
|
* @param deploymentConfigName the name of the referenced custom Deployment Configuration
|
|
* @returns a Construct representing a reference to an existing custom Deployment Configuration
|
|
*/
|
|
protected static fromDeploymentConfigName(scope: Construct, id: string, deploymentConfigName: string): IBaseDeploymentConfig;
|
|
private readonly resource;
|
|
get deploymentConfigName(): string;
|
|
get deploymentConfigArn(): string;
|
|
get deploymentConfigRef(): DeploymentConfigReference;
|
|
constructor(scope: Construct, id: string, props?: BaseDeploymentConfigProps);
|
|
private validateMinimumDuration;
|
|
}
|
|
/**
|
|
* A DeploymentConfig that can specialize itself based on the target group it will be used for
|
|
*
|
|
* For example, this is used for AWS-managed deployment configs: these are already
|
|
* present in every region, but we need a region-specific ARN to reference them.
|
|
* Since we might use them in conjunction with cross-region DeploymentGroups, we
|
|
* need to specialize the account and region to the DeploymentGroup before
|
|
* using.
|
|
*
|
|
* A DeploymentGroup must call `bindEnvironment()` first if it detects this type,
|
|
* before reading the DeploymentConfig ARN.
|
|
*/
|
|
export interface IBindableDeploymentConfig extends IDeploymentConfigRef {
|
|
/**
|
|
* Bind the predefined deployment config to the environment of the given resource
|
|
*/
|
|
bindEnvironment(deploymentGroup: IDeploymentGroupRef): IDeploymentConfigRef;
|
|
}
|