猫でもわかるS3 Tables【Apache Iceberg編】

## はじめに
[NTTテクノクロス](https://www.ntt-tx.co.jp/)の[メガクラウドチーム](https://www.ntt-tx.co.jp/products/aws/)に所属している加藤です。
普段はAWS関連の業務をしています。

この記事の内容は、2025年5月13日開催のJAWS-UG朝会セッション枠発表資料「猫でもわかるS3 Tables【Apache Iceberg編】」を再構成・追記したものになります。

### 作成動機
2024年後半からデータ分析基盤構築に関連してSnowflake、Databricksを調査・動作検証をしています。そこでApache Icebergの存在を知りました。その後re:Inventで発表されたApache IcebergのマネージドサービスであるS3 Tablesを見て、Apache Icebergの理解を深めておく必要があると感じ資料化しました。

### Apache Icebergとの出会い
AWSにはS3 Tables発表前からApache Iceberg on AWSがありました。しかし私は「Snowflake、Databricks調査」 → 「Amazon S3 Tables」→ 「Apache Iceberg on AWS」の順で調査を行いました。そのためApache Iceberg on AWSをメインで使われている方からは、「かなり変わった経緯でApache Icebergにたどり付きましたね」との感想を何度か頂きました。

## 資料紹介
2025年5月13日開催のJAWS-UG朝会セッション枠で発表した資料の再構成・追記版になります。発表時は時間(20分枠)の関係で資料から落としていたCopyｰon-Write(CoW)、Mergeｰon-Read(MoR)などを復活させました。

### 想定読者
- Amazon S3 Tablesは知っている、試しに使ってみたけどApache Icebergについては名前ぐらいしか知らないような方
- データ分析基盤はAWSで完結していて、Snowflake、Databricksなどは使ったことがない方

### 伝えたいこと(完全なる個人の感想)
いまフロントサイドはMCPが熱いが、サーバサイドはApache Icebergが熱い！

### 資料：猫でもわかるS3 Tables【Apache Iceberg編】
<script defer class="speakerdeck-embed" data-id="a037858277fb434b8b9747aa63de4803" data-ratio="1.7777777777777777" src="//speakerdeck.com/assets/embed.js"></script>
## 資料内容抜粋紹介
### S3 Tablesのシームレスな統合
S3 Tablesを統合することでGlue Data Catalogを介してのアクセスが可能になります。
![glue-c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/a67472ea-446d-4065-b347-e69c322f6e57.png)

### Athenaから検索する場合のカタログ指定
汎用バケットのファイル(非Apache Iceberg)をGlueで検索する場合と、Table統合されたS3 Tablesを検索Uする場合とでは指定するカタログが異なります。
![athena.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/0b21b0c4-aef2-4208-a7a4-78a259faf764.png)

### Apache Icebergファイル構成(アクセス順)
Apache IcebergのRead時のファイルアクセス順です。S3 Tablesの場合はバケット内が隠蔽されているためマネジメントコンソールから中身を確認することはできません。
![access.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/2f9673a2-3bc6-4ac0-9b68-46cd7a73c557.png)

### Apache Icebergの書込みプロセスイメージ
楽観的同時実行制御をおこなうことでファイルの書込みを高速化しています。
![write.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/624d8c9b-de97-4f0b-a960-9e1f7b2bc030.png)

### S3 Tablesを使う上での注意点
S3 Tablesは単独で使う場合と、Glueと統合した場合ではデータカタログが異なります。Apache Iceberg REST エンドポイントを比較すと理解しやすいです。

|種別　    | エンドポイント                           |
|:--------|:-----------------------------------------|
|Glue非統合時   |`https://`<font color="red">s3tables</font>`.<REGION>.amazonaws.com/iceberg`|
|Glue統合時     |`https://`<font color="red">glue</font>`.<REGION>.amazonaws.com/iceberg`|

![s3table_endpoint_r1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/2be3f106-f06b-48b2-ba73-7eac9cd9cecf.png)

またGlue統合時でもS3エンドポイントとRMS(Redshift Managed Storage)用の拡張エンドポイントではパスが異なります。
|種別    | エンドポイント                               |
|:------|:-----------------------------------------|
|S3|`https://glue.<REGION>.amazonaws.com/`<font color="red">iceberg</font>|
|RMS|`https://glue.<REGION>.amazonaws.com/`<font color="red">extensions</font>|

### 【補足】Apache Iceberg on AWS Meetup情報
2025年5月14日に[「Apache Iceberg on AWS Meetup ～話題のIcebergをAWSで徹底活用～」]()がリアル＋オンライン開催されました。

|No.| 内容                              |
|:------|:-------------------------------------|
| 01 |Apache Iceberg on AWS|
| 02 |Amazon S3 Tables - テーブルバケットと汎用バケット|
| 03 |Apache Iceberg への移行アプローチの勘所|
| 04 |Apache Iceberg と AWS で実現するストリーミングワークロード|
| 05 |金融データサイエンスにおける Apache Iceberg / PyIceberg の可能性|

2025年5月26日時点ではまだ資料は公開されていませんが、どの資料も一読の価値があると思います。私は資料内の厳選されたリンク情報がとても参考になりました。

## おわりに
個人的にはApache Icebergは今後データ分析基盤を構築する上では避けて通れない技術たと感じています。現在活発に開発が進んでいますので今後のロードマップも意識した上でどう使っていくかを考えていくつもりです。

### 猫でもわかるシリーズ紹介
過去に私が作成した猫でもわかるシリーズ記事の紹介です。2025年6月時点ではQiita上で発表済みのものです
- [猫でもわかるDirect Connect(Cloud Wan対応版](https://qiita.com/kamogashira/items/501543b04c1d9a2d9970)
- [猫でもわかるBLEA](https://qiita.com/kamogashira/items/e1a7852617ec1d7e3bf5)
- [猫でもわかった気になるRedshift Serverless(更新系限定) 追加情報](https://qiita.com/kamogashira/private/df9bda2a7248b9af6b16)
- [猫でもわかるRoute53(Resolver,Hosted zone)](https://qiita.com/kamogashira/items/60a1f2720d016c167951)

## 参考文献
- [AWS 規範ガイダンス AWS で Apache Iceberg を使用する](https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/apache-iceberg-on-aws/introduction.html)
- [Amazon S3 Tables](https://aws.amazon.com/jp/s3/features/tables/)
- [AWS Blackbelt Online Seminar re:Invent 2024 アップデート速報](https://pages.awscloud.com/rs/112-tzm-766/images/AWS-Black-Belt_2024_aws-reinvent_1206_v1.pdf)
- [【Microsoft】OneLake で Iceberg テーブルを使用する](https://learn.microsoft.com/ja-jp/fabric/onelake/onelake-iceberg-tables)
- [【Google】Apache Iceberg 用の BigQuery テーブル](https://cloud.google.com/bigquery/docs/iceberg-tables?hl=ja)
- [Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-tables-integrating-aws.html)
- [AWS Glue ユーザーガイド](https://docs.aws.amazon.com/ja_jp/glue/latest/dg/connect-glu-iceberg-rest.html)
- [【AWSブログ】Amazon S3 Tables と Amazon SageMaker Lakehouse の統合の一般提供を開始](https://aws.amazon.com/jp/blogs/news/amazon-s3-tables-integration-with-amazon-sagemaker-lakehouse-is-now-generally-available/)
- [Amazon SageMaker Unified Studio ユーザーガイド](https://docs.aws.amazon.com/ja_jp/sagemaker-unified-studio/latest/userguide/lakehouse-components.html)
- [O’REILLY Apache Iceberg The Definitive Gude(dremio Download site)](https://hello.dremio.com/wp-apache-iceberg-the-definitive-guide-reg.html)
- [【dremio】Apache Iceberg: An Architectural Look Under the Covers](https://www.dremio.com/resources/guides/apache-iceberg-an-architectural-look-under-the-covers/)
- [【Snowflake】Introducing Polaris Catalog: An Open Source Catalog for Apache Iceberg](https://www.snowflake.com/en/blog/introducing-polaris-catalog/)
- [データブリックス、Apache Iceberg™の創始者が設立した Tabular社の買収に合意](https://www.databricks.com/jp/company/newsroom/press-releases/databricks-agrees-acquire-tabular-company-founded-original-creators)