import { Construct } from 'constructs'; import * as codepipeline from '../../../aws-codepipeline'; import * as elbv2 from '../../../aws-elasticloadbalancingv2'; import { Action } from '../action'; /** * Construction properties of `Ec2DeployAction`. */ export interface Ec2DeployActionProps extends codepipeline.CommonAwsActionProps { /** * The input artifact to deploy to EC2 instances. */ readonly input: codepipeline.Artifact; /** * The tag key of the instances that you created in Amazon EC2. */ readonly instanceTagKey: string; /** * The tag value of the instances that you created in Amazon EC2. * @default - all instances with `instanceTagKey` will be matched */ readonly instanceTagValue?: string; /** * The type of instances or SSM nodes created in Amazon EC2. * * You must have already created, tagged, and installed the SSM agent on all instances. */ readonly instanceType: Ec2InstanceType; /** * The deploy specifications. */ readonly deploySpecifications: Ec2DeploySpecifications; /** * The number or percentage of instances that can deploy in parallel. * * @default - No configuration */ readonly maxBatch?: Ec2MaxInstances; /** * Stop the task after the task fails on the specified number or percentage of instances. * * @default - No configuration */ readonly maxError?: Ec2MaxInstances; /** * The list of target groups for deployment. You must have already created the target groups. * * Target groups provide a set of instances to process specific requests. * If the target group is specified, instances will be removed from the target group before deployment and added back to the target group after deployment. * * @default - No target groups */ readonly targetGroups?: elbv2.ITargetGroup[]; } /** * The type of instances or SSM nodes created in Amazon EC2. * @see https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-EC2Deploy.html#action-reference-EC2Deploy-parameters */ export declare enum Ec2InstanceType { /** Amazon EC2 instances */ EC2 = "EC2", /** AWS System Manager (SSM) managed nodes */ SSM_MANAGED_NODE = "SSM_MANAGED_NODE" } /** * Properties of `Ec2DeploySpecifications.inline()`. */ export interface Ec2DeploySpecificationsInlineProps { /** * The location of the target directory you want to deploy to. * Use an absolute path like `/home/ec2-user/deploy`. */ readonly targetDirectory: string; /** * Path to the executable script file that runs BEFORE the Deploy phase. * It should start from the root directory of your uploaded source artifact. * Use an absolute path like `uploadDir/preScript.sh`. * * @default - No script */ readonly preScript?: string; /** * Path to the executable script file that runs AFTER the Deploy phase. * It should start from the root directory of your uploaded source artifact. * Use an absolute path like `uploadDir/postScript.sh`. */ readonly postScript: string; } /** * A deploy specifications for EC2 deploy action. */ export declare abstract class Ec2DeploySpecifications { /** * Store deploy specifications as action configurations. */ static inline(props: Ec2DeploySpecificationsInlineProps): Ec2DeploySpecifications; /** * The callback invoked when this deploy specifications is bound to an action. * * @param scope the Construct tree scope * @returns the action configurations */ abstract bind(scope: Construct): any; } /** * Number or percentage of max instances for EC2 deploy action. */ export declare abstract class Ec2MaxInstances { /** * Max number of instances. * * Valid range: from 1 to number of your instances */ static targets(targets: number): Ec2MaxInstances; /** * Max percentage of instances. * * Valid range: from 1 to 100 */ static percentage(percentage: number): Ec2MaxInstances; /** Template value */ abstract readonly value: string; } /** * CodePipeline Action to deploy EC2 instances. */ export declare class Ec2DeployAction extends Action { private readonly props; constructor(props: Ec2DeployActionProps); protected bound(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig; }