<?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 Serverless compute returns 403 on S3 buckets in the account-regional namespace in Get Started Discussions</title>
    <link>https://community.databricks.com/t5/get-started-discussions/serverless-compute-returns-403-on-s3-buckets-in-the-account/m-p/169224#M12133</link>
    <description>&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;&lt;U&gt;SUMMARY&lt;/U&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Serverless SQL warehouses and serverless notebook/jobs compute cannot read S3 buckets&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;created in the AWS account-regional namespace (names ending -&lt;/SPAN&gt;&lt;SPAN&gt;{accountId}&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;{region}&lt;/SPAN&gt;&lt;SPAN&gt;-an).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Classic compute reads the same buckets through the same IAM role without trouble. The&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;failure is a 403 Forbidden with a null S3 request ID, raised by the bundled&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;aws-sdk-java/1.12.681.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Measured across two days, same region, same role, same credential, same file, with the r&lt;/SPAN&gt;&lt;SPAN&gt;eads interleaved seconds apart:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Global namespace buckets:&lt;/STRONG&gt; 15 of 15 reads succeeded&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Account-regional namespace buckets:&lt;/STRONG&gt; 0 of 14 reads succeeded&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;U&gt;&lt;STRONG&gt;ENVIRONMENT&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Cloud:&lt;/STRONG&gt; AWS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Workspace and UC metastore:&lt;/STRONG&gt; ap-southeast-1 (Singapore)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Affected compute:&lt;/STRONG&gt; Serverless SQL warehouse (PRO, 2X-Small),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;serverless notebook/jobs compute&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Unaffected compute:&lt;/STRONG&gt; Classic job clusters,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;non-serverless PRO SQL warehouse&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Client named in errors:&lt;/STRONG&gt; Hadoop 3.5.0, aws-sdk-java/1.12.681&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Storage access:&lt;/STRONG&gt; Unity Catalog storage credential over a cross-account&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;IAM role, external locations, managed and external tables&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;U&gt;&lt;STRONG&gt;THE SYMPTOM&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Any serverless read of an object in an account-regional bucket fails at the first&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;EM&gt;getFileStatus&lt;/EM&gt; call:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;[UNAUTHORIZED_ACCESS] Unauthorized access:
