ToolJet/docs/versioned_docs/version-2.68.0/data-sources/s3.md
2024-09-26 18:34:35 +05:30

181 lines
No EOL
6.5 KiB
Markdown

---
id: s3
title: Amazon S3
---
ToolJet can connect to **Amazon S3** buckets and perform various operations on them.
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Amazon S3** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet supports connecting to AWS S3 using **IAM Access Keys**, **AWS Instance Credentials** or **AWS ARN Role**.
If you are using **IAM Access Keys**, you will need to provide the following details:
- **Region**
- **Access key**
- **Secret key**
**Note:** It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
To connect to AWS S3 using **AWS Instance Credentials**, select the **Use AWS Instance Credentials**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
If you are using **AWS ARN Role**, you will need to provide the following details:
- **Region**
- **Role ARN**
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
:::tip
You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-to/s3-custom-endpoints)**.
:::
</div>
<div style={{paddingTop:'24px'}}>
## Querying AWS S3
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Amazon AWS S3** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/operations3.png" alt="aws s3 query" />
:::info
Query results can be transformed using transformations. Read our [transformations documentation](/docs/tutorial/transformations).
:::
</div>
<div style={{paddingTop:'24px'}}>
## Supported Operations
You can create query for AWS S3 data source to perform several actions such as:
- **[Create a new bucket](#create-a-new-bucket)**
- **[Read object](#read-object)**
- **[Upload object](#upload-object)**
- **[Remove object](#remove-object)**
- **[List buckets](#list-buckets)**
- **[List objects in a bucket](#list-objects-in-a-bucket)**
- **[Signed URL for download](#signed-url-for-download)**
- **[Signed URL for upload](#signed-url-for-upload)**
### Create a New Bucket
You can create a new bucket in your S3 by using this operation.
#### Required Parameters
- **Bucket Name**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
### Read Object
You can read an object in a bucket by using this operation.
#### Required Parameters
- **Bucket**
- **Key**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
### Upload Object
You can use this operation to upload objects(files) to your S3 bucket.
#### Required Parameters
- **Bucket**
- **Key**
- **Content Type**
- **Upload data**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
### Remove Object
You can use this operation to remove an object from your S3 bucket.
#### Required Parameters
- **Bucket**
- **Key**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
### List Buckets
This operation will list all the buckets in your S3. This does not require any parameter.
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
### List Objects in a Bucket
This operation will fetch the list of all the files in your bucket. It requires the following parameters:
#### Required Parameters
- **Bucket**
#### Optional Parameters
- **Prefix**
- **Max keys**
- **Offset**
- **Next Continuation Token**
:::info
**Next Continuation Token** <br/>
For listing a bucket for objects that begin with a specific character or a prefix, then use the **Offset** parameter. For example, if you want to list all the objects that begin with **a**, then set the **Offset** parameter to **a**. Similarly, if you want to list all the objects that begin with **ab**, then set the **Offset** parameter to **ab**. <br/>
The **Next Continuation Token** is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain **Next Continuation Token** if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the **Next Continuation Token** parameter and run the query again. <br/>
The results will continue from where the last listing finished.
:::
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
### Signed URL for Download
The object owner can optionally share objects with others by creating a presigned URL, using their own security credentials, to grant time-limited permission to download the objects.
#### Required Parameters
- **Bucket**
- **Key**
- **Expires in**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
### Signed URL for Upload
The presigned URLs are useful if you want your user/customer to be able to upload a specific object to your bucket, but you don't require them to have AWS security credentials or permissions.
#### Required Parameters
- **Bucket**
- **Key**
- **Expires in**
- **Content Type**
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
:::info
We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**.
:::
</div>