こんにちは。
2024年12月 に入社し、システム運用チームの一員となったhirakiです。
弊社システム運用チーム(世間で言うインフラ部門)は、隣にお客様満足度を担保するCRE(Customer Reliability Engineer)と同じ システム運用部 に所属する形となっていて、
お客様の課題をよく目にする状態でもあります。
本記事では昨年のAWS re:Inventで発表されたAmazon S3 Tablesが東京リージョンで利用可能になり、発表時の記事よりシステムのログ、マーケティング用のデータ分析等で利用できそうに見えました。実際にどのように設定をして行けばよいかが気になりましたので、そちらの内容を記事に書きます。
概要
S3Tablesとは?
準備
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" $ sudo installer -pkg AWSCLIV2.pkg -target / $ aws --version aws-cli/2.25.6 Python/3.12.9 Darwin/23.6.0 exe/x86_64
- AWSコンソールからAWS 分析サービスとの統合を有効化しておく
※有効化する事で後ほど利用するAthena等を利用してクエリ実行できるようになる - 主にAWS CLIを利用して設定していきますが、credentials等の設定内容については割愛します。またAWS CLIのcredentials設定を行う際は適切に行ってください。
設定
※S3テーブルバケット等はAWSコンソールからでも設定可能でしたが、AWS CLIから設定する方が効率的だった為、そちらの設定手順を記載します
1.S3テーブルバケットの作成
$ aws s3tables create-table-bucket --name test-s3-table ※ 下記のような結果が返ってきます { "arn": "arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table" }
2.名前空間を作成
※ここではtest_s3_namespaceという名前空間を作成
$ aws s3tables create-namespace \ > --table-bucket-arn "arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table" \ > --namespace test_s3_namespace ※下記のような結果が返ってきます { "tableBucketARN": "arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table", "namespace": [ "test_s3_namespace" ] }
3.テーブル作成
- a.作成前に下記例のようなテーブル定義部分を含むjsonファイルを用意する
{ "tableBucketARN": "arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table", "namespace": "test_s3_namespace", "name": "test_s3_table", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [ {"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"} ] } } } }
- b.テーブル作成
$ aws s3tables create-table --cli-input-json file://mytabledefinition.json { "tableARN": "arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table/table/bc92619a-96cd-4fba-847f-24a377832226", "versionToken": "(現在のテーブルバージョンを識別するtoken情報)" }
設定後の確認
リソースの削除
作成したリソースはAWSコンソールからでは削除できなかったので下記流れでAWS CLIを利用して削除していく
テーブルの削除>名前空間の削除>テーブルバケットの削除
【テーブルの削除】 aws s3tables delete-table \ --table-bucket-arn arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table \ --namespace test_s3_namespace \ --name test_s3_table 【名前空間の削除】 aws s3tables delete-namespace \ --table-bucket-arn arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table \ --namespace test_s3_namespace 【テーブルバケットの削除】 aws s3tables delete-table-bucket \ --table-bucket-arn arn:aws:s3tables:ap-northeast-1:(AWSアカウントID):bucket/test-s3-table
また、下記リソースについてはS3Tables利用時に自動的に作成される為、削除する必要があります。
- AWS Lake Formation > Catalogs > (AWSアカウントID):s3tablescatalog
- IAM > ロール > S3TablesRoleForLakeFormation
所感
- はじめAWS CLIのバージョンが古くてテーブル定義のオプションが利用できなかったり、テーブル名の指定で(-)ハイフンが利用できなかったりと設定していく上でいくつかの制約により、設定に手間取る部分もありましたが、比較的簡単に設定自体はできました。
- 今のところ実業務での具体的な利用シナリオは思いついていませんが、S3バケットにデータを保存できるため、データレイクの構築自体はこれだけでも成立するのではないかと思いました。
- また、さまざまなログ等の解析、ビジネス側の方もクエリを書くことで、新たにBIツールを作成する必要ないかもって思いました。
※以下記事を参考にいたしました。ありがとうございました。
さいごに
スパイダープラスでは、一緒に働く仲間を募集しています。
当社にご興味をお持ちの方は、ぜひお気軽にご連絡ください。
最後までお読みいただき、ありがとうございました。