s3://my-bucket-ACCOUNTID-ap-southeast-1-an/bronze/.../_delta_log:
getFileStatus on s3://my-bucket-ACCOUNTID-ap-southeast-1-an/bronze/.../_delta_log:
shaded.databricks.awssdk.com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden;
request: HEAD https://my-bucket-ACCOUNTID-ap-southeast-1-an.s3-ap-southeast-1.amazonaws.com
Hadoop 3.5.0, aws-sdk-java/1.12.681 ...
credentials-provider: ...BasicSessionCredentials
credential-header: AWS4-HMAC-SHA256 Credential=ASIA...../20260919/ap-southeast-1/s3/aws4_request
signature-present: true
(Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden;
Request ID: null; S3 Extended Request ID: null; Proxy: 192.168.200.20)
SQLSTATE: 42501&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Two details are worth noting immediately.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;1. Request ID: null&lt;/STRONG&gt;. A genuine IAM denial from S3 returns a real request ID. We have one in&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;our records from a deliberately under-permissioned probe. A null request ID is the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;signature of this problem and the fastest way to tell the two apart.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;2. signature-present: true&lt;/STRONG&gt;, with a real ASIA session credential correctly scoped to the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;region. Credentials were vended and the request was signed. This is not a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;missing-credential problem.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;FINDING 1: ACCOUNT-REGIONAL BUCKETS FAIL, GLOBAL-NAMESPACE BUCKETS SUCCEED&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;AWS lets you create a general-purpose bucket in either the shared global namespace or your&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;account-regional namespace. The latter requires the name to end -&lt;/SPAN&gt;&lt;SPAN&gt;{accountId}&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;{region}&lt;/SPAN&gt;&lt;SPAN&gt;-an&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;and is created with --bucket-namespace account-regional. It is a security feature: the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;name can only ever be claimed by your account, so it cannot be re-registered by a stranger&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;after deletion.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Serverless cannot read them.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;Evidence:&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Two buckets created 90 seconds apart in ap-southeast-1, holding a byte-identical file,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;accessed through the same IAM role, the same Unity Catalog storage credential, and the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;same external-location and volume mechanism. The only difference is the namespace.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Measured across two separate days, on cold warehouse sessions, with the two reads&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;interleaved seconds apart:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Global namespace:&lt;/STRONG&gt; 15 of 15 successful reads&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Account-regional namespace:&lt;/STRONG&gt; 0 of 14 successful reads&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Both credentials were tested against both buckets, in both directions, and the result&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;never moved. The same holds for real Delta tables, not just probe files. A catalog whose&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;managed location is a global-namespace bucket serves a 1,634-row Delta table to serverless&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;without issue, while the identical data in an account-regional bucket returns 403 in the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;same session.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;U&gt;&lt;STRONG&gt;What this is not&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;We eliminated these by test, not by argument.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;IAM permissions. Classic compute reads and writes the same bucket through the same role.&amp;nbsp;&lt;/SPAN&gt;The two bucket policies involved are structurally identical, same actions including s3:ListBucket, differing only in the bucket ARN.&lt;/LI&gt;&lt;LI&gt;The storage credential. Two different UC storage credentials, both over the same role, give identical results on both buckets. Neither credential is impaired: both succeed elsewhere.&lt;/LI&gt;&lt;LI&gt;Unity Catalog configuration. A brand-new external location, volume, schema and catalog reproduce it. A brand-new external location over a working bucket succeeds. Object age is not a factor.&lt;/LI&gt;&lt;LI&gt;Bucket configuration. Identical AES256 default encryption, no bucket policy, BucketOwnerEnforced, identical public access block on both.&lt;/LI&gt;&lt;LI&gt;Workspace identity. Reproduced on a second, independently created workspace with its own VPC.&lt;/LI&gt;&lt;LI&gt;Access method. Fails through external tables, managed tables and UC volumes alike.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;FINDING 2: WHY ONE REGION IS UNAFFECTED, AND THE SDK ANGLE&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;ap-southeast-5 (Malaysia, GA August 2024) is unaffected even for account-regional buckets.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Same account, same role, same credential. It simply works, and still does.&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;The bundled client named in every error is aws-sdk-java/1.12.681 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Extracting&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;com/amazonaws/partitions/endpoints.json from that exact artifact shows its partition&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;metadata is dated 2024-03-15, five months before ap-southeast-5 became generally&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;available, and the region is absent from it entirely.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;That gives a coherent, testable hypothesis: regions known to the pinned SDK route through&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;a legacy client path that does not handle account-regional bucket addressing, and regions&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;unknown to it fall through to a different path that does. The AWS SDK for Java v1 final&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;release (1.12.797, December 2025) does contain ap-southeast-5, so if that is the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;mechanism, refreshing the dependency would move ap-southeast-5 into the failing set rather&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;than fixing anything.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;We cannot verify this from outside. We cannot inspect which client handles the request,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;and no supported Spark configuration on serverless lets us influence the storage path. We&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;offer it as a starting point, not a conclusion. The measured facts are that one region&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;works, others fail, and the difference tracks that SDK release date.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;CONFOUNDING FACTORS, PLEASE READ BEFORE REPRODUCING&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;These cost us several wrong conclusions.&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;1. A newly created S3 bucket is unreadable from serverless for up to about 2 hours&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Regardless of namespace, and with the identical 403. We measured a brand-new bucket&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;failing at 2 minutes, 27 minutes and 42 minutes old, then succeeding consistently from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;about 2 hours.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Create two buckets, test them immediately, and both&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;fail, leading to the confident and wrong conclusion that namespace is irrelevant. Three of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;our own experiments were voided this way. It is consistent with S3 virtual-hosted-style&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;DNS propagation, given the failing requests use the legacy s3-REGION.amazonaws.com form.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Wait at least 2 hours after bucket creation before drawing any conclusion.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;2. Control-plane credential validation passes regardless&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Validating the storage credential returns READ, LIST and PATH_EXISTS all PASS on locations&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;that serverless compute cannot read. Validation exercises the role without the compute&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;session scoped-down policy. A green validation is not evidence.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;3. Direct file queries swallow the real error&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Querying a path directly returns a generic FAILED_TO_CREATE_PLAN_FOR_DIRECT_QUERY. Use an&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;external table, a managed table, or a UC volume. Otherwise the underlying S3 exception&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;never surfaces and you cannot tell this apart from anything else.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;4. Single trials are not enough&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;We once observed a global-namespace bucket succeed twice and then fail 90 seconds later,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;at the tail of the propagation window above. Run at least three trials per configuration&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;and treat any inconsistency as a result in itself.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;5. S3 server access logging will not answer whether the request reached S3&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;We enabled it and planted a known-good control request. The control never appeared in the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;delivered logs either, so the absence of the failing requests proves nothing. Server access&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;logging is best-effort by design. Use CloudTrail S3 data events if you need this question&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;answered.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;6. Unity Catalog itself is fine&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;Listing catalogs, schemas, tables, external locations and storage credentials all work on&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;serverless, and lineage is captured normally. Only the reading of objects out of S3 fails.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Do not go hunting a Unity Catalog misconfiguration.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;REPRODUCTION&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;Step 1. Create two buckets that differ only in namespace.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;ACCOUNT_ID=your-aws-account-id
REGION=ap-southeast-1
AN=repro-$ACCOUNT_ID-$REGION-an
GL=repro-global-$ACCOUNT_ID

