UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

310 lines (309 loc) 11.3 kB
import { Construct } from 'constructs'; import { EnvironmentType } from './environment-type'; import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import { IResource, Resource, Size } from '../../core'; /** * Construction properties of a CodeBuild Fleet. */ export interface FleetProps { /** * The name of the Fleet. * * @default - CloudFormation generated name */ readonly fleetName?: string; /** * The number of machines allocated to the compute fleet. * Defines the number of builds that can run in parallel. * * Minimum value of 1. */ readonly baseCapacity: number; /** * The instance type of the compute fleet. * * @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.ComputeType.html */ readonly computeType: FleetComputeType; /** * The build environment (operating system/architecture/accelerator) type * made available to projects using this fleet */ readonly environmentType: EnvironmentType; /** * The compute configuration of the compute fleet. * * This is only permitted if `computeType` is set to ATTRIBUTE_BASED or * CUSTOM_INSTANCE_TYPE. In such cases, this is required. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment-reserved-capacity.types * * @default - do not specify compute configuration */ readonly computeConfiguration?: ComputeConfiguration; /** * The compute fleet overflow behavior. * * For overflow behavior `QUEUE`, overflow builds need to wait on the existing fleet instances to become available. * * For overflow behavior `ON_DEMAND`, overflow builds run on CodeBuild on-demand. * * @default undefined - AWS CodeBuild default behavior is QUEUE */ readonly overflowBehavior?: FleetOverflowBehavior; /** * Service Role assumed by Fleet instances. * * This Role is not used by Project builds running on Fleet instances; Project * builds assume the `role` on Project instead. * * @default - A role will be created if any permissions are granted */ readonly role?: iam.IRole; /** * VPC network to place fleet instance network interfaces. * * Specify this if the fleet needs to access resources in a VPC. * * @default - No VPC is specified. */ readonly vpc?: ec2.IVpc; /** * Where to place the network interfaces within the VPC. * * To access AWS services, your fleet needs to be in one of the following types of subnets: * * 1. Subnets with access to the internet (of type PRIVATE_WITH_EGRESS). * 2. Private subnets unconnected to the internet, but with [VPC endpoints](https://docs.aws.amazon.com/codebuild/latest/userguide/use-vpc-endpoints-with-codebuild.html) for the necessary services. * * If you don't specify a subnet selection, the default behavior is to use PRIVATE_WITH_EGRESS subnets first if they exist, * then PRIVATE_WITHOUT_EGRESS, and finally PUBLIC subnets. If your VPC doesn't have PRIVATE_WITH_EGRESS subnets but you need * AWS service access, add VPC Endpoints to your private subnets. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/vpc-support.html * * @default - private subnets if available else public subnets */ readonly subnetSelection?: ec2.SubnetSelection; /** * What security groups to associate with the fleet's network interfaces. * If none are provided, one will be created automatically. * * Only used if `vpc` is supplied. * * @default - A security group will be automatically created. */ readonly securityGroups?: ec2.ISecurityGroup[]; } /** * The compute type of the fleet. */ export declare enum MachineType { /** * General purpose compute type. */ GENERAL = "GENERAL", /** * Non-Volatile Memory Express (NVMe) storage optimized compute type. */ NVME = "NVME" } /** * The compute configuration for the fleet. */ export interface ComputeConfiguration { /** * When using ATTRIBUTE_BASED, the amount of disk * space of the instance type included in your fleet. When using CUSTOM_INSTANCE_TYPE, * the additional amount of disk space to provision over the 64GB included by * default. * * @default - No requirement, the actual value will be based on the other selected configuration properties */ readonly disk?: Size; /** * When using ATTRIBUTE_BASED, the machine type of the instance type included in your fleet. * * @default - No requirement, the actual value will be based on the other selected configuration properties */ readonly machineType?: MachineType; /** * When using ATTRIBUTE_BASED, the amount of memory of the instance type included in your fleet. * * @default - No requirement, the actual value will be based on the other selected configuration properties */ readonly memory?: Size; /** * When using ATTRIBUTE_BASED, the number of vCPUs of the instance type included in your fleet. * * @default - No requirement, the actual value will be based on the other selected configuration properties */ readonly vCpu?: number; /** * When using CUSTOM_INSTANCE_TYPE, the EC2 instance type to use for fleet instances. * * Not all instance types are supported by CodeBuild. If you use a disallowed type, the * CloudFormation deployment will fail. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment-reserved-capacity.instance-types * @default none */ readonly instanceType?: ec2.InstanceType; } /** * Represents a Fleet for a reserved capacity CodeBuild project. */ export interface IFleet extends IResource, iam.IGrantable, ec2.IConnectable { /** * The ARN of the fleet. * @attribute */ readonly fleetArn: string; /** * The name of the fleet. * @attribute */ readonly fleetName: string; /** * The compute type of the fleet. * * @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.ComputeType.html */ readonly computeType: FleetComputeType; /** * The build environment (operating system/architecture/accelerator) type * made available to projects using this fleet */ readonly environmentType: EnvironmentType; } /** * Fleet for a reserved capacity CodeBuild project. * * Fleets allow for process builds or tests to run immediately and reduces build durations, * by reserving compute resources for your projects. * * You will be charged for the resources in the fleet, even if they are idle. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html */ export declare class Fleet extends Resource implements IFleet { /** Uniquely identifies this class. */ static readonly PROPERTY_INJECTION_ID: string; /** * Creates a Fleet construct that represents an external fleet. * * @param scope The scope creating construct (usually `this`). * @param id The construct's id. * @param fleetArn The ARN of the fleet. */ static fromFleetArn(scope: Construct, id: string, fleetArn: string): IFleet; /** * The ARN of the fleet. */ readonly fleetArn: string; /** * The name of the fleet. */ readonly fleetName: string; /** * The compute type of the fleet. * * @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_codebuild.ComputeType.html */ readonly computeType: FleetComputeType; /** * The build environment (operating system/architecture/accelerator) type * made available to projects using this fleet */ readonly environmentType: EnvironmentType; private _connections?; /** * The network connections associated with this Fleet's security group(s) in * the configured VPC. */ get connections(): ec2.Connections; private role; /** * The grant principal for this Fleet's service role. */ get grantPrincipal(): iam.IPrincipal; constructor(scope: Construct, id: string, props: FleetProps); private validatePositiveInteger; private configureVpc; } /** * Fleet build machine compute type. Subset of Fleet compatible ComputeType values. * * The allocated memory, vCPU count and disk space of the build machine for a * given compute type are dependent on the environment type. * Some compute types may also not be available for all environment types. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types */ export declare enum FleetComputeType { /** * Small compute type * * May not be available for all environment types. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types */ SMALL = "BUILD_GENERAL1_SMALL", /** * Medium compute type * * May not be available for all environment types. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types */ MEDIUM = "BUILD_GENERAL1_MEDIUM", /** Large compute type */ LARGE = "BUILD_GENERAL1_LARGE", /** * Extra Large compute type * * May not be available for all environment types. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types */ X_LARGE = "BUILD_GENERAL1_XLARGE", /** * Extra, Extra Large compute type * * May not be available for all environment types. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types */ X2_LARGE = "BUILD_GENERAL1_2XLARGE", /** * Specify the amount of vCPUs, memory, disk space, and the type of machine. * * AWS CodeBuild will select the cheapest instance that satisfies your specified attributes from `computeConfiguration`. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment-reserved-capacity.types */ ATTRIBUTE_BASED = "ATTRIBUTE_BASED_COMPUTE", /** * Specify a specific EC2 instance type to use for compute. * * You must set `instanceType` on `computeConfiguration`, and optionally set a * `disk` size if the provided 64GB is insufficient. * * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html#environment-reserved-capacity.instance-types */ CUSTOM_INSTANCE_TYPE = "CUSTOM_INSTANCE_TYPE" } /** * The compute fleet overflow behavior. */ export declare enum FleetOverflowBehavior { /** * Overflow builds wait for existing fleet instances to become available. */ QUEUE = "QUEUE", /** * Overflow builds run on CodeBuild on-demand instances. */ ON_DEMAND = "ON_DEMAND" }