# aws_s3

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [connect-full.txt](https://docs.redpanda.com/connect-full.txt)

---
title: aws_s3
latest-connect-version: 4.93.0
latest-operator-version: v26.1.4
latest-console-tag: v3.7.3
latest-redpanda-tag: v26.1.9
docname: caches/aws_s3
page-component-name: connect
page-version: master
page-component-version: master
page-component-title: Connect
page-relative-src-path: caches/aws_s3.adoc
page-edit-url: https://github.com/redpanda-data/rp-connect-docs/edit/main/modules/components/pages/caches/aws_s3.adoc
page-git-created-date: "2024-05-24"
page-git-modified-date: "2026-05-26"
---

<!-- Source: https://docs.redpanda.com/connect/components/caches/aws_s3.md -->

**Type:** Cache ▼

[Cache](https://docs.redpanda.com/connect/components/caches/aws_s3/)[Input](https://docs.redpanda.com/connect/components/inputs/aws_s3/)[Output](https://docs.redpanda.com/connect/components/outputs/aws_s3/)

**Available in:** [Cloud](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/caches/aws_s3/%20%22View%20the%20Cloud%20version%20of%20this%20component%22), Self-Managed

Stores each item in an S3 bucket as a file, where an item ID is the path of the item within the bucket.

Introduced in version 3.36.0.

#### Common

```yml
caches:
  aws_s3:
    bucket: "" # No default (required)
    content_type: application/octet-stream
```

#### Advanced

```yml
caches:
  aws_s3:
    bucket: "" # No default (required)
    content_type: application/octet-stream
    force_path_style_urls: false
    retries:
      initial_interval: 1s
      max_interval: 5s
      max_elapsed_time: 30s
    region: "" # No default (optional)
    endpoint: "" # No default (optional)
    tcp:
      connect_timeout: 0s
      keep_alive:
        idle: 15s
        interval: 15s
        count: 9
      tcp_user_timeout: 0s
    credentials:
      profile: "" # No default (optional)
      id: "" # No default (optional)
      secret: "" # No default (optional)
      token: "" # No default (optional)
      from_ec2_role: "" # No default (optional)
      role: "" # No default (optional)
      role_external_id: "" # No default (optional)
```

It is not possible to atomically upload S3 objects exclusively when the target does not already exist, therefore this cache is not suitable for deduplication.

## [](#fields)Fields

### [](#bucket)`bucket`

The S3 bucket to store items in.

**Type**: `string`

### [](#content_type)`content_type`

The content type to set for each item.

**Type**: `string`

**Default**: `application/octet-stream`

### [](#credentials)`credentials`

Optional manual configuration of AWS credentials to use. More information can be found in [Amazon Web Services](https://docs.redpanda.com/connect/guides/cloud/aws/).

**Type**: `object`

### [](#credentials-from_ec2_role)`credentials.from_ec2_role`

Use the credentials of a host EC2 machine configured to assume [an IAM role associated with the instance](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html).

Requires version 4.2.0 or later.

**Type**: `bool`

### [](#credentials-id)`credentials.id`

The ID of credentials to use.

**Type**: `string`

### [](#credentials-profile)`credentials.profile`

A profile from `~/.aws/credentials` to use.

**Type**: `string`

### [](#credentials-role)`credentials.role`

A role ARN to assume.

**Type**: `string`

### [](#credentials-role_external_id)`credentials.role_external_id`

An external ID to provide when assuming a role.

**Type**: `string`

### [](#credentials-secret)`credentials.secret`

The secret for the credentials being used.

> ⚠️ **CAUTION**
>
> This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see [Secrets](https://docs.redpanda.com/connect/configuration/secrets/).

**Type**: `string`

### [](#credentials-token)`credentials.token`

The token for the credentials being used, required when using short term credentials.

**Type**: `string`

### [](#endpoint)`endpoint`

Allows you to specify a custom endpoint for the AWS API.

**Type**: `string`

### [](#force_path_style_urls)`force_path_style_urls`

Forces the client API to use path style URLs, which helps when connecting to custom endpoints.

**Type**: `bool`

**Default**: `false`

### [](#region)`region`

The AWS region to target.

**Type**: `string`

### [](#retries)`retries`

Determine time intervals and cut offs for retry attempts.

**Type**: `object`

### [](#retries-initial_interval)`retries.initial_interval`

The initial period to wait between retry attempts.

**Type**: `string`

**Default**: `1s`

```yaml
# Examples:
initial_interval: 50ms

# ---

initial_interval: 1s
```

### [](#retries-max_elapsed_time)`retries.max_elapsed_time`

The maximum overall period of time to spend on retry attempts before the request is aborted.

**Type**: `string`

**Default**: `30s`

```yaml
# Examples:
max_elapsed_time: 1m

# ---

max_elapsed_time: 1h
```

### [](#retries-max_interval)`retries.max_interval`

The maximum period to wait between retry attempts

**Type**: `string`

**Default**: `5s`

```yaml
# Examples:
max_interval: 5s

# ---

max_interval: 1m
```

### [](#tcp)`tcp`

TCP socket configuration.

**Type**: `object`

### [](#tcp-connect_timeout)`tcp.connect_timeout`

Maximum amount of time a dial will wait for a connect to complete. Zero disables.

**Type**: `string`

**Default**: `0s`

### [](#tcp-keep_alive)`tcp.keep_alive`

TCP keep-alive probe configuration.

**Type**: `object`

### [](#tcp-keep_alive-count)`tcp.keep_alive.count`

Maximum unanswered keep-alive probes before dropping the connection. Zero defaults to 9.

**Type**: `int`

**Default**: `9`

### [](#tcp-keep_alive-idle)`tcp.keep_alive.idle`

Duration the connection must be idle before sending the first keep-alive probe. Zero defaults to 15s. Negative values disable keep-alive probes.

**Type**: `string`

**Default**: `15s`

### [](#tcp-keep_alive-interval)`tcp.keep_alive.interval`

Duration between keep-alive probes. Zero defaults to 15s.

**Type**: `string`

**Default**: `15s`

### [](#tcp-tcp_user_timeout)`tcp.tcp_user_timeout`

Maximum time to wait for acknowledgment of transmitted data before killing the connection. Linux-only (kernel 2.6.37+), ignored on other platforms. When enabled, keep\_alive.idle must be greater than this value per RFC 5482. Zero disables.

**Type**: `string`

**Default**: `0s`