aws s3api create-bucket --bucket $AN --region $REGION \
--create-bucket-configuration LocationConstraint=$REGION \
--bucket-namespace account-regional

aws s3api create-bucket --bucket $GL --region $REGION \
--create-bucket-configuration LocationConstraint=$REGION&lt;/LI-CODE&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Any region that predates roughly March 2024 should show the behaviour.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;SPAN&gt;Step 2. Put an identical file in each.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;printf 'id,label\n1,test\n' &amp;gt; /tmp/c.csv
aws s3 cp /tmp/c.csv s3://$AN/files/c.csv --region $REGION
aws s3 cp /tmp/c.csv s3://$GL/files/c.csv --region $REGION&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Step 3. Grant your existing Unity Catalog role read access to both buckets: s3:GetObject&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;on the object ARN, plus s3:ListBucket and s3:GetBucketLocation on the bucket ARN.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Step 4. In Unity Catalog, create one external location per bucket using the same storage&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;credential, and an EXTERNAL volume over each.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Step 5. Wait at least 2 hours. Then, on a serverless SQL warehouse or serverless notebook:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;SELECT count(*) FROM read_files('/Volumes/CAT/SCH/global_vol/', format =&amp;gt; 'csv');
SELECT count(*) FROM read_files('/Volumes/CAT/SCH/account_regional_vol/', format =&amp;gt; 'csv');&lt;/LI-CODE&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;The first returns 1. The second returns 403 with Request ID: null.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Control:&lt;/STRONG&gt; point the same two queries at a non-serverless warehouse or a classic cluster.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Both succeed. That is what localises the fault to serverless compute rather than to IAM,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;the bucket, or Unity Catalog.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;WORKAROUNDS WHILE THIS IS UNPATCHED&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;&lt;EM&gt;1. Use a global-namespace bucket for anything serverless must read.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;This is the only real fix available to customers today. Verified end to end: a catalog with&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;its managed location on a global-namespace bucket in the same region serves Delta tables to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;both serverless SQL warehouses and serverless notebooks, with data loaded and written from&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;serverless too.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;The cost is real and worth stating plainly. The account-regional namespace exists so that a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;bucket name can never be claimed by another AWS account. Moving to the global namespace&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;gives that up. The namespace also cannot be changed in place, so this is a data migration,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;not a rename.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;&lt;STRONG&gt;2. Use classic compute for existing account-regional buckets.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Classic job clusters and non-serverless PRO SQL warehouses read them without trouble. The&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;trade-offs are minutes rather than seconds to start, a 10-minute minimum idle timeout on&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;non-serverless warehouses, and cluster management you may not want.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;One trap worth knowing: a workflow task that omits its job-cluster setting silently falls&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;back to serverless and then fails at run time. Assert the setting in whatever you use to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;define jobs.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;&lt;EM&gt;3. Keep an eye on fine-grained access control.&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Databricks documents a dedicated classic cluster as delegating row filters, column masks&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;and dynamic views to the workspace serverless compute. If that path applies, a table with a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;row filter could fail on a classic cluster that otherwise works. We have no such filters and&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;have not tested this. Flagging it because classic compute is otherwise the safe ground.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;A SEPARATE ISSUE WE HIT ALONG THE WAY: TRIAL ACCOUNTS AND SAME-REGION S3&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Independent of the above, and worth recording because the two are easy to conflate. We lost&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;time doing exactly that.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;While our account was on a trial, serverless could not read any customer bucket in the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;workspace own region, global-namespace buckets included. Cross-region buckets were&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;unaffected:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;ap-southeast-5, account-regional, customer bucket A -&amp;gt; works
ap-southeast-5, global, customer bucket B (new) -&amp;gt; works
ap-southeast-1, global, customer bucket C -&amp;gt; 403
ap-southeast-1, account-regional, customer bucket D -&amp;gt; 403&lt;/LI-CODE&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Bucket C, a global-namespace bucket in the metastore own region, returned 403 during the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;trial. After the trial concluded, the same bucket, unchanged, reads reliably. Bucket D still&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;fails, which is Finding 1.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Databricks documents serverless as reaching same-region S3 through a Databricks-owned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;private gateway, and different-region S3 out through NAT. A trial-level network restriction&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;on the private gateway path would produce exactly the table above while leaving the NAT path&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;alone. Two staff posts on this forum state that trial accounts carry network restrictions&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;regardless of configured policy settings, and the serverless SQL warehouse requirements&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;state the account must not be on a free trial.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;This is inference, not measurement. We cannot put the account back on trial to test it. The&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;before and after on bucket C is measured, and the trial end date is confirmed in writing.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;The mechanism is not.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Note the shape carefully. It is not that trial accounts cannot use customer S3 buckets.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Cross-region customer buckets worked fine throughout. Stating it too broadly sent us chasing&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;the wrong mechanism for days.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;WHAT WOULD HELP FROM DATABRICKS&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;1. &lt;/SPAN&gt;&lt;SPAN&gt;Confirm whether account-regional namespace buckets are supported by serverless compute.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;If not, this belongs in the documented limitations. The namespace is a first-class AWS S3&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;feature and nothing currently warns against it.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;2. &lt;/SPAN&gt;&lt;SPAN&gt;Identify the component returning the 403. The request is signed, the credential is valid,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;and the same address answers correctly when the request comes from other compute, but the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;response carries no S3 request ID.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;3. &lt;/SPAN&gt;&lt;SPAN&gt;Comment on the SDK hypothesis in Finding 2, which we cannot test from outside.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;4. &lt;/SPAN&gt;&lt;SPAN&gt;Confirm whether a trial account restricts same-region serverless S3 access. If it does,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;that belongs in the published trial limitations. We could find nothing stating it.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;</description>
    <pubDate>Sun, 20 Sep 2026 09:10:34 GMT</pubDate>
    <dc:creator>alexgfowler_ld</dc:creator>
    <dc:date>2026-09-20T09:10:34Z</dc:date>
    <item>
      <title>Serverless compute returns 403 on S3 buckets in the account-regional namespace</title>
      <link>https://community.databricks.com/t5/get-started-discussions/serverless-compute-returns-403-on-s3-buckets-in-the-account/m-p/169224#M12133</link>
      <description>&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;&lt;U&gt;SUMMARY&lt;/U&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Serverless SQL warehouses and serverless notebook/jobs compute cannot read S3 buckets&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;created in the AWS account-regional namespace (names ending -&lt;/SPAN&gt;&lt;SPAN&gt;{accountId}&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;{region}&lt;/SPAN&gt;&lt;SPAN&gt;-an).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Classic compute reads the same buckets through the same IAM role without trouble. The&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;failure is a 403 Forbidden with a null S3 request ID, raised by the bundled&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;aws-sdk-java/1.12.681.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Measured across two days, same region, same role, same credential, same file, with the r&lt;/SPAN&gt;&lt;SPAN&gt;eads interleaved seconds apart:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Global namespace buckets:&lt;/STRONG&gt; 15 of 15 reads succeeded&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Account-regional namespace buckets:&lt;/STRONG&gt; 0 of 14 reads succeeded&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;U&gt;&lt;STRONG&gt;ENVIRONMENT&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Cloud:&lt;/STRONG&gt; AWS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Workspace and UC metastore:&lt;/STRONG&gt; ap-southeast-1 (Singapore)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Affected compute:&lt;/STRONG&gt; Serverless SQL warehouse (PRO, 2X-Small),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;serverless notebook/jobs compute&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Unaffected compute:&lt;/STRONG&gt; Classic job clusters,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;non-serverless PRO SQL warehouse&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Client named in errors:&lt;/STRONG&gt; Hadoop 3.5.0, aws-sdk-java/1.12.681&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Storage access:&lt;/STRONG&gt; Unity Catalog storage credential over a cross-account&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;IAM role, external locations, managed and external tables&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;U&gt;&lt;STRONG&gt;THE SYMPTOM&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Any serverless read of an object in an account-regional bucket fails at the first&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;EM&gt;getFileStatus&lt;/EM&gt; call:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;[UNAUTHORIZED_ACCESS] Unauthorized access:
