
## Manage files in Atlan's tenant object store

URL: https://docs.atlan.com/product/capabilities/build-apps/sdks/python/files/how-tos

> Manage files in Atlan's tenant object store programmatically using the Python SDK (pyatlan) with presigned URLs and FileClient.

# Manage files in tenant object store

You can use the SDK's `FileClient` to manage your files
within Atlan's tenant object store by leveraging presigned URLs.

## Upload file to object store

To upload a file to the tenant object store:

### Atlan CLI

```bash showLineNumbers title="Upload a file to the tenant object store"

atlan upload -f user/some-folder/my-file.txt -r atlan/object/store/file.txt # (1)
```

1. To upload the file to the object store, you must specify the following flags:

 - `-f or --file`: path to the file to be uploaded to the object store.
 - `--r or --remote`: actual object name where you want to upload the file (e.g: `prefix/object_name`).

> **Info: CLI must be configured**
>
> Make sure you have the [CLI configured before](https://docs.atlan.com/llms/platform/python/set-up-sdk/llms.txt) running the above command.

### Java

> **Warning: Coming soon**
>

### Python

```python showLineNumbers title="Upload a file to the tenant object store"

from pyatlan.client.atlan import AtlanClient
from pyatlan.model.file import PresignedURLRequest

client = AtlanClient()

presigned_url = client.files.generate_presigned_url(
 request=PresignedURLRequest( # (1)
 key="my-folder/my-file.txt",
 expiry="30s",
 method=PresignedURLRequest.Method.PUT,
 )
)

client.files.upload_file( # (2)
 presigned_url=presigned_url,
 file_path="user/some-folder/upload-file.txt"
)
```

1. Begin by generating a presigned URL for the object store. You need to specify:

 - actual object name where you want to upload the file (e.g: `prefix/object_name`).
 - expiration time interval for the presigned URL.
 - presigned URL method (`PUT` for upload).

2. Finally, upload the file to the object store by providing:

 - any valid presigned URL.
 - path to the file to be uploaded to the object store.

### Kotlin

> **Warning: Coming soon**
>

### Go

```go showLineNumbers title="Upload a file to the tenant object store"

package main

 "fmt"

 "github.com/atlanhq/atlan-go/atlan/assets"
 "github.com/atlanhq/atlan-go/atlan/model"
)

func main(),
 )
 if err != nil {
 fmt.Println("Error while generating url:", err)
 }

 uploadFilePath := "user/some-folder/upload-file.txt"
 err = client.UploadFile(presignedUrl, uploadFilePath) // (2)
 if err != nil {
 fmt.Println("Error while uploading file:", err)
 }
}
```

1. Begin by generating a presigned URL for the object store. You need to specify:

 - actual object name where you want to upload the file (e.g: `prefix/object_name`).
 - expiration time interval for the presigned URL.
 - presigned URL method (`PUT` for upload).

2. Finally, upload the file to the object store by providing:

 - any valid presigned URL.
 - path to the file to be uploaded to the object store.

### Raw REST API

```json showLineNumbers title="POST /api/service/files/presignedUrl"
{
 "method": "PUT", // (1)
 "key": "my-folder/my-file.txt", // (2)
 "expiry": "30s" // (3)
}
```

1. The presigned URL method (`PUT` for upload).
2. The actual object name where you want to upload the file (e.g: `prefix/object_name`).
3. An expiration time interval for the presigned URL.

## Download file from object store

To download a file from the tenant object store:

### Atlan CLI

```bash showLineNumbers title="Download a file to the tenant object store"

atlan download -r atlan/object/store/file.txt -o user/some-folder/my_file.txt # (1)
```

1. To download the file from the object store, you must specify the following flags:

 - `-r or --remote`: actual object name you want to download (e.g: `prefix/object_name`).
 - `--o or --output`: path to the location where you want to save the downloaded file.

> **Info: CLI must be configured**
>
> Make sure you have the [CLI configured before](https://docs.atlan.com/llms/platform/python/set-up-sdk/llms.txt) running the above command.

### Java

> **Warning: Coming soon**
>

### Python

```python showLineNumbers title="Download a file from the tenant object store"

from pyatlan.client.atlan import AtlanClient
from pyatlan.model.file import PresignedURLRequest

client = AtlanClient()

presigned_url = client.files.generate_presigned_url(
 request=PresignedURLRequest( # (1)
 key="my-folder/my-file.txt",
 expiry="30s",
 method=PresignedURLRequest.Method.GET,
 )
)

client.files.download_file( # (2)
 presigned_url=presigned_url,
 file_path="user/some-folder/download-file.txt"
)
```

1. Begin by generating a presigned URL for the object store. You need to specify:

 - actual object name you want to download (e.g: `prefix/object_name`).
 - expiration time interval for the presigned URL.
 - presigned URL method (`GET` for download).

2. Finally, download the file from the object store by providing:

 - any valid presigned URL.
 - path to the location where you want to save the downloaded file.

### Kotlin

> **Warning: Coming soon**
>

### Go

```go showLineNumbers title="Download a file from the tenant object store"

package main

 "fmt"

 "github.com/atlanhq/atlan-go/atlan/assets"
 "github.com/atlanhq/atlan-go/atlan/model"
)

func main(),
 )
 if err != nil {
 fmt.Println("Error while generating url:", err)
 }

 downloadFilePath := "user/some-folder/download-file.txt"
 err = client.DownloadFile(presignedUrl, downloadFilePath) // (2)
 if err != nil {
 fmt.Println("Error while downloading file:", err)
 }
}
```

1. Begin by generating a presigned URL for the object store. You need to specify:

 - actual object name you want to download (e.g: `prefix/object_name`).
 - expiration time interval for the presigned URL.
 - presigned URL method (`GET` for download).

2. Finally, download the file from the object store by providing:

 - any valid presigned URL.
 - path to the location where you want to save the downloaded file.

### Raw REST API

```json showLineNumbers title="POST /api/service/files/presignedUrl"
{
 "method": "GET", // (1)
 "key": "my-folder/my-file.txt", // (2)
 "expiry": "30s" // (3)
}
```

1. The presigned URL method (`GET` for download).
2. The actual object name you want to download (e.g: `prefix/object_name`).
3. An expiration time interval for the presigned URL.

_Last updated: 15 May 2026._

---

> **AI agent?** Install the Atlan Docs MCP for direct access: https://docs.atlan.com/skills/install-docs-mcp.md
