設定場所が分かれば自力でなんとかできる方のためのGoogle Cloud Platform

#サーバ

## App Engine
サーバの管理不要。デプロイしたら即公開。有名どころのフレームワークは揃っているのでよほど特殊なことをしない限りはこちら。

- 設定場所  
  [App Engine](https://console.cloud.google.com/appengine/)
- リファレンス  
  [Google App Engine のドキュメント](https://cloud.google.com/appengine/docs/?hl=ja)

スタンダード環境(言語のバージョン等が固定)とフレキシブル環境ベータ版(環境構築が自由だがサーバ管理必要)がある。アプリ作成前に言語バージョンをよく見極めるべし。スタンダード環境にpython3とか無いぞ。 

## Compute Engine
VMサーバ。App Engineで満足できない体の人はこちら。でもサーバ管理は1台につき1ヶ月寿命を縮めるってばっちゃがいってた。

- 設定場所  
  [Compute Engine](https://console.cloud.google.com/compute/)
- リファレンス  
  [Google Compute Engine のドキュメント](https://cloud.google.com/compute/docs/?hl=ja)

## Container Engine
Dockerさいっきょ。

- 設定場所  
  [Container Engine](https://console.cloud.google.com/kubernetes/)
- リファレンス  
  [Google Container Engine ドキュメント](https://cloud.google.com/container-engine/docs/?hl=ja)

  
# ソース管理
## Source Repositories
無料で非公開のgit管理ができる

- 設定場所  
  [Source Repositories](https://console.cloud.google.com/code/develop/)
- リファレンス  
  [Google Cloud ソース レポジトリのドキュメント](https://cloud.google.com/source-repositories/docs/?hl=ja)

## Container Registry
コンテナの管理

- 設定場所  
  [Container Registry](https://console.cloud.google.com/gcr/)
- リファレンス  
  [Container Registry のドキュメント](https://cloud.google.com/container-registry/docs/?hl=ja)

 

# ユーザ認証
## Google Identity Platform
会員制のサイト構築を簡単にしたい方。もしくはOAuthで地獄を見たい方。

- リファレンス  
  [Google Identity Platform](https://developers.google.com/identity/choose-auth?hl=ja)  
　　
  - Firebase Authentication  
  gmail,Facebook,twitter等の外部サイトのアカウントで自サイトのログインを実現する。
  - Smart Lock for Passwords  
  アンドロイド用のなにか。すまん。説明読んでもわからん。
  - Google Sign-In  
  こっちのマシンでgoogleアカウントでログインしたから、同アカウントの別マシンでもログインさせとくぜ。
  - プレーンOAuth 2.0  
  認証と認可の違いがわからんやつは触るなって言われたことある。



## Identity-Aware Proxy
開発環境、社内アプリなど特定のユーザしかアクセスしてほしくないときにGoogleアカウントでアクセス制限する。アプリ側は(やってみた限りでは)修正不要。

- 設定場所  
  IAMと管理 => [Identity-Aware Proxy](https://console.cloud.google.com/iam-admin/iap/)
- リファレンス  
  [Cloud Identity-Aware Proxy Documentation](https://cloud.google.com/iap/docs/?hl=ja)

アプリ公開後にアクセス制限をしたいときは次のことに注意

- アクセス制限をかけると常にhttps接続になる。先にhttps(SSL)の設定をしていないとドメイン名でのアクセスができなくなる("https://プロジェクト名.appspot.com/"ならアクセス可)。



<img width="1243" alt="ブラウザの横幅を小さくしてたせいで[Access]の項目に気づかず2時間悩んだのでスクショを上げておく。もうこの悲しい事故が起こりませんように。" src="https://qiita-image-store.s3.amazonaws.com/0/193010/a4076ccd-5ec6-68a5-bd6c-f886dc4acb62.png">

[Access]の設定では
"xxxxxx@sample.com"で個人単位の許可。
"sample.com"でそのドメインすべてのユーザを許可。

ユーザ認証後の着地URLの設定はスクショの"問題はありません"の右側、"…"をクリックすると飛べる。
"https://プロジェクト名.appspot.com/"の設定はすでに入っているので、ドメイン名での設定を追加する


# ドメインの設定
App Engineの場合だけでごめんよ
## カスタム ドメイン
独自ドメインでアクセスしたい

- 設定場所  
  App Engine => 設定 => [カスタム ドメイン](https://console.cloud.google.com/appengine/settings/domains)
- リファレンス  
  [Using Custom Domains and SSL](https://cloud.google.com/appengine/docs/standard/python/using-custom-domains-and-ssl)

## SSL証明書
独自ドメインでhttpsをつかう

- 設定場所  
  App Engine => 設定 => [SSL証明書](https://console.cloud.google.com/appengine/settings/certificates)
- リファレンス  
  [Using Custom Domains and SSL](https://cloud.google.com/appengine/docs/standard/python/using-custom-domains-and-ssl)

Let’s Encryptで証明書を発行するなら
個人ブログ[GAEでSSLの設定（Let’s Encrypt の導入備忘録）](http://blog1.erp2py.com/2016/06/gaessllets-encrypt.html)がとても参考になりました。