Upgrade to Pro — share decks privately, control downloads, hide ads and more …

S3 Tables関連リソースをTerraformで作成してみる

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for tac tac
March 13, 2025

S3 Tables関連リソースをTerraformで作成してみる

S3テーブルバケット関連のAWSリソースをTerraformでデプロイできるかを検証してみた記事です

Avatar for tac

tac

March 13, 2025
Tweet

Other Decks in Technology

Transcript

  1. Copyright © 2025 BeeX Inc. All Rights Reserved. 2 自己紹介

    ・名前 牧野孝洋(Makino Takahiro) ・所属 2017年~:デジタルマーケティングコンサル企業の総合職 2023年~:愛知県の製造メーカーのソフトウェア開発職 2024年~:株式会社BeeX データ分析基盤の構築/コンサル支援 エンタープライズソリューション本部データインテリジェンス部 ・出身 ・生まれ:愛知県名古屋市(イチローの母校の近く) ・大学~:宮城県仙台市(震災の年に入学) ・新卒~:上京(墨田区の方) ・親しみのあるツール Step Functions, Glue, Terraform 2025/03/01@池袋で開催されたJAWSに初参加 会社ブログ:https://www.beex-inc.com/blog/jawsdays2025_booth_participate
  2. Copyright © 2025 BeeX Inc. All Rights Reserved. 4 S3テーブルバケットの概要

    Apache Icebergとの統合 ・タイムトラベルなどのIceberg標準機能が使える! 自動圧縮機能 ・クエリパフォーマンスが最大3倍向上! ※汎用バケット上のIceberg形式テーブルとの比較 自動メンテナンス機能 ・スナップショットや、不要ファイル削除など自動実行してくれる!
  3. Copyright © 2025 BeeX Inc. All Rights Reserved. 5 S3テーブルバケットの構成

    参考: Using Amazon S3 Tables with AWS analytics services - Amazon Simple Storage Service S3テーブルバケット S3テーブル用カタログ 名前空間 テーブル データベース テーブル
  4. Copyright © 2025 BeeX Inc. All Rights Reserved. 6 コンソール画面

    テーブルバケットまでしか作れない・・ ※2025/03/12現在
  5. Copyright © 2025 BeeX Inc. All Rights Reserved. 7 S3テーブルバケットの実装方法

    実装方法 対応範囲 参考URL Terraform テーブルバケット、名前空間、テーブル (スキーマは定義できない) https://registry.terraform.io/providers/hashicorp/a ws/5.88.0/docs/resources/s3tables_table S3コンソール テーブルバケットのみ https://docs.aws.amazon.com/AmazonS3/latest/us erguide/s3-tables- create.html?icmpid=docs_amazons3_console AWS CLI テーブルバケット、名前空間、テーブル https://awscli.amazonaws.com/v2/documentation/ api/latest/reference/s3tables/index.html AWS SDK(Boto3) テーブルバケット、名前空間、テーブル https://boto3.amazonaws.com/v1/documentation/a pi/latest/reference/services/s3tables.html Amazon S3 REST API テーブルバケット、名前空間、テーブル https://docs.aws.amazon.com/AmazonS3/latest/A PI/API_Operations_Amazon_S3_Tables.html AWS CDK テーブルバケットのみ https://docs.aws.amazon.com/cdk/api/v2/docs/aw s-cdk-lib.aws_s3tables-readme.html AWS CloudFormation テーブルバケットのみ https://docs.aws.amazon.com/AWSCloudFormation /latest/UserGuide/AWS_S3Tables.html ※2025/03/10調査時点
  6. Copyright © 2025 BeeX Inc. All Rights Reserved. 8 各AWS分析サービスとの統合(プレビュー)

    参考:https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html スキーマ作成 &データ挿入 クエリエディタから SQLクエリ実行 Athenaクエリ実行IAMロール に権限付与 今後検証・・ 今後検証・・ 今後検証・・ 検証してみる
  7. Copyright © 2025 BeeX Inc. All Rights Reserved. 9 検証結果

    リソース 検証内容 検証結果 備考 S3テーブル Terraformで テーブルバケット &名前空間 &テーブル作成 できた テーブルバケット、名前空間、テーブル用の resourceブロックが用意されている (スキーマ定義用パラメータは用意されていない) EMR Terraformで スキーマ作成 &データインサート できた EMRクラスター用resourceブロック “aws_emr_cluster”のstepパラメータで、 スキーマ作成・データインサート用スクリプトの 実行を定義できる Lake Formation Terraformで IAMロールに S3テーブルの権限付与 できない ※今回はLake Formation コンソールから実装 resourceブロック “aws_lakeformation_permissions”が用意され ているが、「catalog_id」の指定が12桁でないと エラーになってしまう Athena Athenaコンソールから S3テーブルを SELECTクエリ できた 以下SQLクエリを実行できた: SELECT * FROM "s3tablescatalog/<バケット>”.“<名前空 間>”.“<テーブル>";
  8. Copyright © 2025 BeeX Inc. All Rights Reserved. 10 Athenaクエリ結果

    データが入っていることが確認できた
  9. Copyright © 2025 BeeX Inc. All Rights Reserved. 11 Lake

    Formationエラーに関するGitHub Issue 参考:[Bug]: LakeFormation permissions for S3Tables Catalog · Issue #40724 · hashicorp/terraform-provider-aws [Bug]: LakeFormation permissions for S3Tables Catalog #40724 catalog_idに<アカウントID>(12桁)以外を指定するとエラーになってしまう ※S3テーブル用カタログ:<アカウントID>:s3tablescatalog/<テーブルバケット名>
  10. Copyright © 2025 BeeX Inc. All Rights Reserved. 12 まとめ

    TerraformとS3テーブル Terraformから操作するとリソース削除がラク 例えばAWS CLIから削除しようとすると、 中身削除 → テーブル削除 → 名前空間削除 → テーブルバケット削除 一方Terraformだと、 terraform destroyコマンドで全部消えてくれる Terraformのアップデートにも期待 S3テーブルのスキーマ定義 Lake Formationの権限設定 など