AWS SAA向けサービス機能一覧まとめ

# 初めに
AWS認定試験SAA-C03を一度受けて14点差で落ちました。
一度落ちた経験を元に思ったことは、最初らへんに勉強した内容を忘れていることと、サービスの概要はわかるけど細かい機能まで覚えてないなと実感しました。
なので、復習しながらこちらの記事にサービスの機能を書いていこうと思いました。(基本メモみたいな感じです)

# VPC
## セキュリティグループ
- ステートフルなファイアウォールで、インバウンド通信を許可すればアウトバウンドも許可される
- デフォルトでは、インバウンド通信は全て拒否されていて、アウトバウンドは全部許可されている
- 許可ルールのみ行える
## ネットワークACL
- ステートレスなファイアウォールで、インバウンド・アウトバウンドどちらも許可しないと通信ができない
- デフォルトではどちらも全て許可されている

# CloudWatch
## CloudWatch
### 概要
各AWSリソースのメトリクス(CPU使用率・リクエスト数・ディスク使用率など)の監視・モニタリング
### 機能 
- **アラームとアクション**
    - 各リソースのメトリクスにたいしてアクションを起こせる
    例：「EC2インスタンスのCPU使用率が90%以上を超えたらメールする」など
    - インスタンスの再起動・停止なども可能
    - 監視間隔は <INS><font color=red>デフォルトで5分</font></INS>(基本モニタリング)
    - 監視間隔を短くしたい場合は詳細モニタリングを選択(有料)
- **カスタムメトリクス**
    - CPU使用率・ディスクの読み書き量は標準メトリクス
    - メモリ使用量やディスクの空き容量についてはないため、インスタンスなどにエージェントをインストールしてAPIなどを用いて送信する必要がある
- **ダッシュボード**
    - 「ダッシュボードの共用」機能を使えば、AWSアカウントを持たない相手にダッシュボードを共有できる
## CloudWatch Logs
### 概要
AWSサービスやEC2インスタンスのOSやアプリケーションのログを収集して管理できるサービス
### 機能
- **CloudTrailとの提携**
    - CloudTrailで収集している操作ログ・VPCフローログも収集できる
    - メッセージの内容をフィルタリングしてメール通知もできる
- **別のサービスへの転送(サブスクリプションフィルター)**
    - 収集したログをKinesis・Lambda・OpenSearch Serviceに情報を渡して解析・プログラムの実行などもできる
- CloudWatch Logs Insights
    - 収集したログをクエリを使って検索・分析することが可能
    - サンプルクエリも用意されている
## EventBridge
### 概要
リソースの状態変化や用意したスケジュールに合わせてアクションが実行できる
### 機能
- **基本動作**
    - アクションを実行するトリガーを「イベントソース」、実行するアクション自体は「ターゲット」と呼ぶ
    - ターゲットは5つ設定できる
    - 決まった時刻や曜日・日付を設定して定時実行が可能
# Amazon CloudWatch Container Insights
## 機能
コンテナ環境のメトリクスやログデータを収集するサービスでECS、EKSなどに対応している

# Amazon MQ
## 概要
Apache ActiveMQ および RabbitMQ 向けのマネージド型メッセージブローカーサービス

## 機能
- まずメッセージブローカーについて
メッセージの検証、保管、経路指定、適切な宛先へのデリバリーを行う(SQSと似てる)
    - MQTT：MQTTは非同期で軽量のメッセージをやり取りするためのプロトコル
    - Publisher：メッセージを送信する側
    - Subscriber：メッセージを受診する側
    - Broker：Publisherからメッセージ受け取ってSubsriberに送信するサーバー
- マネージドサービス
    - 基本的にフルマネージドサービス
- セキュリティ
    - 暗号化・SSL接続も可能、IAMでアクセス権限のコントロールも可能
- モニタリング
    - CloudWatch,CloudTrailと統合されており、モニタリングが可能
    - メッセージが詰まったりするときにアラームの生成もできる
- インスタンスタイプ
    - EC2のようにCPUの性能やメモリの量が選べる、ていうかEC2で動いてるかも？
- SQSとの使い分け
    - 既存のアプリケーションで処理しているメッセージングがある場合はMQ
    - 新規に構築する場合はSQS
    -コスパやインスタンスの管理を考えるとSQSのが軽い
- 2種類のMQ
どちらもOSSのMQ
    - ActiveMQ(Apache)
    - RabbitMQ
# EKS
## 機能
- Horizontal Pod Autoscaler (HPA)
CPU使用率やメモリ使用量によってポッド数を自動的に増減してくれるスケーリング機能
- Cluster Autoscaler
HPAで増減したポッドに対してノード数を自動的に増減してくれる機能

# AWS Systems Manager
## 機能
タスク・パッチ配布の自動化・管理、セキュアログインにできる機能等を兼ね備えているサービス
- AWS Systems Manager Session Manager
EC2インスタンスへブラウザ（マネジメントコンソール）やAWS CLIからセキュアにログインできる
- AWS Systems Manager Parameter Store
データベースなどにアクセスする際の認証情報などを管理するサービス
- AWS Systems Manager Patch Manager
パッチ適用をOSスキャン等して自動化できる
- AWS Systems Manager Parameter Store
DBなどのセッション情報を管理してくれるサービスで、ログインする際はParameter Storeから取得することができる
- AWS Systems Manager Automation