s3://my-bucket-ACCOUNTID-ap-southeast-1-an/bronze/.../_delta_log:
getFileStatus on s3://my-bucket-ACCOUNTID-ap-southeast-1-an/bronze/.../_delta_log:
shaded.databricks.awssdk.com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden;
request: HEAD https://my-bucket-ACCOUNTID-ap-southeast-1-an.s3-ap-southeast-1.amazonaws.com
Hadoop 3.5.0, aws-sdk-java/1.12.681 ...
credentials-provider: ...BasicSessionCredentials
credential-header: AWS4-HMAC-SHA256 Credential=ASIA...../20260919/ap-southeast-1/s3/aws4_request
signature-present: true
(Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden;
Request ID: null; S3 Extended Request ID: null; Proxy: 192.168.200.20)
SQLSTATE: 42501&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Two details are worth noting immediately.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;1. Request ID: null&lt;/STRONG&gt;. A genuine IAM denial from S3 returns a real request ID. We have one in&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;our records from a deliberately under-permissioned probe. A null request ID is the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;signature of this problem and the fastest way to tell the two apart.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;2. signature-present: true&lt;/STRONG&gt;, with a real ASIA session credential correctly scoped to the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;region. Credentials were vended and the request was signed. This is not a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;missing-credential problem.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;FINDING 1: ACCOUNT-REGIONAL BUCKETS FAIL, GLOBAL-NAMESPACE BUCKETS SUCCEED&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;AWS lets you create a general-purpose bucket in either the shared global namespace or your&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;account-regional namespace. The latter requires the name to end -&lt;/SPAN&gt;&lt;SPAN&gt;{accountId}&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;{region}&lt;/SPAN&gt;&lt;SPAN&gt;-an&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;and is created with --bucket-namespace account-regional. It is a security feature: the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;name can only ever be claimed by your account, so it cannot be re-registered by a stranger&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;after deletion.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Serverless cannot read them.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;Evidence:&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Two buckets created 90 seconds apart in ap-southeast-1, holding a byte-identical file,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;accessed through the same IAM role, the same Unity Catalog storage credential, and the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;same external-location and volume mechanism. The only difference is the namespace.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Measured across two separate days, on cold warehouse sessions, with the two reads&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;interleaved seconds apart:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Global namespace:&lt;/STRONG&gt; 15 of 15 successful reads&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Account-regional namespace:&lt;/STRONG&gt; 0 of 14 successful reads&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Both credentials were tested against both buckets, in both directions, and the result&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;never moved. The same holds for real Delta tables, not just probe files. A catalog whose&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;managed location is a global-namespace bucket serves a 1,634-row Delta table to serverless&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;without issue, while the identical data in an account-regional bucket returns 403 in the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;same session.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;U&gt;&lt;STRONG&gt;What this is not&lt;/STRONG&gt;&lt;/U&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;We eliminated these by test, not by argument.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;IAM permissions. Classic compute reads and writes the same bucket through the same role.&amp;nbsp;&lt;/SPAN&gt;The two bucket policies involved are structurally identical, same actions including s3:ListBucket, differing only in the bucket ARN.&lt;/LI&gt;&lt;LI&gt;The storage credential. Two different UC storage credentials, both over the same role, give identical results on both buckets. Neither credential is impaired: both succeed elsewhere.&lt;/LI&gt;&lt;LI&gt;Unity Catalog configuration. A brand-new external location, volume, schema and catalog reproduce it. A brand-new external location over a working bucket succeeds. Object age is not a factor.&lt;/LI&gt;&lt;LI&gt;Bucket configuration. Identical AES256 default encryption, no bucket policy, BucketOwnerEnforced, identical public access block on both.&lt;/LI&gt;&lt;LI&gt;Workspace identity. Reproduced on a second, independently created workspace with its own VPC.&lt;/LI&gt;&lt;LI&gt;Access method. Fails through external tables, managed tables and UC volumes alike.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;FINDING 2: WHY ONE REGION IS UNAFFECTED, AND THE SDK ANGLE&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;ap-southeast-5 (Malaysia, GA August 2024) is unaffected even for account-regional buckets.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Same account, same role, same credential. It simply works, and still does.&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;The bundled client named in every error is aws-sdk-java/1.12.681 &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Extracting&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;com/amazonaws/partitions/endpoints.json from that exact artifact shows its partition&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;metadata is dated 2024-03-15, five months before ap-southeast-5 became generally&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;available, and the region is absent from it entirely.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;That gives a coherent, testable hypothesis: regions known to the pinned SDK route through&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;a legacy client path that does not handle account-regional bucket addressing, and regions&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;unknown to it fall through to a different path that does. The AWS SDK for Java v1 final&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;release (1.12.797, December 2025) does contain ap-southeast-5, so if that is the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;mechanism, refreshing the dependency would move ap-southeast-5 into the failing set rather&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;than fixing anything.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;We cannot verify this from outside. We cannot inspect which client handles the request,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;and no supported Spark configuration on serverless lets us influence the storage path. We&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;offer it as a starting point, not a conclusion. The measured facts are that one region&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;works, others fail, and the difference tracks that SDK release date.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;CONFOUNDING FACTORS, PLEASE READ BEFORE REPRODUCING&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;These cost us several wrong conclusions.&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;1. A newly created S3 bucket is unreadable from serverless for up to about 2 hours&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Regardless of namespace, and with the identical 403. We measured a brand-new bucket&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;failing at 2 minutes, 27 minutes and 42 minutes old, then succeeding consistently from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;about 2 hours.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Create two buckets, test them immediately, and both&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;fail, leading to the confident and wrong conclusion that namespace is irrelevant. Three of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;our own experiments were voided this way. It is consistent with S3 virtual-hosted-style&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;DNS propagation, given the failing requests use the legacy s3-REGION.amazonaws.com form.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Wait at least 2 hours after bucket creation before drawing any conclusion.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;2. Control-plane credential validation passes regardless&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Validating the storage credential returns READ, LIST and PATH_EXISTS all PASS on locations&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;that serverless compute cannot read. Validation exercises the role without the compute&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;session scoped-down policy. A green validation is not evidence.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;3. Direct file queries swallow the real error&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Querying a path directly returns a generic FAILED_TO_CREATE_PLAN_FOR_DIRECT_QUERY. Use an&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;external table, a managed table, or a UC volume. Otherwise the underlying S3 exception&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;never surfaces and you cannot tell this apart from anything else.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;4. Single trials are not enough&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;We once observed a global-namespace bucket succeed twice and then fail 90 seconds later,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;at the tail of the propagation window above. Run at least three trials per configuration&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;and treat any inconsistency as a result in itself.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;5. S3 server access logging will not answer whether the request reached S3&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;We enabled it and planted a known-good control request. The control never appeared in the&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;delivered logs either, so the absence of the failing requests proves nothing. Server access&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;logging is best-effort by design. Use CloudTrail S3 data events if you need this question&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;answered.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;6. Unity Catalog itself is fine&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;Listing catalogs, schemas, tables, external locations and storage credentials all work on&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;serverless, and lineage is captured normally. Only the reading of objects out of S3 fails.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Do not go hunting a Unity Catalog misconfiguration.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;REPRODUCTION&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;Step 1. Create two buckets that differ only in namespace.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;ACCOUNT_ID=your-aws-account-id
REGION=ap-southeast-1
AN=repro-$ACCOUNT_ID-$REGION-an
GL=repro-global-$ACCOUNT_ID

