Overview
The Delta Sharing Reference Server needs credentials to access Delta Lake tables stored on cloud object storage. This guide covers authentication methods for all supported cloud providers.AWS S3
IAM roles, environment variables, or credential files
Azure Blob Storage
Shared key authentication via Hadoop configuration
Azure Data Lake Gen2
Shared key authentication for ADLS Gen2
Google Cloud Storage
Service account credentials
Cloudflare R2
S3-compatible API with access tokens
AWS S3
The server useshadoop-aws to access S3. Table locations in your configuration must use s3a:// URIs (not s3://).
EC2 IAM Metadata Authentication (Recommended)
For servers running on Amazon EC2, the recommended approach is to use IAM roles.Attach Role to EC2 Instance
Attach the IAM role to your EC2 instance through the AWS Console or CLI:
Start the Server
The server automatically queries the EC2 Instance Metadata Service for credentials. No additional configuration needed!
This method is the most secure as credentials are automatically rotated and never stored on disk.
Environment Variables Authentication
For development or non-EC2 deployments, use AWS environment variables:AWS Credentials File
You can also use the standard AWS credentials file (~/.aws/credentials):
Session Tokens (Temporary Credentials)
For temporary credentials with session tokens:Additional S3 Configuration
For advanced S3 configurations, createconf/core-site.xml:
More S3 Authentication Methods
More S3 Authentication Methods
See the hadoop-aws documentation for additional authentication options including:
- Anonymous access
- AssumeRole authentication
- Web identity token authentication
- Custom credential providers
Azure Blob Storage
The server useshadoop-azure to access Azure Blob Storage. Table locations use wasbs:// URIs.
Shared Key Authentication
Get Your Storage Account Key
Find your storage account key in the Azure Portal:
- Navigate to your Storage Account
- Go to Settings > Access keys
- Copy either key1 or key2
Create core-site.xml
Create or edit Replace:
conf/core-site.xml in your server directory:YOUR-ACCOUNT-NAME: Your Azure storage account nameYOUR-ACCOUNT-KEY: The account key from step 1
Multiple Storage Accounts
To configure access to multiple storage accounts:Azure Data Lake Storage Gen2
ADLS Gen2 usesabfss:// URIs and supports shared key authentication.
Shared Key Authentication for ADLS Gen2
Create or editconf/core-site.xml:
Replace
YOUR-ACCOUNT-NAME with your storage account name and YOUR-ACCOUNT-KEY with your account key.OAuth 2.0 Authentication (Advanced)
For OAuth-based authentication, see the hadoop-azure ABFS documentation.Google Cloud Storage
The server supports GCS using service account credentials. Table locations usegs:// URIs.
Service Account Authentication
Create a Service Account
In the Google Cloud Console:
- Go to IAM & Admin > Service Accounts
- Click Create Service Account
- Give it a name like “delta-sharing-server”
- Grant it Storage Object Viewer role (or a custom role with
storage.objects.getandstorage.objects.listpermissions)
Generate a Key File
- Click on the service account
- Go to Keys > Add Key > Create new key
- Choose JSON format
- Download the key file (e.g.,
service-account-key.json)
Set Environment Variable
Point to the service account key file before starting the server:Or in your systemd service file:
Verifying GCS Access
Test that your credentials work:Cloudflare R2
Cloudflare R2 uses an S3-compatible API. Table locations uses3a:// URIs (same as S3).
R2 API Token Authentication
Generate R2 API Token
In the Cloudflare dashboard:
- Go to R2 > Overview
- Click Manage R2 API Tokens
- Click Create API Token
- Set permissions (Read for the server)
- Save the Access Key ID and Secret Access Key
R2 vs S3 Configuration
- Cloudflare R2
- AWS S3
Mixed Cloud Storage
You can share tables from multiple cloud providers in a single server instance:Configuration File Security
Troubleshooting
S3 Access Denied
S3 Access Denied
Symptoms:
AccessDenied or 403 Forbidden errorsSolutions:- Verify IAM permissions include
s3:GetObjectands3:ListBucket - Check bucket policies don’t deny access
- Ensure you’re using
s3a://nots3:// - Verify AWS credentials are correctly set
Azure Authentication Failures
Azure Authentication Failures
Symptoms:
No credentials found or authentication errorsSolutions:- Confirm
core-site.xmlis in theconf/directory - Verify account name and key are correct
- Check that account name in configuration matches the URI
- Ensure no extra spaces in the XML configuration
GCS Permission Issues
GCS Permission Issues
Symptoms:
403 Forbidden or Invalid grant errorsSolutions:- Verify
GOOGLE_APPLICATION_CREDENTIALSenvironment variable is set - Check service account has correct permissions
- Ensure key file is valid JSON and not corrupted
- Confirm service account hasn’t been disabled
R2 Connection Failures
R2 Connection Failures
Symptoms:
Connection refused or Unknown host errorsSolutions:- Verify account ID in endpoint URL is correct
- Check that
fs.s3a.paging.maximumis set to 1000 or less - Ensure R2 API token has read permissions
- Confirm endpoint URL format:
https://{account-id}.r2.cloudflarestorage.com
Testing Your Configuration
After configuring cloud storage authentication, test it:Next Steps
Configure Authorization
Set up bearer tokens and secure your server
Start the Server
Run the server with your configuration
Create Profile Files
Generate profile files for recipients
Test with Clients
Access shared data with client libraries