Configuring S3

On this page:

Securing S3 Access for Warehouse Storage

To access Tabular tables securely, you must configure an AWS IAM role with appropriate permissions to the S3 bucket used to store the table’s data and grant Tabular’s authorization service the ability to assume the role.

IAM Policy

Tabular requires the following actions on an S3 bucket for warehouse storage:

  • s3:ListBucket
  • s3:GetBucketLocation
  • s3:GetBucketNotification
  • s3:PutBucketNotification
  • s3:GetObject
  • s3:PutObject
  • s3:PutObjectAcl
  • s3:DeleteObject
  • s3:AbortMultipartUpload

Example IAM policy (substitute <s3-bucket-name> with your S3 bucket name)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:GetBucketNotification",
        "s3:PutBucketNotification"
      ],
      "Resource": [
        "arn:aws:s3:::<s3-bucket-name>"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:PutObjectAcl",
        "s3:AbortMultipartUpload"
      ],
      "Resource": [
        "arn:aws:s3:::<s3-bucket-name>/*"
      ]
    }
  ]
}

IAM Role

When creating the IAM role, use the following settings:

  • Trusted Entity Type: AWS Account
  • AWS Account ID: 237881912361
  • External ID: <user-defined-value>

When creating a warehouse in the Tabular app, a random UUID is generated as a suggested external ID, but this can be any arbitrary string value. See AWS documentation for more details.

Permission Policies: See IAM Policy

Example Trust Policy (for the trusted entities section):

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::237881912361:root"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:TagSession"
            ],
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": "<user-defined-value>"
                },
                "ArnLike": {
                    "aws:PrincipalArn": "arn:aws:iam::237881912361:role/TabularSignerServiceRole*"
                }
            }
        }
    ]
}

Inventory Lists

When enabled, Tabular will automatically process raw S3 bucket inventory lists files provided by AWS and load the data into the system.s3_inventory_list table in your Tabular warehouse for convenient access.

Enabling this feature requires creating an S3 bucket inventory configuration and a corresponding event notification to notify Tabular when new inventory files become available.

Inventory Configuration

When creating the S3 bucket inventory configuration, use the following settings:

  • Inventory scope: Include all versions
  • Destination bucket: This account
  • Destination: s3://<s3-bucket-name>/inventory
  • Frequency: Daily
  • Output format: Apache Parquet
  • Status: Enable
  • Additional metadata fields: Select ALL

Substitute <s3-bucket-name> with your S3 bucket name

Event Notification for Inventory Lists

When creating the S3 bucket event notification, use the following settings:

  • Prefix: inventory/
  • Suffix: checksum
  • Event Types: All object create events
  • Destination: SNS topic
  • SNS topic ARN: arn:aws:sns:<region>:237881912361:warehouses-s3-inventory-list-events (replace <region> with the relevant AWS region name – for example, us-west-2, us-east-1, and so on)

Access Logs

When enabled, Tabular will automatically process raw S3 bucket access log files provided by AWS and load the data into the system.s3_access_logs table in your Tabular warehouse for convenient access.

Enabling this feature requires enabling the Server access logging on the bucket and a corresponding event notification to notify Tabular when new access files become available.

Server Access Logging

Set the Server access logging property for the bucket to Enable and set the target bucket to s3://<your-bucket-name>/access_logs/.

Event Notification for Access Logs

When creating the S3 bucket event notification, use the following settings:

  • Prefix: access_logs/
  • Event Types: All object create events
  • Destination: SQS topic
  • SQS topic ARN: arn:aws:sqs:<region>:237881912361:warehouses-s3-access-logs (replace <region> with the relevant AWS region name – for example, us-west-2, us-east-1, and so on)

File Loader

See Initial Setup For File Loader