aws s3api create-bucket --bucket $AN --region $REGION \
--create-bucket-configuration LocationConstraint=$REGION \
--bucket-namespace account-regional

aws s3api create-bucket --bucket $GL --region $REGION \
--create-bucket-configuration LocationConstraint=$REGION&lt;/LI-CODE&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Any region that predates roughly March 2024 should show the behaviour.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;SPAN&gt;Step 2. Put an identical file in each.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;printf 'id,label\n1,test\n' &amp;gt; /tmp/c.csv
aws s3 cp /tmp/c.csv s3://$AN/files/c.csv --region $REGION
aws s3 cp /tmp/c.csv s3://$GL/files/c.csv --region $REGION&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Step 3. Grant your existing Unity Catalog role read access to both buckets: s3:GetObject&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;on the object ARN, plus s3:ListBucket and s3:GetBucketLocation on the bucket ARN.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Step 4. In Unity Catalog, create one external location per bucket using the same storage&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;credential, and an EXTERNAL volume over each.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Step 5. Wait at least 2 hours. Then, on a serverless SQL warehouse or serverless notebook:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;SELECT count(*) FROM read_files('/Volumes/CAT/SCH/global_vol/', format =&amp;gt; 'csv');
SELECT count(*) FROM read_files('/Volumes/CAT/SCH/account_regional_vol/', format =&amp;gt; 'csv');&lt;/LI-CODE&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;The first returns 1. The second returns 403 with Request ID: null.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Control:&lt;/STRONG&gt; point the same two queries at a non-serverless warehouse or a classic cluster.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Both succeed. That is what localises the fault to serverless compute rather than to IAM,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;the bucket, or Unity Catalog.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;WORKAROUNDS WHILE THIS IS UNPATCHED&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;&lt;EM&gt;1. Use a global-namespace bucket for anything serverless must read.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;&lt;BR /&gt;This is the only real fix available to customers today. Verified end to end: a catalog with&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;its managed location on a global-namespace bucket in the same region serves Delta tables to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;both serverless SQL warehouses and serverless notebooks, with data loaded and written from&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;serverless too.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;The cost is real and worth stating plainly. The account-regional namespace exists so that a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;bucket name can never be claimed by another AWS account. Moving to the global namespace&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;gives that up. The namespace also cannot be changed in place, so this is a data migration,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;not a rename.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;&lt;STRONG&gt;2. Use classic compute for existing account-regional buckets.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Classic job clusters and non-serverless PRO SQL warehouses read them without trouble. The&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;trade-offs are minutes rather than seconds to start, a 10-minute minimum idle timeout on&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;non-serverless warehouses, and cluster management you may not want.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;One trap worth knowing: a workflow task that omits its job-cluster setting silently falls&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;back to serverless and then fails at run time. Assert the setting in whatever you use to&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;define jobs.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P class="lia-align-justify"&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;&lt;EM&gt;3. Keep an eye on fine-grained access control.&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Databricks documents a dedicated classic cluster as delegating row filters, column masks&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;and dynamic views to the workspace serverless compute. If that path applies, a table with a&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;row filter could fail on a classic cluster that otherwise works. We have no such filters and&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;have not tested this. Flagging it because classic compute is otherwise the safe ground.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;A SEPARATE ISSUE WE HIT ALONG THE WAY: TRIAL ACCOUNTS AND SAME-REGION S3&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Independent of the above, and worth recording because the two are easy to conflate. We lost&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;time doing exactly that.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;While our account was on a trial, serverless could not read any customer bucket in the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;workspace own region, global-namespace buckets included. Cross-region buckets were&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;unaffected:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;LI-CODE lang="python"&gt;ap-southeast-5, account-regional, customer bucket A -&amp;gt; works
ap-southeast-5, global, customer bucket B (new) -&amp;gt; works
ap-southeast-1, global, customer bucket C -&amp;gt; 403
ap-southeast-1, account-regional, customer bucket D -&amp;gt; 403&lt;/LI-CODE&gt;&lt;DIV class="lia-align-justify"&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Bucket C, a global-namespace bucket in the metastore own region, returned 403 during the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;trial. After the trial concluded, the same bucket, unchanged, reads reliably. Bucket D still&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;fails, which is Finding 1.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Databricks documents serverless as reaching same-region S3 through a Databricks-owned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;private gateway, and different-region S3 out through NAT. A trial-level network restriction&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;on the private gateway path would produce exactly the table above while leaving the NAT path&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;alone. Two staff posts on this forum state that trial accounts carry network restrictions&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;regardless of configured policy settings, and the serverless SQL warehouse requirements&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;state the account must not be on a free trial.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;This is inference, not measurement. We cannot put the account back on trial to test it. The&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;before and after on bucket C is measured, and the trial end date is confirmed in writing.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;The mechanism is not.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;Note the shape carefully. It is not that trial accounts cannot use customer S3 buckets.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Cross-region customer buckets worked fine throughout. Stating it too broadly sent us chasing&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;the wrong mechanism for days.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;STRONG&gt;WHAT WOULD HELP FROM DATABRICKS&lt;BR /&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;1. &lt;/SPAN&gt;&lt;SPAN&gt;Confirm whether account-regional namespace buckets are supported by serverless compute.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;If not, this belongs in the documented limitations. The namespace is a first-class AWS S3&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;feature and nothing currently warns against it.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;2. &lt;/SPAN&gt;&lt;SPAN&gt;Identify the component returning the 403. The request is signed, the credential is valid,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;and the same address answers correctly when the request comes from other compute, but the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;response carries no S3 request ID.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;3. &lt;/SPAN&gt;&lt;SPAN&gt;Comment on the SDK hypothesis in Finding 2, which we cannot test from outside.&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="lia-align-justify"&gt;&lt;SPAN&gt;4. &lt;/SPAN&gt;&lt;SPAN&gt;Confirm whether a trial account restricts same-region serverless S3 access. If it does,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;that belongs in the published trial limitations. We could find nothing stating it.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 20 Sep 2026 09:10:34 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/serverless-compute-returns-403-on-s3-buckets-in-the-account/m-p/169224#M12133</guid>
      <dc:creator>alexgfowler_ld</dc:creator>
      <dc:date>2026-09-20T09:10:34Z</dc:date>
    </item>
    <item>
      <title>Re: Serverless compute returns 403 on S3 buckets in the account-regional namespace</title>
      <link>https://community.databricks.com/t5/get-started-discussions/serverless-compute-returns-403-on-s3-buckets-in-the-account/m-p/170429#M12180</link>
      <description>&lt;P&gt;Greetings &lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/258850"&gt;@alexgfowler_ld&lt;/a&gt;, I did some digging and here is what I found.&lt;/P&gt;
