---
title: DuckDBから気楽に使うS3 Tables
tags: 
author: [jyuch](https://www.docswell.com/user/jyuch)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LE1RQVYDEG.jpg?width=480
description: DuckDBから気楽に使うS3 Tables by jyuch
published: October 24, 26
canonical: https://www.docswell.com/s/jyuch/KVJNQ4-2026-10-24-170000
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LE1RQVYDEG.jpg)

DuckDB から気楽に使う S3 Tables
JAWS-UG 茨城 #18 祝！2周年記念祭
@jyuch


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GEW1MLG872.jpg)

自己紹介
• @jyuch
• 今日はつくば市から来ました
• 普段はデータ基盤 を扱っています
• 好きなサービスは Regional NAT Gateway
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/47ZPQML9E3.jpg)

アジェンダ
• Amazon S3 Tables についておさらい
• DuckDB から S3 Tables に読み書きしてみよう
• 実務で使うならこんなアーキテクチャ？
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/YJ6M6NWD7V.jpg)

Amazon S3 Tables についておさらい
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/GJ5Z65M8E4.jpg)

S3 テーブルとは何ですか？
Amazon S3 Tables は、フルマネージド型の
Apache Iceberg テーブルであ
り、データレイクとレイクハウスの管理に伴う運用上の負担を自動化しま
す。高度な圧縮とメンテナンス戦略により、
S3 Tables はデータ量の増加に
応じて自動的にクエリのパフォーマンスを最適化します。
S3 Tables は、
Apache Spark 、 Trino 、 Amazon Athena 、 Amazon Redshift 、その他の
サードパーティツールを含む、すべての
Iceberg 互換エンジンで動作するた
め、アーキテクチャの柔軟性が高まり、表形式のデータを大規模に保存する
最も簡単な方法を可能にします。
Amazon S3 Tables - https://aws.amazon.com/jp/s3/features/tables/
Amazon S3 Tables -https://aws.amazon.com/jp/s3/features/tables/
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LE39QNWGE5.jpg)

S3 テーブルとは何ですか？
Amazon S3 Tables は、 フルマネージド型の Apache Iceberg テーブル であ
り、データレイクとレイクハウスの管理に伴う
す。 高度な圧縮とメンテナンス戦略
運用上の負担を自動化 しま
により、 S3 Tables はデータ量の増加に
応じて自動的にクエリのパフォーマンスを最適化します。
S3 Tables は、
Apache Spark 、 Trino 、 Amazon Athena 、 Amazon Redshift 、その他の
サードパーティツールを含む、すべての
Iceberg 互換エンジンで動作 するた
め、アーキテクチャの柔軟性が高まり、表形式のデータを大規模に保存する
最も簡単な方法を可能にします。
Amazon S3 Tables - https://aws.amazon.com/jp/s3/features/tables/
Amazon S3 Tables -https://aws.amazon.com/jp/s3/features/tables/
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/8EDG9WKNEG.jpg)

Apache Iceberg とは？
• Open Table Format のひとつ
• オブジェクトストレージにテーブルデータを保管するための仕組み
• 他には Delta Lake や Apache Hudi などがある
• ACIDトランザクション・スキーマ進化・タイムトラベルなどをサポート
• データはオブジェクトストレージに格納されることが多い
• ストレージとは別にカタログ実装が必須
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/V7P3Z9KNJ8.jpg)

Apache Iceberg のちょっと細かい話
カタログ
テーブル名からメタデータの場所をポイント
有効なスナップショット（テーブルバージョン）をポイント
コミット毎に新しいスナップショットが作られる
ストレージ
スナップショットに属するデータを保持
実データは Parquet 形式などで保存される
データファイルは上書きされず新規で作られる
Iceberg Table Spec -https ://iceberg .apache.org/spec/
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/2JV4WMVY7Q.jpg)

こう思いません？
スナップショットの有効期限を管理しないとダメでは？
そのうち参照されなくなるデータファイルが出来るよね
細かいコミットを繰り返すと、大量のデータファイル
を読む必要が出てきてクエリ速度が落ちるよね
カタログ実装を運用するのはめんどくさい
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/5EG1DGLWJL.jpg)

