<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Cross-region S3 reads fail with 400 Bad Request on Serverless in Administration &amp; Architecture</title>
    <link>https://community.databricks.com/t5/administration-architecture/cross-region-s3-reads-fail-with-400-bad-request-on-serverless/m-p/159043#M5334</link>
    <description>&lt;P&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;BR /&gt;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.&lt;/P&gt;&lt;P&gt;Same-region reads (bucket in ap-south-1) work on both classic and Serverless.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The error&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;getFileStatus on s3a://&amp;lt;BUCKET&amp;gt;/prod/&amp;lt;schema&amp;gt;/master-data/&amp;lt;table&amp;gt;/_delta_log:
com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request;
request: HEAD https://&amp;lt;BUCKET&amp;gt;.s3.af-south-1.amazonaws.com prod/&amp;lt;schema&amp;gt;/master-data/&amp;lt;table&amp;gt;/_delta_log
Hadoop 3.4.2, aws-sdk-java/1.12.681
(Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request)&lt;/LI-CODE&gt;&lt;P&gt;400 Bad Request with no proper S3 error code (e.g. AccessDenied, InvalidArgument) — similar to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.databricks.com/t5/data-engineering/cross-region-s3-reads-suddenly-fail-with-400-bad-request-eu-west/td-p/157229" target="_blank" rel="noopener noreferrer"&gt;this thread&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;about eu-west-1 → af-south-1 cross-region reads.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Setup&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Workspace region: ap-south-1&lt;/LI&gt;&lt;LI&gt;Bucket region: af-south-1 (account opt-in enabled)&lt;/LI&gt;&lt;LI&gt;Catalog: hive_metastore (not Unity Catalog for these tables)&lt;/LI&gt;&lt;LI&gt;Auth: Instance profile on classic cluster (arn:aws:iam::&amp;lt;account&amp;gt;:role/&amp;lt;role-name&amp;gt;)&lt;/LI&gt;&lt;LI&gt;UC: No external location registered for the cross-region bucket&lt;/LI&gt;&lt;LI&gt;Serverless network policy: Default — “Allow access to all destinations”&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;Reproduces by compute type&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;Compute DBR / runtime Cross-region (af-south-1) Same-region (ap-south-1) &lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV class=""&gt;Classic cluster&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;16.4 LTS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Works&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;Works&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV class=""&gt;Serverless / SQL warehouse&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;Serverless&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;400&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;Works&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;So this looks specific to Serverless + cross-region opt-in region, not IAM or missing data (_delta_log exists in S3).&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;What we tried&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Bucket policy on the cross-region bucket (same pattern as the working in-region bucket) — no change on Serverless&lt;/LI&gt;&lt;LI&gt;SET spark.hadoop.fs.s3a.bucket.&amp;lt;BUCKET&amp;gt;.endpoint in SQL editor — INVALID_PARAMETER_VALUE: not a supported SQL configuration parameter&lt;/LI&gt;&lt;LI&gt;CREATE STORAGE CREDENTIAL — [PARSE_SYNTAX_ERROR] (UC DDL not available in our SQL environment)&lt;/LI&gt;&lt;LI&gt;Checked Serverless network policy — already allow all destinations (so not a restricted egress policy)&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;On classic cluster, cross-region reads work without extra Spark S3A config.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What we ruled out&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Missing _delta_log / corrupt Delta files (verified in S3)&lt;/LI&gt;&lt;LI&gt;IAM permissions (classic cluster reads same paths with same instance profile)&lt;/LI&gt;&lt;LI&gt;Restrictive Serverless network policy (open / allow-all)&lt;/LI&gt;&lt;LI&gt;Single-table issue (all tables on the cross-region bucket fail on Serverless)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Proof it’s the region pair&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Tables on in-region bucket (ap-south-1) → Serverless OK&lt;/LI&gt;&lt;LI&gt;Tables on cross-region bucket (af-south-1) → Serverless 400&lt;/LI&gt;&lt;LI&gt;Same tables on classic cluster (DBR 16.4 LTS) → OK&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Question&lt;/STRONG&gt;&lt;BR /&gt;The eu-west-1 → af-south-1 thread suggests SigV4 signing region mismatch and fs.s3a.bucket &amp;lt;BUCKET&amp;gt;.endpoint / endpoint.region as a classic-cluster workaround — but Serverless blocks spark.hadoop.fs.s3a.* configs.&lt;/P&gt;&lt;P&gt;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)?&lt;/P&gt;&lt;P&gt;If anyone has hit this pattern — classic works, Serverless 400 on opt-in region bucket — we’d appreciate any workaround or escalation path.&lt;/P&gt;</description>
    <pubDate>Mon, 15 Jun 2026 13:26:07 GMT</pubDate>
    <dc:creator>harsh120</dc:creator>
    <dc:date>2026-06-15T13:26:07Z</dc:date>
    <item>
      <title>Cross-region S3 reads fail with 400 Bad Request on Serverless</title>
      <link>https://community.databricks.com/t5/administration-architecture/cross-region-s3-reads-fail-with-400-bad-request-on-serverless/m-p/159043#M5334</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;BR /&gt;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.&lt;/P&gt;&lt;P&gt;Same-region reads (bucket in ap-south-1) work on both classic and Serverless.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The error&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;getFileStatus on s3a://&amp;lt;BUCKET&amp;gt;/prod/&amp;lt;schema&amp;gt;/master-data/&amp;lt;table&amp;gt;/_delta_log:
com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request;
request: HEAD https://&amp;lt;BUCKET&amp;gt;.s3.af-south-1.amazonaws.com prod/&amp;lt;schema&amp;gt;/master-data/&amp;lt;table&amp;gt;/_delta_log
Hadoop 3.4.2, aws-sdk-java/1.12.681
(Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request)&lt;/LI-CODE&gt;&lt;P&gt;400 Bad Request with no proper S3 error code (e.g. AccessDenied, InvalidArgument) — similar to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://community.databricks.com/t5/data-engineering/cross-region-s3-reads-suddenly-fail-with-400-bad-request-eu-west/td-p/157229" target="_blank" rel="noopener noreferrer"&gt;this thread&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;about eu-west-1 → af-south-1 cross-region reads.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Setup&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Workspace region: ap-south-1&lt;/LI&gt;&lt;LI&gt;Bucket region: af-south-1 (account opt-in enabled)&lt;/LI&gt;&lt;LI&gt;Catalog: hive_metastore (not Unity Catalog for these tables)&lt;/LI&gt;&lt;LI&gt;Auth: Instance profile on classic cluster (arn:aws:iam::&amp;lt;account&amp;gt;:role/&amp;lt;role-name&amp;gt;)&lt;/LI&gt;&lt;LI&gt;UC: No external location registered for the cross-region bucket&lt;/LI&gt;&lt;LI&gt;Serverless network policy: Default — “Allow access to all destinations”&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;Reproduces by compute type&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;Compute DBR / runtime Cross-region (af-south-1) Same-region (ap-south-1) &lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV class=""&gt;Classic cluster&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;16.4 LTS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;Works&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;Works&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV class=""&gt;Serverless / SQL warehouse&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;Serverless&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;400&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;TD&gt;&lt;DIV class=""&gt;Works&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;So this looks specific to Serverless + cross-region opt-in region, not IAM or missing data (_delta_log exists in S3).&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;What we tried&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Bucket policy on the cross-region bucket (same pattern as the working in-region bucket) — no change on Serverless&lt;/LI&gt;&lt;LI&gt;SET spark.hadoop.fs.s3a.bucket.&amp;lt;BUCKET&amp;gt;.endpoint in SQL editor — INVALID_PARAMETER_VALUE: not a supported SQL configuration parameter&lt;/LI&gt;&lt;LI&gt;CREATE STORAGE CREDENTIAL — [PARSE_SYNTAX_ERROR] (UC DDL not available in our SQL environment)&lt;/LI&gt;&lt;LI&gt;Checked Serverless network policy — already allow all destinations (so not a restricted egress policy)&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;On classic cluster, cross-region reads work without extra Spark S3A config.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What we ruled out&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Missing _delta_log / corrupt Delta files (verified in S3)&lt;/LI&gt;&lt;LI&gt;IAM permissions (classic cluster reads same paths with same instance profile)&lt;/LI&gt;&lt;LI&gt;Restrictive Serverless network policy (open / allow-all)&lt;/LI&gt;&lt;LI&gt;Single-table issue (all tables on the cross-region bucket fail on Serverless)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Proof it’s the region pair&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Tables on in-region bucket (ap-south-1) → Serverless OK&lt;/LI&gt;&lt;LI&gt;Tables on cross-region bucket (af-south-1) → Serverless 400&lt;/LI&gt;&lt;LI&gt;Same tables on classic cluster (DBR 16.4 LTS) → OK&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Question&lt;/STRONG&gt;&lt;BR /&gt;The eu-west-1 → af-south-1 thread suggests SigV4 signing region mismatch and fs.s3a.bucket &amp;lt;BUCKET&amp;gt;.endpoint / endpoint.region as a classic-cluster workaround — but Serverless blocks spark.hadoop.fs.s3a.* configs.&lt;/P&gt;&lt;P&gt;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)?&lt;/P&gt;&lt;P&gt;If anyone has hit this pattern — classic works, Serverless 400 on opt-in region bucket — we’d appreciate any workaround or escalation path.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jun 2026 13:26:07 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/cross-region-s3-reads-fail-with-400-bad-request-on-serverless/m-p/159043#M5334</guid>
      <dc:creator>harsh120</dc:creator>
      <dc:date>2026-06-15T13:26:07Z</dc:date>
    </item>
  </channel>
</rss>

