# ProjectCacheProperty

`ProjectCache` is a property of the [AWS CodeBuild Project](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html) resource that specifies information about the cache for the build project. If `ProjectCache` is not specified, then both of its properties default to `NO_CACHE` .

- Source: Generated code
- Type last changed: v2.188.0 · 4 Apr 2025

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import { aws_codebuild as codebuild } from 'aws-cdk-lib';
const projectCacheProperty: codebuild.CfnProject.ProjectCacheProperty = {
  type: 'type',

  // the properties below are optional
  cacheNamespace: 'cacheNamespace',
  location: 'location',
  modes: ['modes'],
};
```

## Properties

- `cacheNamespace`: string — Defines the scope of the cache.

  You can use this namespace to share a cache across multiple projects. For more information, see [Cache sharing between projects](https://docs.aws.amazon.com/codebuild/latest/userguide/caching-s3.html#caching-s3-sharing) in the *AWS CodeBuild User Guide* .

- `location`: string — Information about the cache location:.

  - `NO_CACHE` or `LOCAL` : This value is ignored.
  - `S3` : This is the S3 bucket name/prefix.

- `modes`: string[] — An array of strings that specify the local cache modes.

  You can use one or more local cache modes at the same time. This is only used for `LOCAL` cache types.

  Possible values are:

  - **LOCAL_SOURCE_CACHE** - Caches Git metadata for primary and secondary sources. After the cache is created, subsequent builds pull only the change between commits. This mode is a good choice for projects with a clean working directory and a source that is a large Git repository. If you choose this option and your project does not use a Git repository (GitHub, GitHub Enterprise, or Bitbucket), the option is ignored.
  - **LOCAL_DOCKER_LAYER_CACHE** - Caches existing Docker layers. This mode is a good choice for projects that build or pull large Docker images. It can prevent the performance issues caused by pulling large Docker images down from the network.

  > - You can use a Docker layer cache in the Linux environment only.
  > - The `privileged` flag must be set so that your project has the required Docker permissions.
  > - You should consider the security implications before you use a Docker layer cache.
  - **LOCAL_CUSTOM_CACHE** - Caches directories you specify in the buildspec file. This mode is a good choice if your build scenario is not suited to one of the other three local cache modes. If you use a custom cache:

  - Only directories can be specified for caching. You cannot specify individual files.
  - Symlinks are used to reference cached directories.
  - Cached directories are linked to your build before it downloads its project sources. Cached items are overridden if a source item has the same name. Directories are specified using cache paths in the buildspec file.

- `type`: string (required) — The type of cache used by the build project. Valid values include:.

  - `NO_CACHE` : The build project does not use any cache.
  - `S3` : The build project reads and writes from and to S3.
  - `LOCAL` : The build project stores a cache locally on a build host that is only available to that build host.
