Cloud RunとCloud Load Balancingでカスタムドメインを設定する with Cloud Armor

# はじめに
Cloud Runにアプリをデプロイして、カスタムドメインを設定する必要があり、
やり方を調べてみたんですが、全然なかったので、備忘録がてらここに残します。

`※この記事では画像ベースで手順を紹介しています`
`※Zennでは、Terraformを使って同じ内容のデプロイに挑戦しようと思います（準備中）`


# Cloud Runをデプロイ
### 1. Cloud Runのページからサービスを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/1d118b3c-0cfe-4689-9d25-e0ac718e90f0.png)

### 2. 画像の項目を選択して、「作成」ボタンを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/bfcf1e54-2322-46fc-99fa-7b16a3eb03ff.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/a1e2568c-9226-4bc2-ac57-c4c31c7ca2a0.png)

### 3. 作成したCloud Runのデフォルトのエンドポイントを有効化のチェックを外す
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/792747b0-0133-4c69-8d0e-e2d94c1cf840.png)


# Cloud Domainsでドメインを取得
### Cloud Domainsのページからドメインを取得します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/8d5ff9b2-aba0-4a80-a472-7f21f3c65477.png)

### 必要項目を入力していき、ドメインを登録します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/4e0313be-674e-45ec-94da-fd4a082305bf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/3d5b4473-0a2c-4af4-8d6b-6ddb18618704.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/8d609739-e88d-4bcb-acd7-8dfb2fdc3c0b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/9669b87e-93ce-49d9-8cb4-f333e8566ba1.png)

# Certificate Managerで証明書を発行
### Certificate Managerの画面から証明書を発行します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/57f26b40-31b0-490b-bd97-1259ad59db02.png)

### 先ほど登録したドメインを入力して、マネージドの証明書を作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/72a4ea6b-0beb-4535-97b0-58e6c3a20530.png)

# Cloud Load Balancingでロードバランサーを設定
### Cloud Load Balancingのページからロードバランサーを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/26ef08bd-1ed2-4c67-8dd2-8fe7a2087b7b.png)

### それぞれの項目を選択して、グローバル外部アプリケーションロードバランサーを構成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/b1b8f41a-64bc-4c51-901f-ae0ef5522038.png)

### フロントエンドを構成していき、IPアドレスを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/c2e2d064-e169-4061-af85-8816945b41df.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/a2d8c3a8-12a4-42a3-8b00-1df803bb5941.png)

### 先ほど作成した証明書を選択して、「HTTP から HTTPS へのリダイレクトを有効にする」をチェックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/f5efd3c5-e1f9-4516-9050-df68b355da92.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/47ac7971-b36f-42bb-a67e-f8b73d2940d3.png)

### バックエンドを構成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/3c10a1bf-5c4c-48b2-a788-68169200e573.png)

### 項目を入力していき、新しいバックエンドで、サーバーレスネットワークエンドポイントグループの作成を選択
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/60e246a9-ee5e-455a-a425-c48391a41822.png)



### 項目を入力し、作成したCloud Runサービスを選択して、作成します
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/50b2f21d-470f-4b30-b6d7-2e8ceb89e644.png)


### セキュリティより下の項目を入力して、作成します
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/c881f39f-540b-4bf2-b242-c56d3a7464d6.png)


### 次のルーティングルールはそのままの内容で、ロードバランサーを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/93db06f7-c928-4c22-944b-7085210d7111.png)

# Cloud DNSでドメインとIPアドレスを紐づける
### Cloud DNSのページから取得したドメインを選択します
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/cac130fe-6400-4ea1-a927-6480d6c420d2.png)

### レコードセットを追加するために、「標準を追加します」ボタンを押下
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/d88d8733-80d9-41ee-bd04-7280670cc397.png)

### Aレコードを追加して、作成したロードバランサーのIPを入力して作成する
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/f6e23822-a5ce-4d9b-9497-9e044ad6a5fd.png)

# Cloud ArmorでIP直叩きを防ぐ
### Cloud Armorのページに行き、ロードバランサーが作成された時のポリシーを編集する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/e0a7105a-06dc-4baa-8e07-7c64bc104c7b.png)

### ルールを追加します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/de936c29-3dd3-410d-8942-f43c278f9159.png)

### 以下の詳細なルールを入力して、そのルールに該当する項目を拒否します

`!request.headers['Host'].contains('yourdomain.com')`
↑
取得したドメインに変更してにゅうりょく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/557dc429-c8b7-479a-a168-c10c366dea28.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654759/221ae425-116d-4d95-bef7-5af687cf99c1.png)

# お疲れ様でした
### しばらくすると、登録したドメインからアクセスできます。
### ロードバランサーのIPアドレスを直打ちしても403が出てアクセスできないようになっています