システム構成図になくても知っておきたいAWS基礎をまとめてみた

# はじめに
前回、[基本的なシステム構成図を理解するためのAWS基礎をまとめてみた](https://qiita.com/goldayushi/items/0e0f34d19813b8fdc2b8)という記事を書きましたが、システム構成図に載っていなくても知っておきたいAWSサービスってあるよねということで、それについてまとめてみました。
主にIAMについてで、あとは個人の独断と偏見でよく聞く用語やサービスをまとめています。

# 操作系
## AWSマネジメントコンソール
- この画面（AWSを操作する画面）
- GUIでボタンぽちぽちしてAWSの色々なサービスの設定ができる
<img width="1425" alt="マネジメントコンソール.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251142/5aabb083-b28e-a209-4ad5-e50b3c55369c.png">


## AWS CLI
- Command Line Interfaceの略
- その名の通り、コマンドライン（Windowsならコマンドプロンプト、Macならターミナル）でAWSの操作・設定をする
- [このページ](https://aws.amazon.com/jp/cli/)に沿ってインストールをすることで使用することができる

# セキュリティ系
## IAM
- Amazon Identity and Access Managementの略
- 「アイアム」と読んだりする
- AWS操作の権限管理の仕組み
- AWS上でセキュアなサービスを動かすには、IAMの正しい理解と設計が必須になる

### IAMポリシー
- IAMユーザーやIAMグループ、IAMロール（※後述）がどのリソース（EC2、S3など）にアクセスできるのかを定めたもの
- JSON形式で設定される

#### 管理ポリシー
- 管理者が管理者権限で作成したポリシー
- AWS側が作成して管理しているAWS管理ポリシーと、個人で作成、管理をするカスタム管理ポリシーがある
- 1つのポリシーを複数のユーザーやグループに適用できる

#### インラインポリシー
- 対象ごとに個別に作成・付与するポリシー

### IAMユーザー
- いわゆるユーザー
- 1ユーザーに1つのIAMポリシーをつける
- 個人利用、少数利用の場合にはIAMユーザーにポリシーを適用して管理することが多い
- AWSアカウント作成時のユーザーはルートユーザーとよばれ、絶大な権限を持つ神様みたいな存在なので日常的には使用しない
- 必ずIAMユーザーを作成してAWSサービスを利用する
![IAMユーザー.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251142/84a0e2c0-d0e5-354e-fd3b-591fca4354d5.jpeg)

### IAMグループ
- IAMユーザーの集合
- 1グループに1つのポリシーをつける
- 組織利用はIAMグループにポリシーを適用して管理するのが望ましい
- 「アプリケーショングループ」や「インフラグループ」などの括りでグループを作成すると管理しやすい
![IAMグループ.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251142/d28f1d1e-f50e-4350-9f50-c83569d89c64.jpeg)


### IAMロール
- 一時的にAWSリソースへのアクセス権限を付与する場合に使用する（一時的に別のアクセス権を得たいユーザーが利用するなど）
- ユーザーやアプリケーション、EC2などのサービスがロールを引き受けることができる
![IAMロール.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251142/5b51d69f-fe75-2e41-dfb2-781802c7b62d.jpeg)

## セキュリティグループ
- EC2やELB、RDSなどのインスタンス単位の通信制御に利用する（仮想ファイアーウォール）
- インスタンスごとにセキュリティグループを割り当てることができ、各インスタンスには少なくとも1つのセキュリティグループをアタッチする必要がある（指定しない場合はデフォルトのものが割り当てられる）
- デフォルトではSSH(22番ポート)のみアクセス可能な設定になっている
- IPアドレスの制限の設定もできる

## ネットワークACL
- サブネット単位の通信制御に利用する（仮想ファイアーウォール）

## セキュリティグループとネットワークACL
- 関係性を図にしたら以下のような感じ
![セキュリティグループとネットワークACL.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251142/36653281-598a-32ee-bdca-de9cb6cc719a.jpeg)


# 監視系
## Cloud Watch
- 運用監視を支援するマネジメントサービス
- 各AWSリソースの状態（メトリクス）を定期的に取得する
- メトリクスに対して、あらかじめアラームを定義しておき、アラームの条件を満たしたときにSNS（※プッシュ通知型のサービス）に通知するように設定できる
- 条件の例：Webサーバ用のEC2インスタンスのCPU使用率が70%を超えた

### 標準メトリクス
- AWSであらかじめ定義されているメトリクス

### カスタムメトリクス
- 利用者が定義した独自のメトリクス

## Cloud Watch Logs
- ログをモニタリングするサービス
- 収集したログに対してアラームを設定する（ERRORの文字列が含まれる行があったらアラームを出すなど）
- Cloud Watchと同じように、アラームをトリガーとして処理を行える

# 構築自動化
## Cloud Formation
- AWSリソースを自動構築するためのサービス
- YAML形式かJSON形式で定義したらあら不思議、環境が構築されます
- 例えば以下の記述でVPCをつくることができる

```yaml:vpc.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: Vpc Template

Resources:
  cfnVpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: '10.10.0.0/16'
      Tags:
        - Key: 'Name'
          Value: 'goldayushi-vpc'
```
作成されたVPC
![作成されたVPC.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251142/630ea09e-2bf0-540e-5e15-564ece34bf77.jpeg)

# 参考資料
以下を参考にさせていただきました。ありがとうございました。

- [AWSドキュメント](https://docs.aws.amazon.com/index.html)
- [AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88-%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/479739739X/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2TJ91KIVGFV3S&keywords=aws%E8%AA%8D%E5%AE%9A%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88&qid=1562596228&s=gateway&sprefix=aws%E8%AA%8D%E5%AE%9A%2Caps%2C122&sr=8-1)
- [手を動かしながら２週間で学ぶAWS基本から応用まで](https://www.udemy.com/draft/1706378/learn/lecture/11382414?start=225#overview)
- [これだけでOK！ AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座（初心者向け21時間完全コース）](https://www.udemy.com/aws-associate/)