>100 Views
July 26, 21
スライド概要
2021/07/26 Ops JAWS Meetup#19 勉強会
LT枠「AWS CURのデータを安く楽に可視化して共有したい」
https://opsjaws.doorkeeper.jp/events/124295
※2025/02/28 SlideShareから引越し 1,080 views
Blog: https://14code.com GitHub: https://github.com/14kw SlideShare: https://www.slideshare.net/TakayukiIshikawa
AWS CURのデータを 安く楽に可視化して共有したい Ops JAWS Meetup#19 2021年7月26日(月) 石川 貴之
自己紹介 石川 貴之 (Ishikawa Takayuki) 普段はAWS管理やWEBサービスの運用とかやってます。 好きなAWSサービス: CloudFormation, Athena, Organizations Contact: @14tter 14kw https://14code.com
本日話すこと ● クラウドコストの可視化について ● AWSのTIPS 本日話さないこと ● コスト削減についてのノウハウ
単純な可視化ならコストエクスプローラが一番早い
なにかしら検証していくと環境が増えていく
なにかしら検証していくと環境が増えていく 請求データが増えていく
【解決したいこと】 複数AWS Organizationや他クラウド費用を まとめて可視化したい
対象とする費用データと形式 ● AWS Organization 1 ○ Parquet形式でS3に出力 ● AWS Organization 2 ○ Parquet形式でS3に出力 ● Google Cloud Platform 1 ○ BigQueryに出力
どうやってデータを1つの場所から使えるようにするか 1. データを移動させずにそれぞれにアクセスする方法(ReDash) 2. ひとつのAWSアカウントにデータを集約させる方法(S3, ReDash) 3. 別のDWHにデータを集約させる方法(BigQuery, DataPortal)
データを移動させずに それぞれにアクセスする方法(ReDash)
ReDashからそれぞれ接続してみる 良い点: ● 特別な設定はいらない いまいちな点: ● ● データソース間のJoinには Query Result使わないといけない ReDashを動かす環境が必要
ひとつのAWSアカウントに データを集約させる方法(S3, ReDash)
S3に集約してAthenaをReDashから使ってみる 良い点: ● ReDashから一つのデータソース として見える いまいちな点: ● ReDashを動かす環境が必要
GlueからS3へのクロスアカウントアクセスでエラー ERROR : User does not have access to target s3://xxxx/xxxx
CURのデータの所有者がAWS管理のアカウント
バケットポリシーでは不十分だった バケット所有者とオブジェクト所有者が 同一 であれば バケットポリシーで別アカウントの権限を付けるだけでいいが、 バケット所有者とオブジェクト所有者が 異なる と オブジェクトACLに別アカウントの権限を付ける必要がある
S3バケットのオブジェクト所有者を変更して対応
TIPS:AthenaからGlueにクロスアカウントアクセス Athenaから別アカウントのGlueデー タカタログに対してクエリーできる Athenaからは別データソースに見え る
TIPS:Athenaに追加したデータソースはReDashから使える
別のDWHにデータを集約させる方法 (BigQuery, DataPortal)
BigQueryに集約してData Portalから使ってみる 良い点: ● ● ● ノーコードで実現できる Data Portalは無料 共有が楽 いまいちな点: ● Data PortalはIaCできない
BigQueryのGCS外部テーブルを利用 CURのデータは月が締まったあとも 更新されることがあるため、Strage Transfer Serviceで変更があったも のをGCSに同期。 GCSデータを外部テーブルとして利 用することで、BigQueryへの都度取 り込みの必要をなくします。
TIPS:2021年以前のParquetデータだとエラーになる Error running query Error while reading table: xxxxx, error message: Read less values than expected $ parquet-tools meta cur_2020.parquet file schema: com.amazon.aws.origami.datawriter.parquet.ParquetDataWriter$ $ parquet-tools meta cur_2021.parquet file schema: spark_schema Athenaだと問題なく読めるが、BigQueryからは読めなかった。
Data PortalにGCP費用可視化サンプルがある https://cloud.google.com/bill ing/docs/how-to/visualize-d ata
複数クラウドの費用をまとめる クラウドごとに出力されるデータ詳細度が違うため注意が必要 Category AWS GCP 各アカウントの請求額 line_item_unblended_cost cost 組織共有を考慮した各アカウントの請求額 line_item_blended_cost - 請求月 bill_billing_period_start_date invoice.month 利用開始日時 line_item_usage_start_date usage_start_time プロダクトID line_item_product_code service.id プロダクト名 product_product_name service.description アカウント/プロジェクト ID line_item_usage_account_id project.id アカウント/プロジェクト名 - project.name ロケーション - location.location リージョン product_region location.region リソースID line_item_resource_id -
通貨が違う!!
AWSとGCP費用を合算しての可視化は諦めた GCPの支払い通貨を 日本円 にしていた AWSも円払いにしているが CURのデータは ドル で出力される GCP課金データテーブルにある currency_conversion_rate を使うと ドルにすることもできるが、、、 DataPortalでそれぞれ可視化して満足してしまったので、今回はここまで 複数クラウド費用を合算して利用したいという方は 支払い通貨にはお気をつけください!!
まとめ 1. データを移動させずにそれぞれにアクセスする方法(ReDash) ○ 一番簡単で考えることが少ない 2. ひとつのAWSアカウントにデータを集約させる方法(S3, ReDash) ○ AWSに集約させることで価値が最大化するなら 3. 別のDWHにデータを集約させる方法(BigQuery, DataPortal) ○ 別のDWHにすでにデータがあり一緒に利用したいなら ○ BigQueryなら可視化にDataPortalが使える
おまけ:CURのレポートサイズ比率 1 : 1.6 1:4 1 : 7 : 30 Parquet:GZIP リソースIDなし:あり 月別:日別:時間別 使っているサービス次第でファイルサイズはかなり変わるため、 この比率はあくまでも参考として見てください。
参考 ● AWS コストと使用状況レポート- ユーザーガイド https://docs.aws.amazon.com/ja_jp/cur/latest/userguide/cur-user-guide.pdf ● Controlling ownership of uploaded objects using S3 Object Ownership - Amazon Simple Storage Service https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html ● Amazon Athena がクロスアカウント AWS Glue データカタログ向けの組み込みのサポートを追加 https://aws.amazon.com/jp/about-aws/whats-new/2021/05/amazon-athena-adds-built-in-support-for-cross-account-aws-glue-data-catalogs/ ● わかりづらいS3クロスアカウントアクセス許可に立ち向かおう https://www.slideshare.net/TakashiToyosaki1/s3-91645159 ● Cloud Storage データのクエリ | BigQuery | Google Cloud https://cloud.google.com/bigquery/external-data-cloud-storage?hl=ja ● BigQuery の Cloud Billing データテーブルについて | Google Cloud https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables ● Google データポータルでの一定期間の利用額情報の可視化| Cloud Billing | Google Cloud https://cloud.google.com/billing/docs/how-to/visualize-data