# lambda
関数を実行するサービス
## 機能
- 1回の実行時間が15分のため、処理に時間がかかるデータを扱う場合は向いていない

# Amazon AppFlow
- 様々なSaaSアプリケーション（例：Salesforce、ServiceNow、Slackなど）と、AWSサービス（例：Amazon S3、Redshift、DynamoDBなど）間でデータを安全に転送できるフルマネージドサービス

# S3
## 機能
- マルチパートアップロード
    - 50GBを超えるデータをアップロードする時に使われる
    - 複数のデータに分割されてアップロードされる
- ポリシー
    - バケットポリシー
        - バケット単位でアクセス権限を設定する機能
        - AWSアカウント・ドメイン・IPアドレスからのアクセスを制限できる
        - サーバー側の暗号化の強制が可能
    - ユーザポリシー
        - IAMユーザー単位でアクセス権限を設定できる
        - 他のAWSアカウントには設定できない
    - ACL
        - AWSアカウント単位で設定できる機能
- 暗号化
    - SSE-S3
        - S3が管理している鍵を使用する
    - SSE-KMS
        - AWS KMS（AWS Key Management Service）に保存されているKMSキーを使用する
    - SSE-C
        -  ユーザーが管理している鍵を使用する

### ストレージの種類
| ストレージクラス                        | 保存料金の高い順番 | 取出し料金 | 取出し遅延 | 保存AZ | 最短保存期間 |
|--------------------------------------|--------------------|------------|------------|---------|--------------|
| 標準 (Standard)                      | 1                  | 無し       | 無し       | 3以上   | 無し         |
| Intelligent-Tiering                  | 変動               | 無し       | 変動       | 3以上   | 無し         |
| 標準-IA : 標準-低頻度アクセス (Standard-Infrequent Access) | 2                  | 有り       | 無し       | 3以上   | 30日間      |
| 1ゾーン-IA : 1ゾーン-低頻度アクセス (One Zone-Infrequent Access) | 3                  | 有り       | 無し       | 1       | 30日間      |
| Glacier Instant Retrieval            | 4                  | 有り       | 無し       | 3以上   | 90日間      |
| Glacier Flexible Retrieval           | 5                  | 有り       | 数分～数時間 | 3以上   | 90日間      |
| Glacier Deep Archive                 | 6                  | 有り       | 数時間       | 3以上   | 180日間     |
- Glacierの取り出し機能
    - 迅速取り出し(Flexibleのみ)
        - 可能で250MBまでなら1~5分以内で取り出せる
    -大容量（バルク）取り出し
        - ペタバイト単位のデータを1日かけて取り出す、一番安い価格
# DynamoDB
## 機能
- レプリケーション
グローバルテーブルを用いて別リージョンに自動的にレプリケーションしてくれる機能で、1秒以内で完了する
- DAX
    - ミリ秒（千分の一秒）だったレスポンスをマイクロ秒（百万分の一秒）レベルのパフォーマンスにまで向上させることが可能
    - ただし読み取りのみ
- 可用性
    - 3つのAZに自動的に保存される
- 更新ログ保存機能
    - DynamoDB Streamsという名前で、直近24時間の変更が分かる機能
    - アプリケーションから参照することも可能
- グローバルテーブル
    - 複数のリージョンに配置でき、ユーザーの地理が近い場所から読み込まれる
- 自動スケール
    - ストレージのスケールアウトは自動で行われる
- バックアップ
    - ポイントインタイムリカバリ（PITR）
        - 差分バックアップが定期的に自動で取得される、35日前まで
    - オンデマンドバックアップ
        - ユーザーが任意のタイミングで作成するバックアップ
    - 更新ログ保存機能
- キャパシティ
    - オンデマンドモード：書き込み・読み込みのリクエスト単位で利用料金がかかる
    - プロビジョニングモード：1秒間に行う書き込み・読み込みの量で利用料金が異なる
    - リザーブドキャパシティ
        - WCU、RCUともに100ユニット単位で1年または3年の期間で予約購入するサービス
        - プロビジョニングより安い
    - キャパシティユニット(WCU,RCU)は自動でスケールアウトできるように設定できる

# Amazon RDS
## 機能
- 可用性
    - プライマリインスタンスは1つのみ、リードレプリカが最大15個おける
- Amazon RDS Proxy
    - RDSのプロキシサービスで、フェイルオーバー・接続の不可を削減してくれる
- 手動スナップショットを共有
    - 他のAWSアカウントにスナップショットを共有することができる
# Amazon Aurora 
## 機能
- 可用性
    - 15個のリードレプリカ作成をサポートしている
    - 複数のAZにプライマリが置ける 
    - データベースのクローンを高速作成
- ストレージ
    - ストレージを自動的にスケーリング
- 高性能で複数のインスタンスを同AZに置けるが高価

# Amazon Redshift
## 機能
- クロスリージョンスナップショット
    - スナップショットは異なるリージョンへ保存することができる
- Amazon Redshift Spectrum
    - S3を外部テーブルとして使用できる
- ross-AZ cluster recovery
    - 障害を検知したら別のAZで同じ環境を復旧できる

# 出るかもしれないサービス達
## AWS X-Ray
アプリケーションの動作に関するデータを収集・分析できるサービスでトラブルシューティングで使用される
## Amazon QLDB