<?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 Unity Catalog External Location with Amazon S3 Access Points,session policy behavior and workarounds in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/unity-catalog-external-location-with-amazon-s3-access-points/m-p/160296#M54880</link>
    <description>&lt;P&gt;&lt;SPAN class=""&gt;Context&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I'm working on integration patterns between enterprise NAS storage (Amazon FSx for NetApp ONTAP) and Databricks via S3 Access Points. S3 Access Points provide S3 API access to file data without copying — a common pattern for organizations with existing NFS/SMB workloads.&lt;/P&gt;&lt;P&gt;I've documented my findings publicly here:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A target="_blank" rel="noopener noreferrer"&gt;https://github.com/Yoshiki0705/fsxn-lakehouse-integrations&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;What I've observed&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;When registering an S3 Access Point as a UC External Location:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Yes: External Location creation succeeds&lt;/LI&gt;&lt;LI&gt;Yes: Top-level file listing works&lt;/LI&gt;&lt;LI&gt;Yes: Explicit file reads (specifying full path) work&lt;/LI&gt;&lt;LI&gt;No: Subdirectory listing fails with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;UC_CLOUD_STORAGE_ACCESS_FAILURE&lt;/LI&gt;&lt;LI&gt;No: CREATE TABLE fails with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;AccessDenied&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;The behavior suggests the session policy generated during AssumeRole doesn't correctly handle S3 AP ARN format (arn:aws:s3:REGION:ACCOUNT:accesspoint/NAME).&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Technical details&lt;/SPAN&gt;&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Databricks on AWS, Premium tier&lt;/LI&gt;&lt;LI&gt;Unity Catalog enabled&lt;/LI&gt;&lt;LI&gt;Storage Credential: IAM Role with full s3:* on the AP ARN&lt;/LI&gt;&lt;LI&gt;S3 AP type: Internet-origin (same as what works with Athena/Snowflake/EMR)&lt;/LI&gt;&lt;LI&gt;The same data is queryable via Athena, Snowflake External Stage, and EMR Serverless without issues&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN class=""&gt;Questions for the community&lt;/SPAN&gt;&lt;/P&gt;&lt;OL class=""&gt;&lt;LI&gt;&lt;P&gt;Has anyone successfully registered an S3 Access Point (not a standard S3 bucket) as a UC External Location? If so, what configuration was needed?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a documented limitation or roadmap item for S3 AP support in UC? I couldn't find this in the current documentation.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;For those using the Storage Ecosystem partners (announced at DAIS 2026) — does the native integration bypass this limitation by using a different registration path?&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN class=""&gt;Current workaround&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I'm currently using DataSync → standard S3 bucket → UC External Location, which works but introduces data copy. For read-only analytics, Athena and Snowflake can query the S3 AP directly, so this is specifically a UC limitation.&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Why this matters to the community&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Many organizations store data on enterprise NAS (NFS/SMB) and want to use Databricks for ML/AI without duplicating everything to S3. S3 Access Points are designed exactly for this "access without copy" pattern. If UC could support S3 AP ARNs, it would enable zero-copy governed analytics on enterprise file storage — benefiting anyone with NAS-resident data.&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Environment: Databricks on AWS, ap-northeast-1, Premium tier, DBR 16.1+&lt;/EM&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 23 Jun 2026 19:49:20 GMT</pubDate>
    <dc:creator>YoshikiFujiwara</dc:creator>
    <dc:date>2026-06-23T19:49:20Z</dc:date>
    <item>
      <title>Unity Catalog External Location with Amazon S3 Access Points,session policy behavior and workarounds</title>
      <link>https://community.databricks.com/t5/data-engineering/unity-catalog-external-location-with-amazon-s3-access-points/m-p/160296#M54880</link>
      <description>&lt;P&gt;&lt;SPAN class=""&gt;Context&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I'm working on integration patterns between enterprise NAS storage (Amazon FSx for NetApp ONTAP) and Databricks via S3 Access Points. S3 Access Points provide S3 API access to file data without copying — a common pattern for organizations with existing NFS/SMB workloads.&lt;/P&gt;&lt;P&gt;I've documented my findings publicly here:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A target="_blank" rel="noopener noreferrer"&gt;https://github.com/Yoshiki0705/fsxn-lakehouse-integrations&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;What I've observed&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;When registering an S3 Access Point as a UC External Location:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Yes: External Location creation succeeds&lt;/LI&gt;&lt;LI&gt;Yes: Top-level file listing works&lt;/LI&gt;&lt;LI&gt;Yes: Explicit file reads (specifying full path) work&lt;/LI&gt;&lt;LI&gt;No: Subdirectory listing fails with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;UC_CLOUD_STORAGE_ACCESS_FAILURE&lt;/LI&gt;&lt;LI&gt;No: CREATE TABLE fails with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;AccessDenied&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;The behavior suggests the session policy generated during AssumeRole doesn't correctly handle S3 AP ARN format (arn:aws:s3:REGION:ACCOUNT:accesspoint/NAME).&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Technical details&lt;/SPAN&gt;&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Databricks on AWS, Premium tier&lt;/LI&gt;&lt;LI&gt;Unity Catalog enabled&lt;/LI&gt;&lt;LI&gt;Storage Credential: IAM Role with full s3:* on the AP ARN&lt;/LI&gt;&lt;LI&gt;S3 AP type: Internet-origin (same as what works with Athena/Snowflake/EMR)&lt;/LI&gt;&lt;LI&gt;The same data is queryable via Athena, Snowflake External Stage, and EMR Serverless without issues&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN class=""&gt;Questions for the community&lt;/SPAN&gt;&lt;/P&gt;&lt;OL class=""&gt;&lt;LI&gt;&lt;P&gt;Has anyone successfully registered an S3 Access Point (not a standard S3 bucket) as a UC External Location? If so, what configuration was needed?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a documented limitation or roadmap item for S3 AP support in UC? I couldn't find this in the current documentation.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;For those using the Storage Ecosystem partners (announced at DAIS 2026) — does the native integration bypass this limitation by using a different registration path?&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN class=""&gt;Current workaround&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I'm currently using DataSync → standard S3 bucket → UC External Location, which works but introduces data copy. For read-only analytics, Athena and Snowflake can query the S3 AP directly, so this is specifically a UC limitation.&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Why this matters to the community&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Many organizations store data on enterprise NAS (NFS/SMB) and want to use Databricks for ML/AI without duplicating everything to S3. S3 Access Points are designed exactly for this "access without copy" pattern. If UC could support S3 AP ARNs, it would enable zero-copy governed analytics on enterprise file storage — benefiting anyone with NAS-resident data.&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Environment: Databricks on AWS, ap-northeast-1, Premium tier, DBR 16.1+&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Jun 2026 19:49:20 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/unity-catalog-external-location-with-amazon-s3-access-points/m-p/160296#M54880</guid>
      <dc:creator>YoshikiFujiwara</dc:creator>
      <dc:date>2026-06-23T19:49:20Z</dc:date>
    </item>
    <item>
      <title>Re: Unity Catalog External Location with Amazon S3 Access Points,session policy behavior and workaro</title>
      <link>https://community.databricks.com/t5/data-engineering/unity-catalog-external-location-with-amazon-s3-access-points/m-p/160529#M54898</link>
      <description>&lt;P&gt;Hey&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/230288"&gt;@YoshikiFujiwara&lt;/a&gt;&amp;nbsp;, I took a look and have some meaningful feedback for you.&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;Short version: your diagnosis is right, and what it points to is an unsupported path, not a mistake in your IAM setup. Amazon S3 Access Points are not a supported target for Unity Catalog external locations on AWS today. The current AWS docs only cover external locations against standard S3 bucket paths (&lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;s3://...&lt;/CODE&gt;). There's no public doc or release note that lists S3 Access Point ARNs as a supported target, and nothing that describes special configuration for them. The behavior you captured is the known signature of this gap.&lt;/P&gt;