そこで S3 Tables の出番です！
スナップショットの有効期限を管理しないとダメでは？
スナップショット期限の自動管理が出来ます
そのうち参照されなくなるデータファイルが出来るよね
Orphan file のクリーンアップが出来ます
細かいコミットを繰り返すと、大量のデータファイル
を読む必要が出てきてクエリ速度が落ちるよね
小さいデータファイルを大きいデータファイルに
まとめなおします
カタログ実装を運用するのはめんどくさい
Iceberg REST Catalog を実装しています
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4JQD1XYQ7P.jpg)

ここまでのまとめ
• S3 Tables は Apache Iceberg のマネージドサービス
• ストレージの最適化を自動的にしてくれる
• スナップショットの期限の自動管理
• データファイルの集約
• Orphan file のクリーンアップ
• Iceberg REST Catalog を通じて任意のエンジンから触れる
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/K74ZR6WYE1.jpg)

DuckDB から S3 Tables に読み書きしてみよう
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LJ1RQVYNJG.jpg)

DuckDB について
• 単一のバイナリで動作する OLAP
• ローカルにバイナリを置くだけでインストールできる
• Extension 経由で様々なデータソースに対応
• Parquet や CSV
• PostgreSQL や MySQL
• 今回扱う Iceberg ももちろん対応
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GJW1ML1ME2.jpg)

手順は割と簡単
1. S3 Tables のテーブルバケットを作成する
2. IAM ユーザを払い出す
3. DuckDB から接続する
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/4EZPQMPMJ3.jpg)

S3 Tables のテーブルバケットを作成する
AWSのクエリエンジンから触らないのであれば、
統合すら不要
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/Y76M6NM5EV.jpg)

IAMユーザを払い出す
このあたりがあればとりあえず大丈夫
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/G75Z65ZGJ4.jpg)

Iceberg カタログを DuckDB にアタッチ
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/9J2RMNRD7R.jpg)

INSERT ・ SELECT
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/DEYDXPDMEM.jpg)

Iceberg カタログ外のテーブルと
JOIN
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/VJN61563J8.jpg)

Iceberg テーブルに MERGE
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/YE9L5YLP73.jpg)

スナップショットの確認とタイムトラベルクエリ
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/GE8XY6XXJD.jpg)

ここまでのまとめ
• 事前準備はバケットの作成と IAMロールの払い出しのみ
• DuckDB から以下の操作が出来る（出来た）
• SELECT・ INSERT ・ UPDATE・ DELETE
• Iceberg 外のテーブルと JOIN ・ MERGE
• タイムトラベルクエリ
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/LEL8498N7R.jpg)

実務で使うならこんなアーキテクチャ？
小規模ならこんなのでもいいのでは？という妄想
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/4JM6KZ6QEW.jpg)

SaaS データ基盤のしんどい部分
• 確かに SaaS データ基盤はすごい便利
• 便利さに見合うだけの苦労もある
• 環境構築が割と大変
• 覚えるべき概念が多い
• 機能のリリースが多すぎて、追いつくだけで一苦労
• 結構高価
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/PJRPX6PKE9.jpg)

気楽なデータ基盤
クラウドのコストは
S3のデータ保存 + Egress くらい
AWS Cloud
カタログの管理はほぼ丸投げ出来る
データの配布場所として使用する
Data bucket
元データ置き場
S3 Tables
メンバー
必要なデータを Iceberg テーブルに MERGE する
Lambda でも ECSでもいいし、適当なミニ
パイプライン実行端末
PCでも動く
元データさえ保持しておけば、バックフィルし放題
元データ
Bronze
Silver
Gold
DuckDB + データ変換エンジンでパイプラインを実行する
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/PEX36M35JX.jpg)

出来ることと出来ないこと
出来ること
• Iceberg REST Catalog を使用したデータの配布
• データ変換エンジンを使用したパイプライン
• 他のデータ基盤への移行パス
出来ないこと
• RLS・ ABACを使用した強力なアクセス権管理
• ガバナンスを利かせづらく、大規模展開には向かない
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/3EKY1GYRJD.jpg)

まとめ
• Amazon S3 Tables で気軽な Iceberg テーブルが手に入る
• ストレージのメンテナンスを自動で行ってくれるので便利
• カタログ実装もあるので別途用意する必要がない
• DuckDB と組み合わせれば簡易的なデータ基盤が完成する
• パイプラインは
DuckDB と データ変換エンジン で実現できる
• 分析は DuckDB UI 上でもそれなりに出来る
• 移行が必要でも Iceberg REST Catalog 経由で移行できる（と思う）
気楽なデータ基盤として使えるのでは？
27


