UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

312 lines (311 loc) 11.4 kB
import { Construct } from 'constructs'; import { Architecture } from './architecture'; import { IFunction } from './function-base'; import * as ec2 from '../../aws-ec2'; import * as iam from '../../aws-iam'; import * as kms from '../../aws-kms'; import { IResource, Resource } from '../../core'; /** * Represents a Lambda capacity provider. */ export interface ICapacityProvider extends IResource { /** * The ARN of the capacity provider. * * @attribute */ readonly capacityProviderArn: string; /** * The name of the capacity provider. * * @attribute */ readonly capacityProviderName: string; } /** * Properties for creating a Lambda capacity provider. */ export interface CapacityProviderProps { /** * The name of the capacity provider. The name must be unique within the AWS account and region. * * @default - AWS CloudFormation generates a unique physical ID and uses that * ID for the capacity provider's name. */ readonly capacityProviderName?: string; /** * A list of security group IDs to associate with EC2 instances launched by the capacity provider. * Up to 5 security groups can be specified. */ readonly securityGroups: ec2.ISecurityGroup[]; /** * A list of subnets where the capacity provider can launch EC2 instances. * At least one subnet must be specified, and up to 16 subnets are supported. */ readonly subnets: ec2.ISubnet[]; /** * The IAM role that the Lambda service assumes to manage the capacity provider. * * @default - A role will be generated containing the AWSLambdaManagedEC2ResourceOperator managed policy */ readonly operatorRole?: iam.IRole; /** * The instruction set architecture required for compute instances. * Only one architecture can be specified per capacity provider. * * @default - No architecture constraints specified */ readonly architectures?: Architecture[]; /** * Configuration for filtering instance types that the capacity provider can use. * * @default - No instance type filtering applied */ readonly instanceTypeFilter?: InstanceTypeFilter; /** * The maximum number of vCPUs that the capacity provider can scale up to. * * @default - No maximum limit specified, service default is 400 */ readonly maxVCpuCount?: number; /** * The options for scaling a capacity provider, including scaling policies. * * @default - The `Auto` option is applied by default */ readonly scalingOptions?: ScalingOptions; /** * The AWS Key Management Service (KMS) key used to encrypt data associated with the capacity provider. * * @default - No KMS key specified, uses an AWS-managed key instead */ readonly kmsKey?: kms.IKey; } /** * Configuration for filtering instance types that a capacity provider can use. Instances types can either be allowed or excluded, not both. */ export declare class InstanceTypeFilter { /** * Creates an instance type filter that allows only the specified instance types. * * @param instanceTypes A list of instance types that the capacity provider is allowed to use. */ static allow(instanceTypes: ec2.InstanceType[]): InstanceTypeFilter; /** * Creates an instance type filter that excludes the specified instance types. * * @param instanceTypes A list of instance types that the capacity provider should not use. */ static exclude(instanceTypes: ec2.InstanceType[]): InstanceTypeFilter; /** * A list of instance types that the capacity provider is allowed to use. */ readonly allowedInstanceTypes?: ec2.InstanceType[]; /** * A list of instance types that the capacity provider should not use. */ readonly excludedInstanceTypes?: ec2.InstanceType[]; /** * Creates a new InstanceTypeFilter. * * @param instanceTypes The instance type configuration */ private constructor(); } /** * Configuration options for scaling a capacity provider, including scaling mode and policies. */ export declare class ScalingOptions { /** * Creates scaling options where the capacity provider manages scaling automatically. */ static auto(): ScalingOptions; /** * Creates manual scaling options with custom target tracking scaling policies. At least one policy is required. * * @param scalingPolicies The target tracking scaling policies to use for manual scaling. */ static manual(scalingPolicies: TargetTrackingScalingPolicy[]): ScalingOptions; /** * The scaling mode for the capacity provider. */ readonly scalingMode: string; /** * The target tracking scaling policies used when scaling mode is 'Manual'. */ readonly scalingPolicies?: TargetTrackingScalingPolicy[]; /** * Creates a new ScalingOptions. * * @param scalingMode The scaling mode for the capacity provider * @param scalingPolicies The target tracking scaling policies for manual scaling */ private constructor(); } /** * A target tracking scaling policy that automatically adjusts the capacity provider's compute resources * to maintain a specified target value by tracking the required CloudWatch metric. */ export declare class TargetTrackingScalingPolicy { readonly metricType: string; readonly value: number; /** * Creates a target tracking scaling policy for CPU utilization. * * @param targetCpuUtilization The target value for CPU utilization. The capacity provider will scale resources to maintain this target value. */ static cpuUtilization(targetCpuUtilization: number): TargetTrackingScalingPolicy; /** * The predefined metric type for this scaling policy. */ readonly predefinedMetricType: string; /** * The target value for the specified metric as a percentage. The capacity provider will scale resources to maintain this target value. */ readonly targetValue: number; /** * Creates a new TargetTrackingScalingPolicy. * * @param metricType The predefined metric type * @param value The target value for the metric */ private constructor(); } /** * Base class for a Lambda capacity provider. */ declare abstract class CapacityProviderBase extends Resource implements ICapacityProvider { /** * The name of the capacity provider. */ abstract readonly capacityProviderName: string; /** * The Amazon Resource Name (ARN) of the capacity provider. */ abstract readonly capacityProviderArn: string; } /** * Attributes for importing an existing Lambda capacity provider. */ export interface CapacityProviderAttributes { /** * The Amazon Resource Name (ARN) of the capacity provider. * * Format: arn:<partition>:lambda:<region>:<account-id>:capacity-provider:<capacity-provider-name> */ readonly capacityProviderArn: string; } /** * Options for creating a function associated with a capacity provider. */ export interface CapacityProviderFunctionOptions { /** * Specifies the maximum number of concurrent invokes a single execution environment can handle. * * @default Maximum is set to 10 */ readonly perExecutionEnvironmentMaxConcurrency?: number; /** * Specifies the execution environment memory per VCPU, in GiB. * * @default 2.0 */ readonly executionEnvironmentMemoryGiBPerVCpu?: number; /** * A boolean determining whether or not to automatically publish to the $LATEST.PUBLISHED version. * * @default - True */ readonly publishToLatestPublished?: boolean; /** * The scaling options that are applied to the $LATEST.PUBLISHED version. * * @default - No scaling limitations are applied to the $LATEST.PUBLISHED version. */ readonly latestPublishedScalingConfig?: LatestPublishedScalingConfig; } /** * The scaling configuration that will be applied to the $LATEST.PUBLISHED version. */ export interface LatestPublishedScalingConfig { /** * The minimum number of execution environments to maintain for the $LATEST.PUBLISHED version * when published into a capacity provider. * * This setting ensures that at least this many execution environments are always * available to handle function invocations for this specific version, reducing cold start latency. * * @default - 3 execution environments are set to be the minimum */ readonly minExecutionEnvironments?: number; /** * The maximum number of execution environments allowed for the $LATEST.PUBLISHED version * when published into a capacity provider. * * This setting limits the total number of execution environments that can be created * to handle concurrent invocations of this specific version. * * @default - No maximum specified */ readonly maxExecutionEnvironments?: number; } /** * A Lambda capacity provider that manages compute resources for Lambda functions. */ export declare class CapacityProvider extends CapacityProviderBase { /** Uniquely identifies this class. */ static readonly PROPERTY_INJECTION_ID: string; /** * Import an existing capacity provider by name. * * @param scope The parent construct * @param id The construct ID * @param capacityProviderName The name of the capacity provider to import */ static fromCapacityProviderName(scope: Construct, id: string, capacityProviderName: string): ICapacityProvider; /** * Import an existing capacity provider by ARN. * * @param scope The parent construct * @param id The construct ID * @param capacityProviderArn The ARN of the capacity provider to import */ static fromCapacityProviderArn(scope: Construct, id: string, capacityProviderArn: string): ICapacityProvider; /** * Import an existing capacity provider using its attributes. * * @param scope The parent construct * @param id The construct ID * @param attrs The capacity provider attributes */ static fromCapacityProviderAttributes(scope: Construct, id: string, attrs: CapacityProviderAttributes): ICapacityProvider; /** * The name of the capacity provider. */ readonly capacityProviderName: string; /** * The Amazon Resource Name (ARN) of the capacity provider. */ readonly capacityProviderArn: string; /** * Creates a new Lambda capacity provider. * * @param scope The parent construct * @param id The construct ID * @param props The capacity provider properties */ constructor(scope: Construct, id: string, props: CapacityProviderProps); private validateCapacityProviderProps; private validateCapacityProviderName; private validateScalingPolicies; private validateInstanceTypeFilter; /** * Configures a Lambda function to use this capacity provider. * * @param func The Lambda function to configure * @param options Optional configuration for the function's capacity provider settings */ addFunction(func: IFunction, options?: CapacityProviderFunctionOptions): void; private validateFunctionScalingConfig; } export {};