&lt;P&gt;First, this is one of the most carefully built-out reports I've seen on this forum. Your A/B test already rules out the usual suspects: same role, credential, data, and region work from classic compute, and serverless fails only for the account-regional bucket. That's not an IAM or Unity Catalog setup problem. I can't see inside the serverless network path (nobody outside engineering can), but I can confirm what's confirmable and point you at the right door.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What AWS says&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Account regional namespaces launched March 12, 2026, and the S3 user guide says these buckets support every S3 feature with no application changes required. So from the AWS side, nothing about the bucket should behave differently. This is something in the path between serverless compute and S3, not an S3 limitation.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Where the 403 is likely coming from&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Your read on the null request ID is right. S3 stamps every response it generates, errors included, with x-amz-request-id and x-amz-id-2. Both are null and the exception names a proxy, so the simplest explanation is that the proxy in the serverless network path minted the 403 and the request never reached S3. Same-region S3 traffic from serverless rides a VPC gateway endpoint inside Databricks-managed VPCs (the firewall docs describe this), and cross-region traffic takes a different route, which is why ap-southeast-5 kept working during your trial.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;On the SDK hypothesis&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;It holds together. The failing request went to the legacy dash-style hostname (bucket.s3-ap-southeast-1.amazonaws.com), which older partition data hands out for regions it knows, while an unknown region falls back to s3.REGION.amazonaws.com. So the two populations really do take different hostname shapes. I wouldn't call it root cause yet, though, and I'd hold off on the conclusion that S3 refuses these buckets on the legacy hostname: if S3 were saying no, you'd have a request ID. More likely a component in the serverless path matches on hostname and handles the two shapes differently. One detail to put in front of support: these bucket names now contain a region string and an account ID, so anything that parses names or hostnames to work out region or ownership has a fresh way to get it wrong. Also, the AWS SDK for Java 1.x reached end of support on December 31, 2025, so a client pinned to it was never going to learn about a bucket feature that shipped in March 2026.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Your other questions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Trial accounts: the serverless SQL warehouse requirements state plainly that the account must not be on a free trial. The mechanism isn't documented, so I can't confirm it's the same-region path specifically, but your before-and-after on bucket C is clean evidence and I agree it belongs in the published trial limitations.&lt;/P&gt;
&lt;P&gt;Fine-grained access control: your caution is correct. On dedicated access mode compute, any query touching a table with row filters or column masks, or a dynamic view, is handed to the workspace's serverless compute for filtering, so it would fail even though the cluster itself can read the bucket. Standard access mode compute and pro SQL warehouses evaluate those controls themselves, so that's the safer ground in the meantime. Your note about tasks with no compute setting falling back to serverless is also correct.&lt;/P&gt;
&lt;P&gt;Support status: the serverless limitations page says nothing about bucket namespaces either way. I don't know the answer, and the public docs don't establish it as unsupported.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Workarounds and next step&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Your two workarounds are the right ones: classic compute for existing account-regional buckets, or a global-namespace bucket for anything serverless must read, after weighing the security trade-off you already described. Then please open a support case at help.databricks.com. Your post is most of the ticket already. Include the repro, the null request ID observation, the ap-southeast-5 contrast, the compute types and timestamps, and the exact hostnames in the failing versus working requests (that last one is most likely to shorten the investigation). Redact the account ID in bucket names. Only the serverless team can see what the proxy is doing with these requests, and if it turns out to be a gap, you've already written the documentation ticket.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;References:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AWS, namespaces for general purpose buckets: &lt;A href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/gpbucketnamespaces.html" target="_blank"&gt;https://docs.aws.amazon.com/AmazonS3/latest/userguide/gpbucketnamespaces.html&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;AWS, account regional namespaces announcement: &lt;A href="https://aws.amazon.com/about-aws/whats-new/2026/03/amazon-s3-account-regional-namespaces" target="_blank"&gt;https://aws.amazon.com/about-aws/whats-new/2026/03/amazon-s3-account-regional-namespaces&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Databricks, serverless compute firewall configuration: &lt;A href="https://docs.databricks.com/aws/en/security/network/serverless-network-security/serverless-firewall-config" target="_blank"&gt;https://docs.databricks.com/aws/en/security/network/serverless-network-security/serverless-firewall-config&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Databricks, set up serverless SQL warehouses: &lt;A href="https://docs.databricks.com/aws/en/compute/sql-warehouse/serverless" target="_blank"&gt;https://docs.databricks.com/aws/en/compute/sql-warehouse/serverless&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Databricks, serverless compute limitations: &lt;A href="https://docs.databricks.com/aws/en/compute/serverless/limitations" target="_blank"&gt;https://docs.databricks.com/aws/en/compute/serverless/limitations&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Databricks, fine-grained access control on dedicated compute: &lt;A href="https://docs.databricks.com/aws/en/compute/single-user-fgac" target="_blank"&gt;https://docs.databricks.com/aws/en/compute/single-user-fgac&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Databricks, connect to an AWS S3 external location: &lt;A href="https://docs.databricks.com/aws/en/connect/unity-catalog/cloud-storage/s3" target="_blank"&gt;https://docs.databricks.com/aws/en/connect/unity-catalog/cloud-storage/s3&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;AWS, end of support for AWS SDK for Java 1.x: &lt;A href="https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-java-v1-x-on-december-31-2025/" target="_blank"&gt;https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-java-v1-x-on-december-31-2025/&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Regards, Louis.&lt;/P&gt;</description>
      <pubDate>Fri, 02 Oct 2026 14:41:32 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/serverless-compute-returns-403-on-s3-buckets-in-the-account/m-p/170429#M12180</guid>
      <dc:creator>Louis_Frolio</dc:creator>
      <dc:date>2026-10-02T14:41:32Z</dc:date>
    </item>
  </channel>
</rss>

