# AssetImageCodeProps

Properties to initialize a new AssetImage.

Extends: AssetImageCodeProps
Extends: DockerImageAssetOptions
Used as props by: AssetImageCode

- Source: [`aws-lambda/lib/code.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-lambda/lib/code.ts#L755)

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import * as cdk from 'aws-cdk-lib';
import { aws_ecr_assets as ecr_assets } from 'aws-cdk-lib';
import { aws_lambda as lambda } from 'aws-cdk-lib';

declare const networkMode: ecr_assets.NetworkMode;
declare const platform: ecr_assets.Platform;
const assetImageCodeProps: lambda.AssetImageCodeProps = {
  assetName: 'assetName',
  buildArgs: {
    buildArgsKey: 'buildArgs',
  },
  buildContexts: {
    buildContextsKey: 'buildContexts',
  },
  buildSecrets: {
    buildSecretsKey: 'buildSecrets',
  },
  buildSsh: 'buildSsh',
  cacheDisabled: false,
  cacheFrom: [{
    type: 'type',

    // the properties below are optional
    params: {
      paramsKey: 'params',
    },
  }],
  cacheTo: {
    type: 'type',

    // the properties below are optional
    params: {
      paramsKey: 'params',
    },
  },
  cmd: ['cmd'],
  displayName: 'displayName',
  entrypoint: ['entrypoint'],
  exclude: ['exclude'],
  extraHash: 'extraHash',
  file: 'file',
  followSymlinks: cdk.SymlinkFollowMode.NEVER,
  ignoreMode: cdk.IgnoreMode.GLOB,
  invalidation: {
    buildArgs: false,
    buildContexts: false,
    buildSecrets: false,
    buildSsh: false,
    extraHash: false,
    file: false,
    networkMode: false,
    outputs: false,
    platform: false,
    repositoryName: false,
    target: false,
  },
  networkMode: networkMode,
  outputs: ['outputs'],
  platform: platform,
  target: 'target',
  workingDirectory: 'workingDirectory',
};
```

## Properties

- `assetName`: string = no asset name — Unique identifier of the docker image asset and its potential revisions.

  Required if using AppScopedStagingSynthesizer.

- `buildArgs`: { [key: string]: string } = no build args are passed — 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`).

- `buildContexts`: { [key: string]: string } = no additional build contexts — 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`).

- `buildSecrets`: { [key: string]: string } = no build secrets — Build secrets.

  Docker BuildKit must be enabled to use build secrets.

  ```ts
  import { DockerBuildSecret } from 'aws-cdk-lib';

  const buildSecrets = {
    'MY_SECRET': DockerBuildSecret.fromSrc('file.txt')
  };
  ```

- `buildSsh`: string = no --ssh flag — SSH agent socket or keys to pass to the `docker build` command.

  Docker BuildKit must be enabled to use the ssh flag

- `cacheDisabled`: boolean = cache is used — Disable the cache and pass `--no-cache` to the `docker build` command.

- `cacheFrom`: [DockerCacheOption](/cdk/api/v2/docs/aws-cdk-lib.aws_ecr_assets.DockerCacheOption.html)[] = no cache from options are passed to the build command — Cache from options to pass to the `docker build` command.

  **Default:** no cache from options are passed to the build command

- `cacheTo`: [DockerCacheOption](/cdk/api/v2/docs/aws-cdk-lib.aws_ecr_assets.DockerCacheOption.html) = no cache to options are passed to the build command — Cache to options to pass to the `docker build` command.

  **Default:** no cache to options are passed to the build command

- `cmd`: string[] = use the CMD specified in the docker image or Dockerfile. — Specify or override the CMD on the specified Docker image or Dockerfile.

  This needs to be in the 'exec form', viz., `[ 'executable', 'param1', 'param2' ]`.

  **Default:** use the CMD specified in the docker image or Dockerfile.

- `displayName`: string = Stack-relative construct path — 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.

- `entrypoint`: string[] = use the ENTRYPOINT in the docker image or Dockerfile. — Specify or override the ENTRYPOINT on the specified Docker image or Dockerfile.

  An ENTRYPOINT allows you to configure a container that will run as an executable.
  This needs to be in the 'exec form', viz., `[ 'executable', 'param1', 'param2' ]`.

  **Default:** use the ENTRYPOINT in the docker image or Dockerfile.

- `exclude`: string[] = nothing is excluded — File paths matching the patterns will be excluded.

  See `ignoreMode` to set the matching behavior.
  Has no effect on Assets bundled using the `bundling` property.

- `extraHash`: string = hash is only based on source content — Extra information to encode into the fingerprint (e.g. build instructions and other inputs).

  **Default:** hash is only based on source content

- `file`: string = 'Dockerfile' — Path to the Dockerfile (relative to the directory).

- `followSymlinks`: [SymlinkFollowMode](/cdk/api/v2/docs/aws-cdk-lib.SymlinkFollowMode.html) = SymlinkFollowMode.NEVER — A strategy for how to handle symlinks.

- `ignoreMode`: [IgnoreMode](/cdk/api/v2/docs/aws-cdk-lib.IgnoreMode.html) = IgnoreMode.GLOB — The ignore behavior to use for `exclude` patterns.

- `invalidation`: [DockerImageAssetInvalidationOptions](/cdk/api/v2/docs/aws-cdk-lib.aws_ecr_assets.DockerImageAssetInvalidationOptions.html) = hash all parameters — Options to control which parameters are used to invalidate the asset hash.

- `networkMode`: [NetworkMode](/cdk/api/v2/docs/aws-cdk-lib.aws_ecr_assets.NetworkMode.html) = no networking mode specified (the default networking mode `NetworkMode.DEFAULT` will be used) — 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)

- `outputs`: string[] = no outputs are passed to the build command (default outputs are used) — Outputs to pass to the `docker build` command.

  **Default:** no outputs are passed to the build command (default outputs are used)

- `platform`: [Platform](/cdk/api/v2/docs/aws-cdk-lib.aws_ecr_assets.Platform.html) = no platform specified (the current machine architecture will be used) — Platform to build for.

  _Requires Docker Buildx_.

  **Default:** no platform specified (the current machine architecture will be used)

- `target`: string = no target — Docker target to build to.

- `workingDirectory`: string = use the WORKDIR in the docker image or Dockerfile. — Specify or override the WORKDIR on the specified Docker image or Dockerfile.

  A WORKDIR allows you to configure the working directory the container will use.

  **Default:** use the WORKDIR in the docker image or Dockerfile.
