NGINX+WordPress+AWS Aurora Serverless(MySQL5.6)でなんとか立ち上げてみる

個人用ですが、役に立つとこともあるかも。

#### 関連記事
- [[WordPress]NGINX+php-fpmの設定をメモする](https://qiita.com/YukiiM/items/4b3b5d7455d1e22f3328)

## この記事が役立ちそうな対象者

- ぼく
- とりあえずAWS触ってみたい人で、学習中だけどなんかまとまった記事欲しい人
- AWS上にWordPress載せて、Webサイトの構成を作ってみたい人


## AWS側で実施したい構成
- SSL証明書インストール
- httpをhttpsにリダイレクト
    - 参考：[[Nginx] httpをhttpsにリダイレクトする](https://hacknote.jp/archives/29730/)
- 記事のテキストをS3に保存
- 記事の画像をS3に保存
- 記事の画像をCloud Frontでキャッシュして表示させる（CDN）
- 記事の画像のURLをS3上にする
- 記事の画像のURLを/images等にする
- 料金が1,000円以上になったら通知をする
- ELBでEC2×2に不可分散する
- EC2を変更する(より強いスペックにする)
- 踏み台用(bastion)EC2を構築し、その中にpemキーを保存する
    - →あんまよくなさそうなのでpemキーの保存方法は別途検討..


## 事前準備
#### 全体の参考
- AWS公式
    - [WordPress ウェブサイトを構築する](https://aws.amazon.com/jp/getting-started/hands-on/build-wordpress-website/)
        - あるんかーい。知らんかった

- [AWSアカウントを取得したら速攻でやっておくべき初期設定まとめ](https://qiita.com/tmknom/items/303db2d1d928db720888#cloudwatch%E3%81%A7%E8%AB%8B%E6%B1%82%E6%83%85%E5%A0%B1%E3%81%AE%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E6%88%90)
    - みんな大好き有名な記事。updateもしているみたい
- CloudWatchで請求アラート作成しようとしたら下記表示が出てきた。
    - 謎にUS East(N. Virginia)リージョンで請求データとアラームをまとめているらしい...
![スクリーンショット 2021-01-25 5.53.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/1970de46-bcb6-e3b5-912b-564d5346aa55.png)

- CloudWatchの通知が単にメールアドレスではなくAWS SNS(Simple Notification Service)利用になってた。元から？
- SNS用に新規トピック作成
- メールアドレス追加。
- メールアドレスを認証。
    - このメールアドレスは、AWS SNS側で"サブスクリプション"として、管理される。
    - ここでのサブスクリプションは宛先リストみたいなもの。
- Cloud Trailの箇所は実施していない。

- git-secretsのinstallだけ実施した。
- 参考：[クラウド破産しないように git-secrets を使う](https://qiita.com/pottava/items/4c602c97aacf10c058f1)


### 本番環境と開発環境でのAWSアカウントの分け方
参考：[AWSアカウントとVPC、分ける？ 分けない？: 分割パターンのメリット・デメリット](https://dev.classmethod.jp/articles/account-and-vpc-dividing-pattern/)

- 結論：システム×環境種類(本番/開発)で分けていくべき。



## AWS リソースを使っていく
### 全体像
- Regionは東京のみ。
- VPC×1
    - Subnet
        - Public Subnet×1
            - ELB(Elastic Load Balancer)×1
                - Elastic Network Interface(default attached)
            - EC2(Amazon Linux2)×2
            - Elastic IP×1
        - Private Subnet×1
            - RDS(Relational Database Service)
    - S3(Simple Storage Service)
    - Route53×1
    - CloudFront(CDN)
- Internet Gateway×1

- ドメイン：お名前ドットコムで管理。
    - AWS上でも購入できるけど、個人的にドメイン自体は複数持ってるので。

### VPC作成
- VPC×1作成。
    - 10.0.0.0/16
- Subnet×2 in 1aAZに作成
    - VPC内にPublic Subnetを作成
    - VPC内にPrivate Subnetを作成

- Internet Gatewayを作成
    - VPCにattach

- Routing設定
    - ルートテーブルには「送信先」と「ターゲット」が登録できる
    - 「送信先」は通信がきた時の目的地。「ターゲット」はRouterが案内した目的地。
    - `local`は自身のネットワーク内に転送する（返す）ことを表す
    - ルートテーブルに記載された`0.0.0.0/0`はデフォルトルートといい、ルートテーブルに登録されていないアドレスの場合に通る経路を示す
        - デフォルトルートをInternet Gatewayに設定する。
    - ルートテーブルのレコード（？）の適用優先順位は、よりIPアドレス範囲が狭いルートに該当するもの。
    - 例：10.0.0.0/16　＞　10.0.20.0/24
        - この場合10.0.20.0/24のルートが優先
    - ルートテーブルはAWSの場合、VPCと各Subnetに対して設定可能
        - Subnetに対してルートテーブルは1つだけ。
        - AWSでは明示的にRouterを設置しない。
        - Subnetに対してルートテーブルを割り当てるとRouterがあるような動きになる
    - VPCとPublic Subnetに関連付け
    - デフォルトゲートウェイ設定を行う
        - ルート追加：送信先`0.0.0.0/0`
        - ターゲット：作成したInternet Gateway



### EC2
- t2.microで作成..
- セキュリティグループ設定
- keyは一旦Google Driveにも保存...
 
### セキュリティグループ
- ※EC2立ち上げたばかりだと、標準でSSH(port:22)のみinbound許可されている。
- 接続を許可したいEC2インスタンスに紐づいたセキュリティグループのインバウンドルールを編集
    - ルールを追加。まずはhttp(port:80)を任意の場所（どこでも）から許可。

![スクリーンショット 2021-03-07 22.09.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/a95922df-0c4b-8f95-ee75-5afc197279e5.png)

- これでnginxのデフォルトページが表示される。

![スクリーンショット 2021-03-07 22.11.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/1741c72f-f705-11dd-562b-6971eeab3b61.png)

#### Elastic IP
- Elastic IPアドレスの割り当てをクリック
- 割り当てたいインスタンスを選択。
    - EC2のプライベートIPも表示されるが、基本自動採番らしい。
    - こんなの設定したっけって思ったのでメモ。
    - 参考：[Amazon EC2 インスタンスの IP アドレス指定](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-instance-addressing.html)

> プライマリプライベート IP アドレスを指定しないでインスタンスを起動すると、サブネットの IPv4 範囲内で使用可能な IP アドレスが自動的に選択されます。

### Route53
- ホストゾーンを作成する
    - ドメイン名を入力
    - タイプは`パブリックホストゾーン`でOK
- NSレコードとSOAレコードが作成される
    - NSレコード：NameServer情報
    - SOAレコード：ゾーン情報
- このままではRoute53、ドメインとEC2が紐づいていないのでドメインでサーバにアクセスできない。
- Route53でレコードを作成
    - レコードタイプは`A`
    - 値にGlobal IPを入力
    - TTLはデフォで一旦OK
    - レコード名は標準何も入力しなくてよい
        - 空欄であれば、取得したドメインでアクセス可能
        - 何か文字を加えたければサブドメイン的に利用可能（多分）
            - 例：sub.hoge.com
        - ルーティングポリシー：一旦シンプルで。


### RDS
- データベース>設定　からマルチAZ有無を確認できる。
- データベースを選択し、編集からマルチAZ有無を変更可能。

- まず、RDSを設置するprivate Subnetを作成
- RDSに対するセキュリティグループを作成
    - EC2のDashboardから。
    - ※グループ名は設定後変更できない。 :cry:
    - インバウンドルールを作成
        - タイプ：MySQL/Aurora
        - ソース（アクセス元）：カスタムでpublic SubnetのEC2が入っているセキュリティグループを検索して選択
    - 以上。作成する。

- :book: **DBサブネットグループ** 
    - 複数のAZにあるSubnetに、RDSを作成する際に利用するグループ
        - 1つだけSubnetを選択してもエラーとなるため、複数のSubnetを選択する必要がある。
    - RDS作成する範囲を決めれる便利なやつ？
    - EC2管理コンソールで作成したSubnetの中にRDS用のSubnetを作成するイメージ?

↓↓↓こんな感じでRDS作成時に選択する　
![create_RDS_select_subnet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/0c95a47c-2db8-8ced-6e3e-3cb6c6c1565e.png)


- :book: **パラメータグループ** 
    - 作成はした。
- :book: **オプショングループ** 
    - 作成はした。

- RDSを作成。
    - 今回はセキュリティグループと合わせてMySQL
    - Standby Instanceを作成してMulti AZにRDSを設置するか否か選択可能
        - スタンバイインスタンス作成しない場合は、RDSを作成するAZを選択可能。
        - なので、DBサブネットグループで複数AZの複数サブネットを選択していても融通はきく（RDS１つだけ設置可能）
    - データベース認証方式を選択
        - パスワード認証：DBインスタンスに対して設定する(RDS作成画面で設定が必要) IDとパスワードだけ
        - パスワードとIAMデータベース認証
        - RDSリソースアクセス権限がある、IAMユーザの認証情報とDBインスタンスに対するID/pass情報を使用して認証。

![RDS_auth_method.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/f7d32123-690f-0f91-b971-23f44961b01a.png)

- ↓RDS MySQL MultiAZの料金...個人では高すぎぃ〜〜〜

![RDS_MySQL_MultiAZ_pricing.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/5cb8ef70-0408-7509-8da1-d8e9f5346c9a.png)

料金抑える参考
- [RDS(Aurora)を夜中と休日は止めて、利用料を節約する](https://qiita.com/fnaoto/items/c4711585c04b1ad110b1)
- [RDS の停止機能を使ってコストを半分まで削減してみた](https://blog.manabusakai.com/2017/06/stopping-rds/)
- [定期的に EC2・RDS インスタンスを停止・起動する仕組みの CloudFormation テンプレート](https://dev.classmethod.jp/articles/state-scheduler-cloudformation/)
- [RDSとAuroraを比較してみた
](https://chariosan.com/2019/09/01/rds_aurora_comparison/)

どのDBを選択するか参考(Aurora Serverless,PostgreSQL,MySQL,MariaDB)
- [Amazon Auroraを選択する前に知っておいた方がいい話](https://www.orangeitems.com/entry/2019/10/18/171040)
- [Aurora Serverlessが一般利用可能になったので試してみた](https://dev.classmethod.jp/articles/aurora-serverless-mysql-generally-available/)
- [Aurora Serverlessを実際に使ってみたメリットとデメリット](https://service.plan-b.co.jp/blog/tech/28232/)
- [AWS Aurora Serverlessを使ってみた感想](https://qiita.com/elyunim26/items/77d89cbe0cb8cab7a006)
- [EC2上で立てたWordPressをRDSに移行してみる](https://dev.classmethod.jp/articles/sales-ec2-wordpress-rds-migration/)
- [AuroraかRDSどちらを選ぶべきか比較する話をDevelopers.IO 2019 in OSAKAでしました #cmdevio](https://dev.classmethod.jp/articles/developers-io-2019-in-osaka-aurora-or-rds/)

- 結局RDS Aurora Serverless v1で作成した..。
    - MySQL5.6のみ。
    - v2もプレリリースあるらしい。
    - 料金的な都合で。
- [15分で簡単！Aurora ServerlessからAuroraへの移行](https://blog.abist-ai.com/entry/2020/09/07/172126)
    - あとからRDSのAuroraに移行できることがわかったので試し。



### CloudWatch
- AWS SNSでトピックを作成して、指定のメールアドレスへアラートを飛ばすことはできる
    - 一度メール認証をする必要がある
    - SNSのサブスクリプションでメールを管理している。
- 


## コマンド解説

#### ec2インスタンスへのログイン

```
chmod 600 ~/NNN.pem
```
- 管理者権限以外は読み書きできないように設定している。
- 初めだけ設定しよう。

↓↓↓SSHログイン

```
ssh -i ~/Desktop/NNN.pem ec2-user@12.345.123.14
```

- `ssh`だけ入力すると`usage`として引数一覧を見ることができる。
- `~/Desktop/NNN.pem`はec2のpemファイルの場所。
- `@`以降はec2のpublic IP
    - デフォルトだと自動で割り当てられる
    - 再起動等するとGIPは変更となる
    - Elastic IPで一定にしよう。

:head_bandage: :exclamation:   `UNPROTECTED PRIVATE KEY FILE!`と表示されてしまった場合
- `chmod 700 ~~~.pem`でアクセス権限変更する
    - chmod = change mode
- 参考：[awsにssh接続が拒否された。](https://qiita.com/hanlio/items/c8a89244be67b1ec5b63)
- 再度`ssh -i ~~`を実行すればログイン可能。

↓↓↓プロセスとポート番号一覧取得

```
sudo lsof -i -n -P
```

- どのポートが何に使われているかわかる
- 接続しているクライアントがどのポートを利用しているかわかる
- サーバ側がどのポートを開放(listen状態)しているかわかる
- 参考：[lsofコマンド入門](https://qiita.com/hypermkt/items/905139168b0bc5c28ef2)

↓↓↓yumでinstallしたもの一覧

```
yum list installed
```

- 参考：[yumコマンド一覧](https://qiita.com/kazu56/items/3eeab8884f62be1cf3e6)

↓↓↓EC2(Amazon Linux2)へnginxをインストールする

```
sudo amazon-linux-extras install nginx1
```

- `sudo yum install nginx`だと下記表示してくれる。

> "nginx is available in Amazon Linux Extra topic "nginx1"
To use, run # sudo amazon-linux-extras install nginx1"

- 参考[【AWS EC2】Amazon Linux2にnginxをインストールする方法](https://qiita.com/tamorieeeen/items/07743216a3662cfca890)
- apacheとnginxだとnginxのほうが良さそうだったので選択。
- ちなみにapacheをインストールする場合は`sudo yum -y install httpd`でOK

↓↓↓nginx起動

```
sudo systemctl start nginx
```

- ステータス確認は`sudo systemctl status nginx`
- サーバ(EC2)と共に起動するには`sudo systemctl enable nginx`
    - `sudo systemctl is-enabled nginx`でenableか確認可能

※EC2立ち上げたばかりだと、標準でSSH(port:22)のみinbound許可されている。
→したがって、http通信(port:80)は許可されていないので、GIP打ってもnginxの表示はでないよ。
→セキュリティグループでport80を許可してみる



#### 監視系コマンド
↓↓↓CPU使用率確認

```
top
```
- これだけでOK

↓↓↓プロセス確認

```
ps aux
```
- これで全プロセスが出てくる
- ` | grep ~~~`で~~~に該当するプロセスだけ絞って出力させることができる。
- ~~~に入力すべきものはコマンド。一旦全プロセス出してから"COMMAND"列に記載してあるものを確認。
- 参考：[プロセスを終了するkillコマンドの使い方まとめ！【Linuxコマンド集】](https://eng-entrance.com/linux-command-kill)
    - 引数に`-9`で強制終了。


#### DNS系

↓↓↓NameServer知りたい時

```
dig hogehoge.com NS +short
```

- `+short`をつけることでシンプルにNSだけ出てくる

### RDS系

- ↓↓↓EC2にログインして、mysqlをインストール

```
sudo yum -y install mysql
```

参考
- [Aurora ServerlessでWordPressのセットアップできた](https://qiita.com/yyano/items/017f157f074a25a22cb3)

- ↓↓↓EC2からRDS(MySQL)へログイン

```
mysql -h ##エンドポイント（コピぺ） -u ##マスターユーザー名 -p
```

![RDS_endpoint-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/89543089-9873-b2ca-db4d-bb212f65512b.png)


- `-h`:endpointを指定してRDSを特定
- `-u`:ユーザー名入力
- `-p`:パスワードを求められる

↓↓↓Password入力後のTerminal(Ctr+C or`exit;`でDB抜けられる)

```
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> ;
```

- ↓↓↓DBを作成する
    - 小文字でもOK.
    - :expressionless: 文末に`;`をお忘れなく！

```
CREATE DATABASE ##データベース名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
```

- ↓↓↓DB名を表示する

```
SHOW DATABASES;
```

- ↓↓↓DBのユーザーを作成する

参考:[MySQLで新しいユーザーを作成して権限を付与する方法](https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql-ja)

```
CREATE USER '##ユーザー名'@'%' IDENTIFIED BY '##パスワード';
```

`%`はどこからでもログイン可能という意味。
RDSへのセキュリティはセキュリティグループで担保する。

▽参考：
- [ユーザーを作成する(CREATE USER文)](https://www.dbonline.jp/mysql/user/index1.html)
- [teratail[AWS]RDS使用時のホスト名について皆さんのオススメはどれでしょう？](https://teratail.com/questions/55922)

- ↓↓↓作成したユーザにDBの操作権限を付与する

```
GRANT ALL ON ##ユーザー名. * TO '##ユーザー名'@'%';
```

- ↓↓↓権限付与した設定を反映させる（権限のリロード）

```
FLUSH PRIVILEGES;
## ↓↓ユーザが持つ権限を表示
GRANTS FOR ##ユーザー名
```

- `USAGE`は何も権限を持たないという意味。
    - 参考：[ユーザーに権限を設定する(GRANT文)](https://www.dbonline.jp/mysql/user/index6.html#section3)

- ↓↓↓ユーザー一覧を表示

```
SELECT  host, user FROM mysql.user;
```

- 権限削除は`REVOKE ##内容 ON ##DB名.Table名 FROM ##ユーザ名'@'%';`
- ユーザー削除は`DROP USER '##ユーザーネーム'@'%'`


### WordPress

- ↓↓↓phpをインストール

参考：[(Amazon公式Docs)Amazon Linux 2 を実行している EC2 インスタンスに Extras Library からソフトウェアパッケージをインストールする方法を教えてください。](https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/)

```
sudo amazon-linux-extras install -y php7.4
```

- ↓↓↓WordPressを動かすのに必要なPHP系ライブラリインストール

参考：
・[php環境構築時に入れ忘れてコケるやーつ…。](https://qiita.com/sango/items/a86f9b8cf8c9c641823a)
・[PHPでmbstringを設定して日本語環境に対応する方法を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/39850#:~:text=mbstring%E3%81%A8%E3%81%AF-,PHP%E3%81%AEmbstring%E3%81%A8%E3%81%AF%E3%80%81PHP%E3%81%A7%E3%83%9E%E3%83%AB%E3%83%81%E3%83%90%E3%82%A4%E3%83%88%E6%96%87%E5%AD%97,%E6%89%B1%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)
　→mbstringは日本語化してくれるやつ

```
sudo yum install -y php-mbstring
```

- ↓↓↓ライブラリインストール後は、有効化のためにNGINXを再起動

```
sudo systemctl restart nginx
```

- ↓↓↓WordPressの最新版DL(保存したい場所にdirectory移動しておくこと)

・URL参照：https://ja.wordpress.org/download/

```
wget https://ja.wordpress.org/latest-ja.tar.gz
## tarでファイルを解凍
tar xzvf latest-ja.tar.gz
```

- x：ファイルを解凍
- z:g-zipを利用
- v:圧縮/解凍状況を表示
- f:ファイル名を指定

- ↓↓↓tar.gzファイルをhtml直下にコピー
    - html直下でtar.gzをDLでもOK.
    - 参考：[AWS上でNginxを使ってWordPressの環境構築 |  EC2 + WordPress + Nginx + PHP7 + Mysql5.6](https://caramelcase.com/wordpress-aws-ec2-nginx-php7-mysql/)
    - 参考：[【Nginx】ドキュメントルートを変更したい](https://qiita.com/kaketechjapan/items/24501d6b92fa211993b7)
        - →結論：変更しなくてOK..と思ったけど変更した

```
sudo cp -r * /usr/share/nginx/html/
#または
sudo cp -r * /var/www/html/wp/
```

- ↓↓↓NGINXに権限を渡す

```
sudo chown -R nginx:nginx /usr/share/nginx/html/
```

- NGINXのデフォルト公開ディレクトリは`usr/share/nginx/html`
    - vimで開くと確認できる
    - `sudo vi /etc/nginx/nginx.conf`
    - 参考：[[Qiita]vimの抜け方(メモ)](https://qiita.com/RMEL/items/9649fb907e66af5a1a71)
        - `:w`で保存
        - `:wq`で保存して終了
        - `esc`キーで編集モードから抜ける

:cry: 自分の失敗?書いておく

>- apacheと同じように`/var/www/html`を作成してそこにWordPressのdirectoryを置いてみた。
- NGINXのデフォルト公開ディレクトリではないので、変更が必要だった。
- 変更したけどサイトみにいっても変更なし(NGINXのページが表示される)。
- configファイル見ると、HTTPとHTTPSの時の公開ディレクトリだけではなく他にも`user/share/nginx~~`のディレクトリが使われていた。
- そもそも無理にapacheと同じにする必要はないので、NGINXデフォルトの公開ディレクトリである`usr/share/nginx/html`にWordPressのdirectoryをコピー
- `/var/www/html`に置いていたものはなんとか削除..
    - 参考：[【Linux入門】Linuxでファイル削除をするrmコマンド](https://uxmilk.jp/8517)
- サイトみに行くとWordPressの表示が！よかった :metal: 

:question: :expressionless: さらにつまづいたので書いておく（未解決）
- 上記のようにして、サイトが表示されたが、~~/wp-admin/set-up.config.phpの設定画面から、下記エラーが出現。
`WordPress wp-config.phpファイルに書き込みできません。 `

>- 正直いろいろみたつもりですが、全く変わらず。
    - 参考(超一部)：[WordPress wp-config.phpファイルに書き込みできません。](https://www.linux.se-lab.yokohama/20200812-wordpress-wp-config-php-err/)
- php-pfmとnginx.confの設定を何度も調べて確認したりしましたが、どうにも突破できませんでした。。
- ゴリ押しですが、結局WordPressのアナウンスの通り、wp-config.phpを作成することに。
    - wp-config-sample.phpと同じdirectoryに`touch wp-config.php`で作成
    - エラー画面でWPが作ってくれたtxtをコピーして`sudo vi`から編集して貼り付け。
    - nginxとphp-fpmをrestartすると「config.phpあるっぽいですけど、WPインストールしますか？」と聞いてくれる。
        - restartしないと、NGINXの404エラーが返ってきた。
- こうしてWPのサイト名、ユーザ等作成して、超なんとかWordPressのダッシュボードまで辿り着きました。。

![wp_dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241630/f95a54fd-d574-6288-1a65-6d6ee4bfe68f.png)


- どこかで今回の設定のツケがきそうです。
    - プラグインとか子テーマ作成、テーマupdateとか..

## 用語メモ
- :book: **CIDR**（サイダー;Classless InterDomain Routing）表記：例：`192.168.10.0/24`
    - IPアドレスの表記方法
    - IPアドレスは大抵前半24bit(8×3)/32bitでネットワーク部を表す
        - どのネットワークかという住所(区)のこと
    - 後半8bit(8×1)/32bitでホスト部を表す
        - どの端末か（家）のこと
    - CIDR表記の192.168.10`.0/24`について
        - `/24`は、「ネットワーク部がIPアドレスの前半何bitまでなのかを明らかにする」もの
    - ※SubnetのIPアドレスはVPCのIPアドレスの範囲内にする必要がある。
    - したがって、っ
- :book:**サブネットマスク**表記：例：`192.168.10.0/255.255.255.0`
    - ネットワーク部で利用するbitを記載している。
    - IPアドレスの、前から255bit×3をネットワーク部で利用すると明記している。
- 参考：[Qiita:IPアドレスの基礎知識](https://qiita.com/mogulla3/items/efb4c9328d82d24d98e6)
- 参考：[【図解】IPアドレスの仕組み(クラス分類からサブネットまで)](https://nishinatoshiharu.com/fundamental-ipaddress/)
    - 気にしなくていいんだろうけどクラスの考え方的にはClass Bがバランス取れてる
    - →だからSubnet概念が生まれた。

## AWS試験メモ
:pencil: 参考：

- [【AWS認定試験】オンライン試験環境で気を付けたいこと](https://dev.classmethod.jp/articles/online_certification_exam_note/)
- [NHN Tech Blog](https://techblog.nhn-techorus.com/)
    - 読みやすくわかりやすい。
- [楽しいWeb開発](https://dev83.com/)
- [AWS認定クラウドプラクティショナーに出題されそうな用語まとめ](https://dev83.com/aws-cloud-practitioner/)
- [AWS サポートのプラン比較](https://aws.amazon.com/jp/premiumsupport/plans/)
    - SAA,CPの学習リソースにリンクとして載ってることが多い。
- [Amazon S3 ストーレジクラス](https://aws.amazon.com/jp/s3/storage-classes/)

## AWSでさらに実装したいこと
- 不正アクセス検知
    - 参考:[Lambda + CloudWatch Events + KMS で AWS コンソールへの不正アクセスを秒速で検知して「平穏な生活」を手に入れる](https://engineer.crowdworks.jp/entry/2016/11/01/000000)
    - Slackやメールに飛ばすことができる。
- リソース停止忘れ通知
    - 参考：[AWS Lambdaを使ってEC2停止忘れを通知してみた](https://dev.classmethod.jp/articles/notification-for-ec2-stopping/)
    - 参考：[無駄なコストを省こう！AWSで止め忘れ、消し忘れを自動でチェックする方法 まとめ](https://dev.classmethod.jp/articles/cost-check-tool/)


### AWSアカウント削除メモ
- 削除＝解約＝退会
- アカウント設定から解約できる（https://console.aws.amazon.com/billing/home#/account）
- アカウント解約後同じメールアドレスではAWSアカウントを作成できないとのこと。。

>アカウントの解約
 >私は、閉鎖後期間が過ぎると、閉鎖したアカウントを再開できなくなることを認識しています。
 >私は、閉鎖後期間が過ぎると、請求コンソールにアクセスして過去の請求書や課税書類をダウンロードできなくなることを認識しています。
[#/請求の明細書はすべて、こちらからダウンロード]。月を選択し、概要セクションを展開し、支払い請求書や課税書類をダウンロードします。
 私は、閉鎖後期間が過ぎると、このアカウントと現在関連付けられている E メールアドレスを使用して AWS アカウントを新規作成できなくなることを認識しています。


#### 参考メディア
- 個人ポートフォリオ参考
    - [Enjoy IT Life](https://nishinatoshiharu.com/skill-sheet/)
    - 元楽天エンジニアの方らしい。
- メディア参考
    - [TCD WordPressTheme](https://tcd-theme.com/)
- ブログ参考
    -  [YusakuBlog](https://yusaku-blog.com/affinger6/)
    -  [きつねの惑星](https://kitsune.blog/)