aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
188 lines (187 loc) • 4.67 kB
TypeScript
import { Construct } from 'constructs';
import { UserData } from '../user-data';
/**
* Common options across all generations.
*/
export interface AmazonLinuxImageSsmParameterCommonOptions extends AmazonLinuxImageSsmParameterBaseOptions {
/**
* What edition of Amazon Linux to use
*
* @default AmazonLinuxEdition.Standard
*/
readonly edition?: AmazonLinuxEdition;
/**
* CPU Type
*
* @default AmazonLinuxCpuType.X86_64
*/
readonly cpuType?: AmazonLinuxCpuType;
}
/**
* Base options for amazon linux ssm parameters
*/
export interface AmazonLinuxImageSsmParameterBaseOptions {
/**
* Whether the AMI ID is cached to be stable between deployments
*
* By default, the newest image is used on each deployment. This will cause
* instances to be replaced whenever a new version is released, and may cause
* downtime if there aren't enough running instances in the AutoScalingGroup
* to reschedule the tasks on.
*
* If set to true, the AMI ID will be cached in `cdk.context.json` and the
* same value will be used on future runs. Your instances will not be replaced
* but your AMI version will grow old over time. To refresh the AMI lookup,
* you will have to evict the value from the cache using the `cdk context`
* command. See https://docs.aws.amazon.com/cdk/latest/guide/context.html for
* more information.
*
* Can not be set to `true` in environment-agnostic stacks.
*
* @default false
*/
readonly cachedInContext?: boolean;
/**
* Adds an additional discriminator to the `cdk.context.json` cache key.
*
* @default - no additional cache key
*/
readonly additionalCacheKey?: string;
/**
* Initial user data
*
* @default - Empty UserData for Linux machines
*/
readonly userData?: UserData;
}
/**
* Base properties for an Amazon Linux SSM Parameter
*/
export interface AmazonLinuxImageSsmParameterBaseProps extends AmazonLinuxImageSsmParameterBaseOptions {
/**
* The name of the SSM parameter that contains the AMI value
*/
readonly parameterName: string;
}
export declare abstract class AmazonLinuxImageSsmParameterBase implements IMachineImage {
private readonly props;
private readonly cachedInContext;
constructor(props: AmazonLinuxImageSsmParameterBaseProps);
getImage(scope: Construct): MachineImageConfig;
}
/**
* What generation of Amazon Linux to use
*/
export declare enum AmazonLinuxGeneration {
/**
* Amazon Linux
*/
AMAZON_LINUX = "amzn",
/**
* Amazon Linux 2
*/
AMAZON_LINUX_2 = "amzn2",
/**
* Amazon Linux 2022
*/
AMAZON_LINUX_2022 = "al2022",
/**
* Amazon Linux 2023
*/
AMAZON_LINUX_2023 = "al2023"
}
/**
* Interface for classes that can select an appropriate machine image to use
*/
export interface IMachineImage {
/**
* Return the image to use in the given context
*/
getImage(scope: Construct): MachineImageConfig;
}
/**
* Configuration for a machine image
*/
export interface MachineImageConfig {
/**
* The AMI ID of the image to use
*/
readonly imageId: string;
/**
* Operating system type for this image
*/
readonly osType: OperatingSystemType;
/**
* Initial UserData for this image
*/
readonly userData: UserData;
}
/**
* The OS type of a particular image
*/
export declare enum OperatingSystemType {
LINUX = 0,
WINDOWS = 1,
/**
* Used when the type of the operating system is not known
* (for example, for imported Auto-Scaling Groups).
*/
UNKNOWN = 2
}
/**
* CPU type
*/
export declare enum AmazonLinuxCpuType {
/**
* arm64 CPU type
*/
ARM_64 = "arm64",
/**
* x86_64 CPU type
*/
X86_64 = "x86_64"
}
/**
* Amazon Linux edition
*/
export declare enum AmazonLinuxEdition {
/**
* Standard edition
*/
STANDARD = "standard",
/**
* Minimal edition
*/
MINIMAL = "minimal"
}
/**
* Virtualization type for Amazon Linux
*/
export declare enum AmazonLinuxVirt {
/**
* HVM virtualization (recommended)
*/
HVM = "hvm",
/**
* PV virtualization
*/
PV = "pv"
}
/**
* Available storage options for Amazon Linux images
* Only applies to Amazon Linux & Amazon Linux 2
*/
export declare enum AmazonLinuxStorage {
/**
* EBS-backed storage
*/
EBS = "ebs",
/**
* S3-backed storage
*/
S3 = "s3",
/**
* General Purpose-based storage (recommended)
*/
GENERAL_PURPOSE = "gp2"
}