Snowflakeでリソースモニターを設定してみた

# 背景
前回、[Snowflakeのアカウントを作成してみた](https://qiita.com/zumax/items/685bf4c116357158aed9)で、アカウントを作成しました。

今回は、コストのモニターを設定します。

# まとめ
下記に特徴を整理します。

| 特徴 | 説明 |
|:--|:--|
|コスト管理のフレームワーク|・Control<BR>・Visibillity<BR>・Optimization|
|コスト要因|・データ転送<BR>・ストレージ<BR>・コンピューティングリソース|
|コンピューティングリソース|・消費されたクレッジット数に、クレジット価格を掛けて計算される<BR>・クレジットを消費するリソースは下記の通り<BR>　・仮想ウェアハウスコンピューティング<BR>　・サーバレスコンピューティング<BR>　・クラウドサービスコンピューティング|
|ストレージリソース|下記できまる。<BR>・TB単位の定額<BR>・アカウント種類とリージョンによって変わる<BR>・毎日保存されるディスク上の平均バイト数|
|データ転送リソース|データ取り込みに料金がかからないが、取り出しにかかる|


# 概要
[Snowflakeでのコスト管理](https://docs.snowflake.com/ja/guides-overview-cost)を元に整理します。

## コスト管理のフレームワーク
Snowflakeのコスト管理は、下記の3つに分けられるとのことです。
- Control
- Visibillity
- Optimization

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/be0872ff-8f92-2c85-890d-1637a4cfe872.png" width=300 />

※ 出典：[コスト管理のフレームワーク](https://docs.snowflake.com/ja/guides-overview-cost)

## 総コストについて
[総コストについて](https://docs.snowflake.com/ja/user-guide/cost-understanding-overall)を元に整理します。

### コストの発生について
> Snowflakeを使用する総コストは、データ転送、ストレージ、およびコンピューティングリソースを使用するコストの合計です。Snowflakeの革新的な クラウドアーキテクチャ は、タスクを達成するためのコストをこれらの使用タイプのいずれかに分類します。

下記の合計でコストが決まるようです。
- データ転送
- ストレージ
- コンピューティングリソース

#### コンピューティングリソース
> Snowflake内でコンピューティングリソースを使用すると、Snowflakeクレジットが消費されます。コンピューティングリソースを使用した請求コストは、消費されたクレジットの数にクレジットの価格を掛けて計算されます。クレジットの現在の価格については、 Snowflakeの価格ガイド をご参照ください。

- リソースを使用すると、Snowflakeクレジットが消費される
- 請求コスト
    - 消費されたクレッジット数に、クレジット価格を掛けて計算される

- クレジットを消費するコンピューティングリソース
    - 仮想ウェアハウスコンピューティング
        - データのロード、クエリ実行、その他のDML操作
    - サーバレスコンピューティング
        - 管理のコンピューティングリソース
        - 検索の最適化
        - Snowpipe
    - クラウドサービスコンピューティング
        - 認証
        - メタデータ
        - アクセス制御

#### ストレージリソース
> Snowflakeにデータを格納するための月額コストは、テラバイト（TB）あたりの定額に基づいています。アカウントの種類（キャパシティまたはオンデマンド）とリージョン（US または EU）によって異なる現在の価格については、 Snowflakeの価格ページ をご参照ください。
ストレージは、Snowflakeアカウントに毎日保存されるディスク上の平均バイト数に基づいて毎月計算されます。

- TB単位の定額
- アカウント種類とリージョンによって変わる
- 毎日保存されるディスク上の平均バイト数

#### データ転送リソース
> Snowflakeは、データをアカウントに取り込むためのデータイングレス料金を請求しませんが、データエグレスには料金を請求します。
Snowflakeアカウントから同じクラウドプラットフォームの別のリージョン、またはまったく異なるクラウドプラットフォームにデータを転送すると、Snowflakeはバイト単位の料金を請求します。このデータエグレスのバイト単位の料金は、Snowflakeアカウントがホストされているリージョンによって異なります。

- 取り込みは料金がかからない
- 取り出しにかかる

# 実装
## 事前準備
1. サインインします
1. ①.Account名をクリックします、②.My profileをクリックします
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/7e5186e4-9c75-5e40-475e-3054144a93b9.png" width=300 />

### Langurage
1. Languageを日本語をとし、「Save」をクリックします
1. リロードされ、コンソールが日本語化されます


## 発生コストの概要
1. サインインします
1. ナビゲーションペインで、①管理者、②コスト管理をクリックします
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/b7563d10-170d-6a54-bbf0-501398a69c4b.png" width=200 />

1. サマリが確認できます
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/bead228c-2f4b-f49c-96e2-0b155d5b51da.png)

## コストのモニター
1. コスト管理画面で、「＋リソースモニター」をクリックします
1. 下記を指定し、「リソースモニターを作成」をクリックします
    - 名前
    - クレジットクォーター
    - モニタータイプ：アカウント全体なので、アカウント
    - アクション
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/6b4b77ad-201c-828f-c7fd-67b70848d318.png" width=400 />

# 考察
今回、リソースモニターを設定してみました。これにより、意図せず利用しすぎた場合に、膨大な請求を受けずに済みそうです。
引き続き、Snowflakeを使っていこうと思います。

# 参考
https://docs.snowflake.com/ja/guides-overview-cost

https://docs.snowflake.com/ja/user-guide/cost-monitoring