Updated on
Jan 7, 2025
Note: This article covers AWS S3 Destination setup process. This guide doesn’t cover the DataPrep setup for AWS S3.
You can learn how to extract data from AWS S3 Data source here.
AWS S3 is an object storage service that offers companies industry-leading scalability, data availability, security, and performance. This means that companies of all sizes can use it to store and protect data for a range of use cases, no matter the amount of data available.
Follow our setup guide to connect AWS S3 to Improvado.
Choose a server-side encryption option:
Important: Make sure to provide your AWS S3 bucket information by following our guide.
Enable the following permissions for your AWS S3 bucket:
On the AWS S3 connection page, fill in the following fields:
{%dropdown-body name="bucket-name"%}
{%dropdown-end%}
{%dropdown-body name="folder"%}
A forward slash (```/``` ) means that you need to enter the root path.
{%dropdown-end%}
{%dropdown-body name="partition-by"%}
Partition is the way of splitting data for uploading to the file.
{%dropdown-end%}
{%dropdown-body name="use-load-by-account"%}
If enabled, the File name field must include ```{{account}}``` variable.
You must enable this field if you want to use a specific account for data load.
{%dropdown-end%}
There are four different ways to provide your credentials that you can choose depending on your security requirements and the type of selected Server-Side Encryption:
Connection option | Self service | SSE-S3 | SSE-KMS (AWS managed key) | KMS (Customer managed key) | No storage encryption |
---|---|---|---|---|---|
Option #1 (Create a user in your AWS account for Improvado) | + | + | + | + | + |
Option #2 (Share Read and Write access with Improvado’s AWS account) | - | + | - | + | + |
Option #3 (Share access with Improvado account using our Canonical ID) | - | + | - | - | + |
Option #4 (Provide access via Cross-Account AWS IAM Role Chaining) | - | + | + | + | + |
{%docs-informer info%}
Available for SSE-S3 and SSE-KMS (with AWS-managed and customer-managed keys) only.
{%docs-informer-end%}
Create a user in your AWS account for Improvado and enter the following information in Complete configuration:
Make sure to enable the following permissions for your AWS S3 bucket.
{%docs-informer info%}
Available for SSE-S3 and SSE-KMS (with customer-managed keys) only.
{%docs-informer-end%}
Important: If you’re gonna use this option - notify our Support or your CSM about it and we will create specific users to load data and provide support. We’ll create a Destination connection for you.
Share Read and Write access with Improvado’s AWS Account ID:
{
"Id": "Policy1569503459134",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3Access",
"Action": [
"s3:GetObject*",
"s3:DeleteObject",
"s3:ListBucket*",
"s3:PutObject*",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Principal": {
"AWS": [
"716309063777"
]
}
}
]
}
{%docs-informer info title="Important"%}
If you use SSE-KMS, you have to share access to your KMS key using one of the methods below:
{%docs-informer-end%}
Note: AWS allows sharing only customer-managed KMS keys (keys that you created). The AWS-managed KMS key (the key that was created by AWS automatically) cannot be shared.
The KMS Key ID is required.
The KMS Key ID is required.
{
"Version": "2012-10-17",
"Statement":
[
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789098:root"
},
"Action": "kms:*",
"Resource": "*"
}
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::716309063777:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}
]
}
Provide our Support Team or your CSM with the following information:
Our team will create specific users to load data and provide support.
{%docs-informer info%}
Available for SSE-S3 only.
{%docs-informer-end%}
Important: If you’re gonna use this option - notify our Support or your CSM about it and we will create specific users to load data and provide support. We’ll create a Destination connection for you.
Share access with the Improvado account using our Canonical ID:
Provide our Support Team or your CSM with the following information:
Our team will create specific users to load data and provide support.
This option uses the chain of AWS IAM roles: Improvado role assumes the customer’s role, which has access to S3 and (optionally) to KMS.
Supported encryption types:
Implementation steps:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "Improvado role ARN"
},
"Action": "sts:AssumeRole"
}
]
}
{
"Statement": [
{
"Sid": "RWPolicy",
"Action": [
"s3:GetObject*",
"s3:DeleteObject",
"s3:PutObject*"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::your-bucket-name/*"
},
{
"Sid": "ListPolicy",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::your-bucket-name"
},
{
"Sid": "OptionalKMSUsagePolicy",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:region:123456789:key/111aa2bb-2c33dd"
}
],
"Version": "2012-10-17"
}
Possible parameters:
```/{{workspace_id}}/{{workspace_title}}/{{data_source}}/{{data_table_title}}/{{report_type}}/{{filename}}/{{account}}/{{YYYY}}/{{MM}}/{{DD}}```
```/{{workspace_id}}/{{workspace_title}}/{{data_source}}/{{report_type}}/{{YYYY}}/{{MM}}/{{DD_today}}``` will be resolved to ```/ws1/main_group/ds1/rt1/2024/06/18```
Data structure of S3 storage by Improvado. You can create a request to the Support Team to add support for different folder structures in a bucket.
Possible formats:
Possible parameters:
```{{filename}}-{{account}}-{{YYYY}}-{{MM}}-{{DD}}```
IMPORTANT: you cannot use ```{{DD}}``` for partition by month
Also, you can use “_” instead of “-” or do not use any symbols at all, for example:
Possible delimiters that can separate data in your file:
Possible ways of splitting data:
Improvado team is always happy to help with any other questions you might have! Send us an email.
Contact your Customer Success Manager or raise a request in Improvado Service Desk.