> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Parquet AWS S3 as a destination

> Send your data from Nekt to AWS S3 as Parquet files.

Parquet is a columnar storage format optimized for analytics, offering efficient compression and fast reads. This destination writes your Lakehouse tables to an Amazon S3 bucket as compressed Parquet datasets, ready to be consumed by Athena, Spark, pandas, or any Parquet-compatible tool.

## 1. Add your AWS S3 access

1. In the [Destinations](https://app.nekt.ai/destinations) tab, click on the "Add destination" button located on the top right of your screen. Then, select the Parquet (AWS S3) option from the list of connectors.

2. Click **Next** and you'll be prompted to add your access:

### Required Configuration

* **Bucket name:** The AWS S3 bucket name where you want to store the Parquet files.

### AWS Authentication

Three authentication methods are supported:

1. **Access keys** — provide an **Access key ID** and **Secret access key** created in the AWS IAM console.
2. **IAM role** — provide an **Assume IAM Role ARN** (e.g. `arn:aws:iam::123456789012:role/MyRole`). Nekt assumes the role via STS with automatically refreshed credentials, so you don't need to share access keys.
3. **None** — leave all authentication fields empty to use the AWS account where your pipelines run (e.g. for Nekt-managed buckets, pattern: `nekt-lakehouse-{company-name}`).

<Accordion title="How to create AWS credentials">
  To create AWS credentials for accessing your S3 bucket:

  1. Log in to your [AWS IAM Console](https://console.aws.amazon.com/iam/)
  2. Navigate to **Users** and select your user (or create a new one)
  3. Go to the **Security credentials** tab
  4. Click **Create access key**
  5. Select **Application running outside AWS** or **Other** as the use case
  6. Copy the **Access Key ID** and **Secret Access Key** (you won't be able to see the secret again)

  **Required IAM Permissions:**

  Your AWS user/role needs the following S3 permissions:

  ```json theme={null}
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:PutObject",
          "s3:GetObject",
          "s3:ListBucket",
          "s3:DeleteObject"
        ],
        "Resource": [
          "arn:aws:s3:::your-bucket-name",
          "arn:aws:s3:::your-bucket-name/*"
        ]
      }
    ]
  }
  ```

  <Note>
    `s3:DeleteObject` is required because each sync replaces the table folder contents.
  </Note>
</Accordion>

### File Configuration

* **Output folder path:** Folder path where to store the output tables inside the S3 bucket. Leave empty if the tables should be stored in the bucket's root folder.
  * Example: `data/exports` or `reports/daily`
* **Table folder name:** A custom folder name for the output table. If empty, the name of the table being sent is used.
* **Compression:** (Advanced, default: `snappy`) Compression codec used when writing the Parquet files (`snappy` or `gzip`).

3. Click **Next**.

### Output layout

Each table is written as a Parquet dataset:

```
s3://{bucket}/{output folder path}/{table folder}/_nekt_sync_at={sync timestamp}/*.parquet
```

Each sync replaces the table folder contents, so the destination always mirrors the current state of the table in Nekt. The `_nekt_sync_at` partition carries the UTC timestamp of the sync that wrote the data.

## 2. Select your data to send

1. The next step is letting us know which data you want to export to S3. Select the layer and then the desired table.

   > Tip: The table can be found more easily by typing its name.

2. Click **Next**.

## 3. Configure your Parquet (AWS S3) data destination

1. Describe your destination for easy identification within your organization. You can inform things like what data it exports, to which team it belongs, etc.

2. To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how frequently you need to have the data updated in S3 (every day, once a week, only at specific times, etc.).

3. Click **Done**.

## 4. Check your new destination

1. Once completed, you'll receive confirmation that your new destination is set up!

2. You can view your new destination on the [Destinations](https://app.nekt.ai/destinations) page. The pipeline will run according to your configured trigger schedule. You can monitor it on the [Destinations](https://app.nekt.ai/destinations) page to see its execution and completion.

3. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your Parquet files will be available in your S3 bucket at the path you specified.

<Tip>
  You can query the exported datasets directly with Athena, Spark, DuckDB, or pandas — they all read the Hive-style `_nekt_sync_at` partitioning natively.
</Tip>

<Warning>
  Make sure your S3 bucket has the appropriate permissions and policies configured to prevent unauthorized access to your data.
</Warning>

> If you encounter any issues, reach out to us via Slack, and we'll gladly assist you!
