Skip to content

ymd65536/AmazonS3TablesDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

【AWS】Amazon S3 Tablesは分析で使えるんすか?実際に検証してみた!

このREADMEはAWSに触るなんてムリムリ!※無理じゃなかった?!2ndシーズン Advent Calendar 2025の一環として作成されました。

この記事のポイント

  • Amazon S3 Tablesの基本的な使い方を理解する

はじめに

この記事では「この前リリースされた機能って実際に動かすとどんな感じなんだろう」とか「もしかしたら内容次第では使えるかも??」などAWSサービスの中でも特定の機能にフォーカスして検証していく記事です。

主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど) 誤りなどがあれば書き直していく予定です。

今回はAmazon S3が機能として提供しているAmazon S3 Tablesを検証してみます。

Amazon S3がテーブル機能をアップデートで出したって?

これまでのS3は「ファイル(オブジェクト)」を置く場所でしたが、このアップデートにより、S3そのものが**「テーブル(表形式のデータ)」を直接扱う機能**を持つようになりました。いくつか特徴があるので見ていきましょう。

「テーブルバケット」という新しい概念

従来の汎用バケットとは別に、構造化データ専用の**「テーブルバケット」**が作成できるようになりました。 この中には「Namespace(名前空間)」と「Table(テーブル)」という階層構造が作れます。

Apache Iceberg を標準サポート

オープンソースの高速なテーブルフォーマットである「Apache Iceberg」をネイティブでサポートしています。 自分たちでIcebergの管理をしなくても、S3が裏側でいい感じにやってくれます。

圧倒的なパフォーマンス向上

自分でデータレイクを構築する場合に比べて、クエリのスループットが最大3倍、トランザクション性能が最大10倍向上するとされています。

補足:Apache IceBergとは

簡単に説明すると「データレイク上の巨大なファイルを、まるでデータベースのテーブルのように扱えるようにする技術(テーブルフォーマット)」です。

もともとNetflix社が、従来のデータ管理手法(Hiveなど)の限界を克服するために開発し、現在はオープンソース(OSS)として広く普及しています。Amazon S3 Tablesも、このIcebergを標準の形式として採用しています。

引用:Apache Iceberg とは何ですか?

ハンズオン

説明を聞いていてもわからないことが多いので、実際に触ってみましょう。 今回はAWS CloudShellを使って進めていきます。権限はAdministratorAccessが必要です。

1. テーブルバケットの作成

# アカウントIDを変数に格納
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
REGION="ap-northeast-1" # お使いのリージョンに変更してください
BUCKET_NAME="my-s3-tables-handson-${ACCOUNT_ID}"

# テーブルバケットの作成
aws s3tables create-table-bucket --name $BUCKET_NAME --region $REGION

2. 名前空間の作成

# バケットARNを変数に格納
BUCKET_ARN="arn:aws:s3tables:${REGION}:${ACCOUNT_ID}:bucket/${BUCKET_NAME}"

# ネームスペース (データベース) の作成
aws s3tables create-namespace \
    --table-bucket-arn $BUCKET_ARN \
    --namespace handson_db
aws s3tables create-table \
    --table-bucket-arn $BUCKET_ARN \
    --namespace handson_db \
    --name user_logs \
    --format ICEBERG

まとめ

参考

AWS CLI インストールと SSO ログイン手順 (Linux環境)

このガイドでは、Linux環境でAWS CLIをインストールし、AWS SSOを使用してログインするまでの手順を説明します。

前提条件

  • Linux環境(Ubuntu、CentOS、Amazon Linux等)
  • インターネット接続
  • 管理者権限(sudoが使用可能)
  • AWS SSO が組織で設定済み
  • Python 3.12.1

AWS CLI のインストール

公式インストーラーを使用(推奨)

最新版のAWS CLI v2を公式インストーラーでインストールします。

# 1. インストーラーをダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip"

# 2. unzipがインストールされていない場合はインストール
sudo apt update && sudo apt install unzip -y  # Ubuntu/Debian系
# または
sudo yum install unzip -y                     # CentOS/RHEL系

# 3. ダウンロードしたファイルを展開
unzip awscliv2.zip

# 4. インストール実行
sudo ./aws/install

# 5. インストール確認
aws --version

# ダウンロードしたzipファイルと展開したディレクトリを削除してクリーンアップします。
rm  "awscliv2.zip"

# 解凍したディレクトリを削除
rm -rf aws

AWS SSO の設定とログイン

1. AWS SSO の設定

AWS SSOを使用するための初期設定を行います。

aws configure sso

設定時に以下の情報の入力が求められます:

  • SSO start URL: 組織のSSO開始URL(例:https://my-company.awsapps.com/start
  • SSO Region: SSOが設定されているリージョン(例:us-east-1
  • アカウント選択: 利用可能なAWSアカウントから選択
  • ロール選択: 選択したアカウントで利用可能なロールから選択
  • CLI default client Region: デフォルトのAWSリージョン(例:ap-northeast-1
  • CLI default output format: 出力形式(jsontexttableのいずれか)
  • CLI profile name: プロファイル名(defaultとします。)

2. AWS SSO ログイン

設定完了後、以下のコマンドでログインを実行します。

aws sso login

ログイン時の流れ:

  1. コマンド実行後、ブラウザが自動的に開きます
  2. AWS SSOのログインページが表示されます
  3. 組織のIDプロバイダー(例:Active Directory、Okta等)でログイン
  4. 認証が成功すると、ターミナルに成功メッセージが表示されます

3. ログイン状態の確認

認証情報を確認します。

aws sts get-caller-identity

正常にログインできている場合、以下のような情報が表示されます:

{
    "UserId": "AROAXXXXXXXXXXXXXX:username@company.com",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/RoleName/username@company.com"
}

トラブルシューティング

よくある問題と解決方法

1. ブラウザが開かない場合

# 手動でブラウザを開く場合のURL確認
aws sso login --no-browser

表示されたURLを手動でブラウザで開いてください。

2. セッションが期限切れの場合

# 再ログイン
aws sso login

4. プロキシ環境での設定

プロキシ環境の場合、以下の環境変数を設定してください:

export HTTP_PROXY=http://proxy.company.com:8080
export HTTPS_PROXY=http://proxy.company.com:8080
export NO_PROXY=localhost,127.0.0.1,.company.com

セキュリティのベストプラクティス

  1. 定期的な認証情報の更新: SSOセッションには有効期限があります。定期的に再ログインを行ってください。

  2. 最小権限の原則: 必要最小限の権限を持つロールを使用してください。

  3. プロファイルの分離: 本番環境と開発環境で異なるプロファイルを使用してください。

  4. ログアウト: 作業終了時は適切にログアウトしてください:

    aws sso logout --profile <プロファイル名>

参考リンク

About

【AWS】Amazon S3 Tablesは分析で使えるんすか?実際に検証してみた!

Topics

Resources

License

Stars

Watchers

Forks

Contributors