GCPトライアルを始める手順・トライアル後のクラウド破産しないために押さえておくこと

2020年に書いた情報を公開しそびれていました..あくまで参考情報としてご利用ください :pray: 

# はじめに 
GCPを使い始めたいけれど、従量課金が怖くて使い始められない人もいるのではないでしょうか。
まず、トライアルに関しては請求の心配無しに使い始めることができます。

<img width="372" alt="スクリーンショット 2019-12-01 18.26.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/0aa2ee4b-ba21-fa47-609b-dcdff2a1ab8e.png">
(↑ 放置して1年以上経っても請求がくることは無さそうであるため、安心ですね。)


また、トライアル終了後も想定外の請求を発生させないためのポイントを知る限り記載しました。
会社ではGCPを使っている人も、GCPが初めての人もさくっとmyGCP環境を手に入れましょう :fist:

# トライアルを始める手順(2019/12時点) :beginner:
- `google cloud platform`で検索して、GCPの概要ページにアクセスし、無料トライアルをクリックします
    - <img width="500" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/cd8d855d-a0e2-352b-737a-32f0048ae763.png">
- 国の設定と利用規約への同意の確認をします
    - <img width="500" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/2c74b1ef-7072-fd3a-2448-791da97a7383.png">
- 住所とクレジットカード情報を入力し、無料トライアルを始めるをクリックします
    - <img width="500" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/6389072e-0fc6-33bf-4439-32ec595b676f.png">
    - ちなみに、JCBを使うことができます
        - <img width="266" alt="5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/855f2a19-e52f-4111-fe24-809ac518dd13.png">
- 以上のステップでGCPを使い始めることができます
   - <img width="372" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/569cc921-e8b3-a68c-71a2-3094ae19e580.png">
   - <img width="500" alt="6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/7734b7d2-439d-f50f-358b-b999d0b2821f.png">



# (主にトライアル後) クラウド破産 :money_with_wings: しないために押さえておくこと

以下に記載することはトライアル中でも実施できます。
注意の習慣を付けておきましょう:point_up:

## 不正利用に気をつける :lock: 
- googleアカウントに2段階認証をかけよう
    - googleアカウントがGCPと紐付いているため、webconsoleから操作できてしまう可能性があります
- サービスアカウントキー、APIキーをgitにあげない
    - レポジトリをprivateからpublicに変更した際に流出というのもあるみたいです
    - APIキーを使用するプロダクトは[こちら](https://cloud.google.com/docs/authentication/api-keys?hl=ja&visit_id=637107209831080500-3869905478&rd=1)
- サービスアカウントキー、APIキーを配布可能性があるものに埋め込まない
    - コンテナイメージやJupyterNotebookなどの配布可能性があるものに埋め込まないようにしましょう

## プロダクトの使用料を見積もる :pencil:  
プロダクトの使用料を見積もる :pencil: 

## 今月の請求額を確認する :eyes: 
### web console
web consoleで確認することができます。

- ホーム(プロジェクトのトップ)にデフォルトで表示されるのは実費用
    - <img width="500" alt="スクリーンショット 2019-12-04 23.52.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/5364c21f-34b6-1f67-f9bb-89a26fb809e3.png">

- お支払い > 概要 から実値と予測値を確認
    - <img width="618" alt="14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/511406c6-281c-828c-9ada-2cb448003df0.png">

    - https://cloud.google.com/billing/docs/how-to/reports#cost-forecast


### Cloud console モバイルアプリ
https://cloud.google.com/console-app/?hl=ja

Cloud consoleというモバイルアプリで費用やAPIの使用量を確認することができます。
<img width="300" alt="12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/a69e528b-82eb-ec1b-13f8-38f673cffcfa.png">





## 予算を設定する :moneybag:
GCPは予算を設定することができます。
ただし、これは予算アラートをためのもので予算額に達した場合に課金を停止できるわけではありません。

https://cloud.google.com/billing/docs/how-to/budgets

> 重要: 予算を設定しても、API 使用量は制限されません。予算の目的は、アラート通知のトリガーのためであり、それにより利用額の傾向を時系列的に把握できます。予算アラートによって、費用を抑えるための措置を促されますが、予算額に達した場合やそれを超過した場合に、サービスの使用や課金ができなくなることはありません。費用の発生を防ぐために API使用量の上限を設定する場合は、API使用の上限設定をご覧ください。あるいは、プログラムによってプロジェクトの課金を無効にする方法で利用額の上限を設定することもできます。

- 予算設定イメージ
    - お支払いメニュー > 予算アラートページを開いて`予算を作成`をクリック
       - <img width="500" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/2efb98db-14ab-9803-2fd1-8a07e267f407.png">
    - プロジェクトやプロダクトの範囲を決める事ができます
       - <img width="500" alt="8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/6ef2eaaa-0698-39a6-33c0-ecbe74d3bdfb.png">
    - 金額の指定イメージ
       - <img width="500" alt="9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/be9a88a8-8fb6-78d1-c76d-f080291f5313.png">
    - 複数のアラートを実値と予測値で設定できます
       - <img width="395" alt="10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/aaa28ded-48a4-6f8a-2a8e-8376991e06c9.png">
    - 複数のアラートを設定することができます
       - <img width="500" alt="11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/0c197f89-e828-9869-99d3-749a2a5025de.png">
- アラートされた場合のイメージ
    - アラートメールが届きます
    - <img width="500" alt="15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110482/f0800316-a136-93aa-73e4-71c72624066f.png">



## 支払い結果を確認する :eyes: 
- クレジット履歴を確認する習慣をつける
    - すごく忙しかった時期にAWSのインスタンスを放置して、クレジット履歴で気づくことができた経験があります
    - GCP関連以外で気づく方法を持っておくことがポイントです :point_up:

## 無限リトライによる高額請求に気をつける :recycle: 
プロダクトによってはエラー発生時に処理を再試行するするものがあります。紹介した予算設定や使用状況確認をしていれば気づくことができますが、よくある話みたいです。(私の身近でも3桁万円の事故がありました)

ex. Cloud Functions
https://cloud.google.com/functions/docs/bestpractices/retries?hl=ja


> 警告: 「失敗時に再試行する」を設定すると、関数は、正常に実行されるか、または最大再試行期間（数日間の場合もあります）が経過するまで繰り返し実行されます。そのため、失敗の原因がバグやその他の永続的なエラーの場合、関数が再試行ループに陥る恐れがあります。この設定は、一時的な障害（エンドポイントの不安定さや断続的なタイムアウトなど）を扱う場合や、このプロパティ セットを使用せずにコードのプレッシャー テストをすでに実行した場合にのみ使用してください。関数が再試行ループに陥った場合は、関数を再デプロイするか削除して実行を終了する必要があります。





以上に気をつけて輝かしいGCPライフを :wave: