cancel
Showing results forย 
Search instead forย 
Did you mean:ย 
Administration & Architecture
Explore discussions on Databricks administration, deployment strategies, and architectural best practices. Connect with administrators and architects to optimize your Databricks environment for performance, scalability, and security.
cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Cross-region S3 reads fail with 400 Bad Request on Serverless

harsh120
New Contributor II

Problem
We read Delta tables from an S3 bucket in af-south-1 (opt-in region) from a Databricks workspace in ap-south-1. Queries work on a classic cluster but fail on Serverless / SQL warehouse with the same data and the same IAM instance profile.

Same-region reads (bucket in ap-south-1) work on both classic and Serverless.

The error

getFileStatus on s3a://<BUCKET>/prod/<schema>/master-data/<table>/_delta_log:
com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request;
request: HEAD https://<BUCKET>.s3.af-south-1.amazonaws.com prod/<schema>/master-data/<table>/_delta_log
Hadoop 3.4.2, aws-sdk-java/1.12.681
(Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request)

400 Bad Request with no proper S3 error code (e.g. AccessDenied, InvalidArgument) โ€” similar to this thread about eu-west-1 โ†’ af-south-1 cross-region reads.

Setup

  • Workspace region: ap-south-1
  • Bucket region: af-south-1 (account opt-in enabled)
  • Catalog: hive_metastore (not Unity Catalog for these tables)
  • Auth: Instance profile on classic cluster (arn:aws:iam::<account>:role/<role-name>)
  • UC: No external location registered for the cross-region bucket
  • Serverless network policy: Default โ€” โ€œAllow access to all destinationsโ€

Reproduces by compute type

Compute DBR / runtime Cross-region (af-south-1) Same-region (ap-south-1)
Classic cluster
16.4 LTS
Works
Works
Serverless / SQL warehouse
Serverless
400
Works
So this looks specific to Serverless + cross-region opt-in region, not IAM or missing data (_delta_log exists in S3).

What we tried

  1. Bucket policy on the cross-region bucket (same pattern as the working in-region bucket) โ€” no change on Serverless
  2. SET spark.hadoop.fs.s3a.bucket.<BUCKET>.endpoint in SQL editor โ€” INVALID_PARAMETER_VALUE: not a supported SQL configuration parameter
  3. CREATE STORAGE CREDENTIAL โ€” [PARSE_SYNTAX_ERROR] (UC DDL not available in our SQL environment)
  4. Checked Serverless network policy โ€” already allow all destinations (so not a restricted egress policy)

On classic cluster, cross-region reads work without extra Spark S3A config.

What we ruled out

  • Missing _delta_log / corrupt Delta files (verified in S3)
  • IAM permissions (classic cluster reads same paths with same instance profile)
  • Restrictive Serverless network policy (open / allow-all)
  • Single-table issue (all tables on the cross-region bucket fail on Serverless)

Proof itโ€™s the region pair

  • Tables on in-region bucket (ap-south-1) โ†’ Serverless OK
  • Tables on cross-region bucket (af-south-1) โ†’ Serverless 400
  • Same tables on classic cluster (DBR 16.4 LTS) โ†’ OK

Question
The eu-west-1 โ†’ af-south-1 thread suggests SigV4 signing region mismatch and fs.s3a.bucket <BUCKET>.endpoint / endpoint.region as a classic-cluster workaround โ€” but Serverless blocks spark.hadoop.fs.s3a.* configs.

Is cross-region S3 access to af-south-1 from Serverless in ap-south-1 supported for hive_metastore external Delta tables? If yes, whatโ€™s the supported configuration (UC external location, service credential, something else)?

If anyone has hit this pattern โ€” classic works, Serverless 400 on opt-in region bucket โ€” weโ€™d appreciate any workaround or escalation path.

0 REPLIES 0