429 lines
13 KiB
TypeScript
429 lines
13 KiB
TypeScript
import { Construct } from 'constructs';
|
|
import '../../assets';
|
|
import * as ecr from '../../aws-ecr';
|
|
import type { FileFingerprintOptions, CfnResource } from '../../core';
|
|
/**
|
|
* networking mode on build time supported by docker
|
|
*/
|
|
export declare class NetworkMode {
|
|
readonly mode: string;
|
|
/**
|
|
* The default networking mode if omitted, create a network stack on the default Docker bridge
|
|
*/
|
|
static readonly DEFAULT: NetworkMode;
|
|
/**
|
|
* Use the Docker host network stack
|
|
*/
|
|
static readonly HOST: NetworkMode;
|
|
/**
|
|
* Disable the network stack, only the loopback device will be created
|
|
*/
|
|
static readonly NONE: NetworkMode;
|
|
/**
|
|
* Reuse another container's network stack
|
|
*
|
|
* @param containerId The target container's id or name
|
|
*/
|
|
static fromContainer(containerId: string): NetworkMode;
|
|
/**
|
|
* Used to specify a custom networking mode
|
|
* Use this if the networking mode name is not yet supported by the CDK.
|
|
*
|
|
* @param mode The networking mode to use for docker build
|
|
*/
|
|
static custom(mode: string): NetworkMode;
|
|
/**
|
|
* @param mode The networking mode to use for docker build
|
|
*/
|
|
private constructor();
|
|
}
|
|
/**
|
|
* platform supported by docker
|
|
*/
|
|
export declare class Platform {
|
|
/** @jsii suppress JSII5019 For historic reasons */
|
|
readonly platform: string;
|
|
/**
|
|
* Build for linux/amd64
|
|
*/
|
|
static readonly LINUX_AMD64: Platform;
|
|
/**
|
|
* Build for linux/arm64
|
|
*/
|
|
static readonly LINUX_ARM64: Platform;
|
|
/**
|
|
* Used to specify a custom platform
|
|
* Use this if the platform name is not yet supported by the CDK.
|
|
*
|
|
* @param platform The platform to use for docker build
|
|
*/
|
|
static custom(platform: string): Platform;
|
|
/**
|
|
* @param platform The platform to use for docker build
|
|
*/
|
|
private constructor();
|
|
}
|
|
/**
|
|
* Options to control invalidation of `DockerImageAsset` asset hashes
|
|
*/
|
|
export interface DockerImageAssetInvalidationOptions {
|
|
/**
|
|
* Use `extraHash` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly extraHash?: boolean;
|
|
/**
|
|
* Use `buildArgs` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly buildArgs?: boolean;
|
|
/**
|
|
* Use `buildContexts` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly buildContexts?: boolean;
|
|
/**
|
|
* Use `buildSecrets` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly buildSecrets?: boolean;
|
|
/**
|
|
* Use `buildSsh` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly buildSsh?: boolean;
|
|
/**
|
|
* Use `target` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly target?: boolean;
|
|
/**
|
|
* Use `file` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly file?: boolean;
|
|
/**
|
|
* Use `repositoryName` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly repositoryName?: boolean;
|
|
/**
|
|
* Use `networkMode` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly networkMode?: boolean;
|
|
/**
|
|
* Use `platform` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly platform?: boolean;
|
|
/**
|
|
* Use `outputs` while calculating the asset hash
|
|
*
|
|
* @default true
|
|
*/
|
|
readonly outputs?: boolean;
|
|
}
|
|
/**
|
|
* Options for configuring the Docker cache backend
|
|
*/
|
|
export interface DockerCacheOption {
|
|
/**
|
|
* The type of cache to use.
|
|
* Refer to https://docs.docker.com/build/cache/backends/ for full list of backends.
|
|
* @default - unspecified
|
|
*
|
|
* @example 'registry'
|
|
*/
|
|
readonly type: string;
|
|
/**
|
|
* Any parameters to pass into the docker cache backend configuration.
|
|
* Refer to https://docs.docker.com/build/cache/backends/ for cache backend configuration.
|
|
* @default {} No options provided
|
|
*
|
|
* @example
|
|
* declare const branch: string;
|
|
*
|
|
* const params = {
|
|
* ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,
|
|
* mode: "max",
|
|
* };
|
|
*/
|
|
readonly params?: {
|
|
[key: string]: string;
|
|
};
|
|
}
|
|
/**
|
|
* Options for DockerImageAsset
|
|
*/
|
|
export interface DockerImageAssetOptions extends FileFingerprintOptions {
|
|
/**
|
|
* Build args to pass to the `docker build` command.
|
|
*
|
|
* Since Docker build arguments are resolved before deployment, keys and
|
|
* values cannot refer to unresolved tokens (such as `lambda.functionArn` or
|
|
* `queue.queueUrl`).
|
|
*
|
|
* @default - no build args are passed
|
|
*/
|
|
readonly buildArgs?: {
|
|
[key: string]: string;
|
|
};
|
|
/**
|
|
* Build contexts to pass to the `docker build` command.
|
|
*
|
|
* Build contexts can be used to specify additional directories or images
|
|
* to use during the build. Each entry specifies a named build context
|
|
* and its source (a directory path, a URL, or a docker image).
|
|
*
|
|
* Since Docker build contexts are resolved before deployment, keys and
|
|
* values cannot refer to unresolved tokens (such as `lambda.functionArn` or
|
|
* `queue.queueUrl`).
|
|
*
|
|
* @see https://docs.docker.com/build/building/context/#additional-build-contexts
|
|
*
|
|
* @default - no additional build contexts
|
|
*/
|
|
readonly buildContexts?: {
|
|
[key: string]: string;
|
|
};
|
|
/**
|
|
* Build secrets.
|
|
*
|
|
* Docker BuildKit must be enabled to use build secrets.
|
|
*
|
|
* @see https://docs.docker.com/build/buildkit/
|
|
*
|
|
* @default - no build secrets
|
|
*
|
|
* @example
|
|
* import { DockerBuildSecret } from 'aws-cdk-lib';
|
|
*
|
|
* const buildSecrets = {
|
|
* 'MY_SECRET': DockerBuildSecret.fromSrc('file.txt')
|
|
* };
|
|
*/
|
|
readonly buildSecrets?: {
|
|
[key: string]: string;
|
|
};
|
|
/**
|
|
* SSH agent socket or keys to pass to the `docker build` command.
|
|
*
|
|
* Docker BuildKit must be enabled to use the ssh flag
|
|
*
|
|
* @see https://docs.docker.com/build/buildkit/
|
|
*
|
|
* @default - no --ssh flag
|
|
*/
|
|
readonly buildSsh?: string;
|
|
/**
|
|
* Docker target to build to
|
|
*
|
|
* @default - no target
|
|
*/
|
|
readonly target?: string;
|
|
/**
|
|
* Path to the Dockerfile (relative to the directory).
|
|
*
|
|
* @default 'Dockerfile'
|
|
*/
|
|
readonly file?: string;
|
|
/**
|
|
* Networking mode for the RUN commands during build. Support docker API 1.25+.
|
|
*
|
|
* @default - no networking mode specified (the default networking mode `NetworkMode.DEFAULT` will be used)
|
|
*/
|
|
readonly networkMode?: NetworkMode;
|
|
/**
|
|
* Platform to build for. _Requires Docker Buildx_.
|
|
*
|
|
* @default - no platform specified (the current machine architecture will be used)
|
|
*/
|
|
readonly platform?: Platform;
|
|
/**
|
|
* Options to control which parameters are used to invalidate the asset hash.
|
|
*
|
|
* @default - hash all parameters
|
|
*/
|
|
readonly invalidation?: DockerImageAssetInvalidationOptions;
|
|
/**
|
|
* Outputs to pass to the `docker build` command.
|
|
*
|
|
* @default - no outputs are passed to the build command (default outputs are used)
|
|
* @see https://docs.docker.com/engine/reference/commandline/build/#custom-build-outputs
|
|
*/
|
|
readonly outputs?: string[];
|
|
/**
|
|
* Unique identifier of the docker image asset and its potential revisions.
|
|
* Required if using AppScopedStagingSynthesizer.
|
|
*
|
|
* @default - no asset name
|
|
*/
|
|
readonly assetName?: string;
|
|
/**
|
|
* Cache from options to pass to the `docker build` command.
|
|
*
|
|
* @default - no cache from options are passed to the build command
|
|
* @see https://docs.docker.com/build/cache/backends/
|
|
*/
|
|
readonly cacheFrom?: DockerCacheOption[];
|
|
/**
|
|
* Cache to options to pass to the `docker build` command.
|
|
*
|
|
* @default - no cache to options are passed to the build command
|
|
* @see https://docs.docker.com/build/cache/backends/
|
|
*/
|
|
readonly cacheTo?: DockerCacheOption;
|
|
/**
|
|
* Disable the cache and pass `--no-cache` to the `docker build` command.
|
|
*
|
|
* @default - cache is used
|
|
*/
|
|
readonly cacheDisabled?: boolean;
|
|
/**
|
|
* A display name for this asset
|
|
*
|
|
* If supplied, the display name will be used in locations where the asset
|
|
* identifier is printed, like in the CLI progress information. If the same
|
|
* asset is added multiple times, the display name of the first occurrence is
|
|
* used.
|
|
*
|
|
* If `assetName` is given, it will also be used as the default `displayName`.
|
|
* Otherwise, the default is the construct path of the ImageAsset construct,
|
|
* with respect to the enclosing stack. If the asset is produced by a
|
|
* construct helper function (such as `lambda.Code.fromAssetImage()`), this
|
|
* will look like `MyFunction/AssetImage`.
|
|
*
|
|
* We use the stack-relative construct path so that in the common case where
|
|
* you have multiple stacks with the same asset, we won't show something like
|
|
* `/MyBetaStack/MyFunction/Code` when you are actually deploying to
|
|
* production.
|
|
*
|
|
* @default - Stack-relative construct path
|
|
*/
|
|
readonly displayName?: string;
|
|
}
|
|
/**
|
|
* Props for DockerImageAssets
|
|
*/
|
|
export interface DockerImageAssetProps extends DockerImageAssetOptions {
|
|
/**
|
|
* The directory where the Dockerfile is stored
|
|
*
|
|
* Any directory inside with a name that matches the CDK output folder (cdk.out by default) will be excluded from the asset
|
|
*/
|
|
readonly directory: string;
|
|
}
|
|
/**
|
|
* An asset that represents a Docker image.
|
|
*
|
|
* The image will be created in build time and uploaded to an ECR repository.
|
|
*/
|
|
export declare class DockerImageAsset extends Construct {
|
|
/**
|
|
* Uniquely identifies this class.
|
|
*/
|
|
static readonly PROPERTY_INJECTION_ID: string;
|
|
/**
|
|
* The full URI of the image (including a tag). Use this reference to pull
|
|
* the asset.
|
|
*/
|
|
imageUri: string;
|
|
/**
|
|
* Repository where the image is stored
|
|
*/
|
|
repository: ecr.IRepository;
|
|
/**
|
|
* A hash of this asset, which is available at construction time. As this is a plain string, it
|
|
* can be used in construct IDs in order to enforce creation of a new resource when the content
|
|
* hash has changed.
|
|
*/
|
|
readonly assetHash: string;
|
|
/**
|
|
* The tag of this asset when it is uploaded to ECR. The tag may differ from the assetHash if a stack synthesizer adds a dockerTagPrefix.
|
|
*/
|
|
readonly imageTag: string;
|
|
/**
|
|
* The path to the asset, relative to the current Cloud Assembly
|
|
*
|
|
* If asset staging is disabled, this will just be the original path.
|
|
*
|
|
* If asset staging is enabled it will be the staged path.
|
|
*/
|
|
private readonly assetPath;
|
|
/**
|
|
* The path to the Dockerfile, relative to the assetPath
|
|
*/
|
|
private readonly dockerfilePath?;
|
|
/**
|
|
* Build args to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerBuildArgs?;
|
|
/**
|
|
* Build contexts to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerBuildContexts?;
|
|
/**
|
|
* Build secrets to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerBuildSecrets?;
|
|
/**
|
|
* SSH agent socket or keys to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerBuildSsh?;
|
|
/**
|
|
* Outputs to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerOutputs?;
|
|
/**
|
|
* Unique identifier of the docker image asset and its potential revisions.
|
|
* Required if using AppScopedStagingSynthesizer.
|
|
*
|
|
* @default - no asset name
|
|
*/
|
|
private readonly assetName?;
|
|
/**
|
|
* Cache from options to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerCacheFrom?;
|
|
/**
|
|
* Cache to options to pass to the `docker build` command.
|
|
*/
|
|
private readonly dockerCacheTo?;
|
|
/**
|
|
* Disable the cache and pass `--no-cache` to the `docker build` command.
|
|
*/
|
|
private readonly dockerCacheDisabled?;
|
|
/**
|
|
* Docker target to build to
|
|
*/
|
|
private readonly dockerBuildTarget?;
|
|
constructor(scope: Construct, id: string, props: DockerImageAssetProps);
|
|
/**
|
|
* Adds CloudFormation template metadata to the specified resource with
|
|
* information that indicates which resource property is mapped to this local
|
|
* asset. This can be used by tools such as SAM CLI to provide local
|
|
* experience such as local invocation and debugging of Lambda functions.
|
|
*
|
|
* Asset metadata will only be included if the stack is synthesized with the
|
|
* "aws:cdk:enable-asset-metadata" context key defined, which is the default
|
|
* behavior when synthesizing via the CDK Toolkit.
|
|
*
|
|
* @see https://github.com/aws/aws-cdk/issues/1432
|
|
*
|
|
* @param resource The CloudFormation resource which is using this asset [disable-awslint:ref-via-interface]
|
|
* @param resourceProperty The property name where this asset is referenced
|
|
*/
|
|
addResourceMetadata(resource: CfnResource, resourceProperty: string): void;
|
|
}
|