S3分析環境構築メモ
AWS分析環境構築メモ
S3
S3の料金計算をもとに検討内容を確認
https://calculator.aws/#/addService/S3
リージョンはどうなるか?
どのストレージを使う?
https://aws.amazon.com/jp/s3/storage-classes/
↑の S3 ストレージクラスのパフォーマンスを見て判断するS3 Management and Analytics
s3に置いたオブジェクトからダッシュボードを出すらしい
https://aws.amazon.com/jp/blogs/news/s3-storage-lens/S3 Object Lambda
S3へのGETリクエストに対して手を加えることができるらしい
https://aws.amazon.com/jp/s3/features/object-lambda/S3 Standard料金考慮事項
S3 Standardで利用中のデータサイズ
S3 Standard に対する PUT、COPY、POST、LIST リクエスト
S3 Standard からの GET、SELECT、および他のすべてのリクエスト
S3 Select によって返されたデータ量
S3 Select によってスキャンされたデータ量
分析機能考慮
S3 select
S3 Select は、GZIP または BZIP2 を使用した CSV および JSON オブジェクト、サーバー側暗号化オブジェクトの圧縮もサポートしているらしい。
https://aws.amazon.com/jp/blogs/news/querying-data-without-servers-or-databases-using-amazon-s3-select/
s3 select自体は制限が多く一つオブジェクトをもとにデータ取得でjoinなどはできないAthena + Glue
GlueはETLの役割を果たしS3上(s3以外でもクロールする)のオブジェクトを取り込んで定義済スキーマに保持し、Athenaにて分析用のクエリを実行できるその他
簡単に確認したいということであればS3に上げる必要もなくpythonでpandasで読み込むなりでも良さそうである
運用検討
前提として元データは自社構築のHDFSおよびDB上にあるので、分析に必要な分だけAWSに上がっていれば良い
- データの保持期間はどうするか? データの削除はどうなるのか(スクリプトを書く必要があるか?)
- 消した後のデータを見たい場合の再アップロードはどうするか?
- s3 selectやathenaではobject指定でselectとなる(Hiveではテーブル指定でパーティションを日付で分けていたのでわかりやすかった、hdfs上の元データはhash化された文字列も付与されているので命名規則を決めて取得元のオブジェクト名がわかるようにしておく必要がある)
- 保存先バケットはどうするか(テーブル毎になると思うが、その前に分析基盤識別文字/データ元/テーブル名とスラッシュ区切りにしておくか)
- 権限グループについて(開発はアップロード、修正、参照ができて、分析者はselectだけ出来るぐらいか)
AWS マネージドポリシー: AmazonS3ReadOnlyAccess
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/security-iam-awsmanpol.html
athena側はどうなるか?
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/managed-policies.html