&lt;H3 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold"&gt;Why it behaves this way&lt;/H3&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;Unity Catalog doesn't hand the compute your full IAM role. It uses credential vending (down-scoping). When a query touches the external location, UC calls AWS STS &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;AssumeRole&lt;/CODE&gt; and attaches a session policy scoped to the requested path. Your effective S3 permission is the intersection of two things:&lt;/P&gt;
&lt;OL class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3"&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Your IAM role's identity policy, which you've correctly set to &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;s3:*&lt;/CODE&gt; on the access point ARN.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;UC's generated session policy, which is built from standard &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;s3://bucket/prefix&lt;/CODE&gt; semantics.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;That intersection is where it breaks. Standard bucket object operations authorize against &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;arn:aws:s3:::bucket/prefix/*&lt;/CODE&gt;. Access point object operations require a different ARN namespace: &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;arn:aws:s3:&amp;lt;region&amp;gt;:&amp;lt;acct&amp;gt;:accesspoint/&amp;lt;name&amp;gt;/object/&amp;lt;prefix&amp;gt;/*&lt;/CODE&gt;. UC's down-scoped session policy doesn't emit those access point object ARNs, and it scopes &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;ListObjectsV2&lt;/CODE&gt; to the root prefix only.&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;That explains each symptom you saw:&lt;/P&gt;
&lt;UL class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3"&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Top-level &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;ls&lt;/CODE&gt; and explicit single-file reads match the narrow root-prefix scope, so they succeed.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Subdirectory listing needs prefix-level &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;ListObjectsV2&lt;/CODE&gt; that the session policy never grants, so you get &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;UC_CLOUD_STORAGE_ACCESS_FAILURE&lt;/CODE&gt; / &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;UNAUTHORIZED_ACCESS&lt;/CODE&gt;.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;&lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;CREATE TABLE&lt;/CODE&gt; runs an internal write and validation that the session policy denies, so you get &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;AccessDenied&lt;/CODE&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;UC validates just enough to accept the location, but the full external-location and table workflow assumes bucket-style addressing, not access point ARN addressing. This is also why Athena, Snowflake, and EMR work against the same access point. They use the role credentials directly (or are access-point aware) and don't impose UC's path-scoped session policy.&lt;/P&gt;
&lt;H3 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold"&gt;A caution about the access_point field&lt;/H3&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;If you go looking, you'll find an &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;access_point&lt;/CODE&gt; attribute that injects the AP ARN into the session policy and partially improves things. It's what makes top-level listing and file reads succeed. Don't build on it. Per Databricks Support, that field was never released as GA and has been removed from the documentation. The partial success is a side effect of incomplete internal handling, not a supported code path. It won't get you subdirectory listing or table creation.&lt;/P&gt;
&lt;H3 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold"&gt;What I'd do from here&lt;/H3&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;Your source is FSx for NetApp ONTAP exposed through an S3 Access Point, so there's no plain S3 bucket underneath to register directly. With that constraint, here's the path I'd take:&lt;/P&gt;
&lt;OL class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3"&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Keep the AWS-native engines for in-place reads. Athena, Snowflake, and EMR are fine wherever you don't need UC governance.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Stage into standard S3, then govern in UC. This is your DataSync workaround, refined. To address the duplication concern, make it incremental instead of a full copy: land data in a standard S3 bucket and use Auto Loader (&lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;cloudFiles&lt;/CODE&gt;) to ingest only new files into UC managed or external tables. That restores the full governance layer (lineage, fine-grained ACLs, row and column masking) the access point path can't give you today.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;File a feature request with your Databricks account team for native S3 Access Point support in UC credential vending. Attach the repro details you've already collected and track it under a support case. This is a real product gap, not user error.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;The bottom line: no IAM tweak will fix this, because the block is in UC's session-policy generation, not your role. Until S3 Access Points are a supported external-location target, standard S3 with Auto Loader into UC tables is the durable, fully governed pattern.&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal"&gt;Cheers, Louis.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Jun 2026 13:43:20 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/unity-catalog-external-location-with-amazon-s3-access-points/m-p/160529#M54898</guid>
      <dc:creator>Louis_Frolio</dc:creator>
      <dc:date>2026-06-25T13:43:20Z</dc:date>
    </item>
  </channel>
</rss>

