packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/metadata-schema.ts (62 lines of code) (raw):
/**
* Common properties for asset metadata.
*/
interface BaseAssetMetadataEntry {
/**
* Requested packaging style
*/
readonly packaging: string;
/**
* Logical identifier for the asset
*/
readonly id: string;
/**
* The hash of the asset source.
*/
readonly sourceHash: string;
/**
* Path on disk to the asset
*/
readonly path: string;
}
/**
* Metadata Entry spec for files.
*
* @example
* const entry = {
* packaging: 'file',
* s3BucketParameter: 'bucket-parameter',
* s3KeyParamenter: 'key-parameter',
* artifactHashParameter: 'hash-parameter',
* }
*/
export interface FileAssetMetadataEntry extends BaseAssetMetadataEntry {
/**
* Requested packaging style
*/
readonly packaging: 'zip' | 'file';
/**
* Name of parameter where S3 bucket should be passed in
*/
readonly s3BucketParameter: string;
/**
* Name of parameter where S3 key should be passed in
*/
readonly s3KeyParameter: string;
/**
* The name of the parameter where the hash of the bundled asset should be passed in.
*/
readonly artifactHashParameter: string;
}
/**
* Metadata Entry spec for stack tag.
*/
export interface Tag {
/**
* Tag key.
*
* (In the actual file on disk this will be cased as "Key", and the structure is
* patched to match this structure upon loading:
* https://github.com/aws/aws-cdk/blob/4aadaa779b48f35838cccd4e25107b2338f05547/packages/%40aws-cdk/cloud-assembly-schema/lib/manifest.ts#L137)
*/
readonly key: string;
/**
* Tag value.
*
* (In the actual file on disk this will be cased as "Value", and the structure is
* patched to match this structure upon loading:
* https://github.com/aws/aws-cdk/blob/4aadaa779b48f35838cccd4e25107b2338f05547/packages/%40aws-cdk/cloud-assembly-schema/lib/manifest.ts#L137)
*/
readonly value: string;
}
/**
* Options for configuring the Docker cache backend
*/
export interface ContainerImageAssetCacheOption {
/**
* 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 };
}
/**
* Metadata Entry spec for container images.
*
* @example
* const entry = {
* packaging: 'container-image',
* repositoryName: 'repository-name',
* imageTag: 'tag',
* }
*/
export interface ContainerImageAssetMetadataEntry extends BaseAssetMetadataEntry {
/**
* Type of asset
*/
readonly packaging: 'container-image';
/**
* ECR Repository name and repo digest (separated by "@sha256:") where this
* image is stored.
*
* @default undefined If not specified, `repositoryName` and `imageTag` are
* required because otherwise how will the stack know where to find the asset,
* ha?
* @deprecated specify `repositoryName` and `imageTag` instead, and then you
* know where the image will go.
*/
readonly imageNameParameter?: string;
/**
* ECR repository name, if omitted a default name based on the asset's ID is
* used instead. Specify this property if you need to statically address the
* image, e.g. from a Kubernetes Pod. Note, this is only the repository name,
* without the registry and the tag parts.
*
* @default - this parameter is REQUIRED after 1.21.0
*/
readonly repositoryName?: string;
/**
* The docker image tag to use for tagging pushed images. This field is
* required if `imageParameterName` is ommited (otherwise, the app won't be
* able to find the image).
*
* @default - this parameter is REQUIRED after 1.21.0
*/
readonly imageTag?: string;
/**
* Build args to pass to the `docker build` command
*
* @default no build args are passed
*/
readonly buildArgs?: { [key: string]: string };
/**
* SSH agent socket or keys to pass to the `docker build` command
*
* @default no ssh arg is passed
*/
readonly buildSsh?: string;
/**
* Build secrets to pass to the `docker build` command
*
* @default no build secrets are passed
*/
readonly buildSecrets?: { [key: string]: string };
/**
* Docker target to build to
*
* @default no build target
*/
readonly target?: string;
/**
* Path to the Dockerfile (relative to the directory).
*
* @default - no file is passed
*/
readonly file?: string;
/**
* Networking mode for the RUN commands during build.
*
* @default - no networking mode specified
*/
readonly networkMode?: string;
/**
* Platform to build for. _Requires Docker Buildx_.
*
* @default - current machine platform
*/
readonly platform?: string;
/**
* 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[];
/**
* 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?: ContainerImageAssetCacheOption[];
/**
* 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?: ContainerImageAssetCacheOption;
/**
* Disable the cache and pass `--no-cache` to the `docker build` command.
*
* @default - cache is used
*/
readonly cacheDisabled?: boolean;
}
/**
* @see ArtifactMetadataEntryType.ASSET
*/
export type AssetMetadataEntry = FileAssetMetadataEntry | ContainerImageAssetMetadataEntry;
// Type aliases for metadata entries.
// Used simply to assign names to data types for more clarity.
/**
* @see ArtifactMetadataEntryType.INFO
* @see ArtifactMetadataEntryType.WARN
* @see ArtifactMetadataEntryType.ERROR
*/
export type LogMessageMetadataEntry = string;
/**
* @see ArtifactMetadataEntryType.LOGICAL_ID
*/
export type LogicalIdMetadataEntry = string;
/**
* @see ArtifactMetadataEntryType.STACK_TAGS
*/
export type StackTagsMetadataEntry = Tag[];
/**
* Any other type of metadata entry
*
* This could probably be changed to `any`, but it's safer not
* to do so right now.
* See https://github.com/cdklabs/cloud-assembly-schema/pull/121.
*/
export type PrimitiveType = boolean | number | string;
/**
* Union type for all metadata entries that might exist in the manifest.
*/
export type MetadataEntryData =
| AssetMetadataEntry
| LogMessageMetadataEntry
| LogicalIdMetadataEntry
| StackTagsMetadataEntry
| PrimitiveType;
/**
* Type of artifact metadata entry.
*/
export enum ArtifactMetadataEntryType {
/**
* Asset in metadata.
*/
ASSET = 'aws:cdk:asset',
/**
* Metadata key used to print INFO-level messages by the toolkit when an app is syntheized.
*/
INFO = 'aws:cdk:info',
/**
* Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized.
*/
WARN = 'aws:cdk:warning',
/**
* Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized.
*/
ERROR = 'aws:cdk:error',
/**
* Represents the CloudFormation logical ID of a resource at a certain path.
*/
LOGICAL_ID = 'aws:cdk:logicalId',
/**
* Represents tags of a stack.
*/
STACK_TAGS = 'aws:cdk:stack-tags',
/**
* Whether the resource should be excluded during refactoring.
*/
DO_NOT_REFACTOR = 'aws:cdk:do-not-refactor',
}
/**
* A metadata entry in a cloud assembly artifact.
*/
export interface MetadataEntry {
/**
* The type of the metadata entry.
*/
readonly type: string;
/**
* The data.
*
* @default - no data.
*/
readonly data?: MetadataEntryData;
/**
* A stack trace for when the entry was created.
*
* @default - no trace.
*/
readonly trace?: string[];
}