> For the complete documentation index, see [llms.txt](https://help.felt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.felt.com/upload-anything/data-sources/amazon-s3.md).

# Amazon S3

Connect an Amazon S3 bucket to Felt to map its files. Set up an IAM role for private buckets.

{% hint style="success" %}
Available on the Business and Enterprise plans. [Compare plans](https://felt.com/pricing#compare)
{% endhint %}

Connect an [Amazon S3](https://aws.amazon.com/s3/) bucket to add its spreadsheet, vector, and raster files to maps. Felt streams Cloud Optimized GeoTIFFs (COGs) directly, without processing them. See [Supported file types](/upload-anything/files/supported-file-types.md) and [Stream large rasters](/upload-anything/stream-large-rasters.md).

## Connect Amazon S3

A public bucket needs no credentials. For a private bucket, [create an IAM role](#credentials) for Felt first. Then follow the steps in [Add a source](/upload-anything/data-sources/add-a-source.md#connect-a-source) and select **Amazon S3**.

In **Connection**, fill in these fields. Fill in both role fields, or leave both empty for a public bucket.

| Field             | Required            | What to enter                                                                                                                      |
| ----------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| S3 URI            | Yes                 | The bucket's URI, such as `s3://my-storage-bucket/my_prefix`. With a prefix, Felt reads only the objects whose keys start with it. |
| Role ARN          | For private buckets | The Amazon Resource Name (ARN) of the IAM role Felt assumes, such as `arn:aws:iam::123456789012:role/your-role`.                   |
| Role session name | For private buckets | A name for Felt's sessions, such as `FeltAppAssumeRole`, so you can track Felt's use in AWS.                                       |

Optional: In **Extract attributes**, add regular expressions that turn parts of your file paths, such as a capture date, into attributes you can filter by. See [Stream large rasters](/upload-anything/stream-large-rasters.md#organize-your-raster-data).

## Credentials

Felt reads a private bucket by assuming an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) in your AWS account.

1. Create an IAM policy that allows the `s3:GetObject`, `s3:GetObjectVersion`, `s3:ListBucket`, and `s3:GetBucketLocation` actions on the bucket.
2. Create an IAM role and attach the policy to it.
3. Add this trust relationship to the role, with all four Felt principals, so Felt can assume it:

   ```json
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::949302143999:root",
                       "arn:aws:iam::452667257775:root",
                       "arn:aws:iam::375127086520:root",
                       "arn:aws:iam::033636008376:root"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```
4. In Felt, paste the role's ARN into **Role ARN**.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.felt.com/upload-anything/data-sources/amazon-s3.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
