# Amazon S3 cache storage

> **Warning**
>
> This cache backend is unreleased. You can use it today, by using the
> `moby/buildkit:master` image in your Buildx driver.

The `s3` cache storage uploads your resulting build cache to
[Amazon S3 file storage service](https://aws.amazon.com/s3/), into a specified
bucket.

> **Note**
>
> This cache storage backend requires using a different driver than the default
> `docker` driver - see more information on selecting a driver
> [here](https://docs.docker.com/build/building/drivers/). To create a new
> driver (which can act as a simple drop-in replacement):
>
> ```console
> docker buildx create --use --driver=docker-container
> ```

## Synopsis

```console
$ docker buildx build . --push -t <user>/<image> \
  --cache-to type=s3,region=<region>,bucket=<bucket>,name=<cache-image>[,parameters...] \
  --cache-from type=s3,region=<region>,bucket=<bucket>,name=<cache-image>
```

The following table describes the available CSV parameters that you can pass to
`--cache-to` and `--cache-from`.

| Name                | Option                  | Type        | Default | Description                                  |
| ------------------- | ----------------------- | ----------- | ------- | -------------------------------------------- |
| `region`            | `cache-to`,`cache-from` | String      |         | Geographic location.                         |
| `bucket`            | `cache-to`,`cache-from` | String      |         | Name of the S3 bucket used for caching       |
| `name`              | `cache-to`,`cache-from` | String      |         | Name of the cache image                      |
| `access_key_id`     | `cache-to`,`cache-from` | String      |         | See [authentication][1]                      |
| `secret_access_key` | `cache-to`,`cache-from` | String      |         | See [authentication][1]                      |
| `session_token`     | `cache-to`,`cache-from` | String      |         | See [authentication][1]                      |
| `mode`              | `cache-to`              | `min`,`max` | `min`   | Cache layers to export, see [cache mode][2]. |

[1]: #authentication
[2]: index.md#cache-mode

## Authentication

`access_key_id`, `secret_access_key`, and `session_token`, if left unspecified,
are read from environment variables on the BuildKit server following the scheme
for the
[AWS Go SDK](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html).
The environment variables are read from the server, not the Buildx client.

<!-- FIXME: update once https://github.com/docker/buildx/pull/1294 is released -->

## Further reading

For an introduction to caching see
[Optimizing builds with cache](https://docs.docker.com/build/building/cache).

For more information on the `s3` cache backend, see the
[BuildKit README](https://github.com/moby/buildkit#s3-cache-experimental).
