AWS学習のまとめ

## はじめ
AWS認定ソリューションアーキテクトを目指して学習メモを纏めました。この資格は、AWSの主要サービスや設計のベストプラクティスについて深い知識を必要とし、クラウドアーキテクチャを構築、管理するためのスキルを証明します。

## 各分野の学習メモ
:sunny:各分野の詳細内容を[GitHub](https://github.com/SMZPP/aws)で随時更新

### [1. EC2（Elastic Compute Cloud）](https://github.com/SMZPP/aws/tree/main/EC2)

EC2は、オンデマンドで計算リソースを提供するサービスです。インスタンスタイプやスケーリングオプション、Auto Scalingについて理解することが重要です。

1. インスタンスタイプ
EC2インスタンスには、用途や負荷に応じて「汎用」「コンピューティング最適化」「メモリ最適化」「ストレージ最適化」「アクセラレータ最適化」などのインスタンスタイプが用意されています。試験では、具体的なユースケースに合わせた適切なインスタンスタイプを選べることが求められます。

1. 料金オプション
EC2は「オンデマンド」「リザーブドインスタンス」「スポットインスタンス」「セービングプラン」などの料金オプションがあります。各オプションの特徴を理解し、コスト管理の観点から適切な選択ができるようにします。

1. Auto Scalingとロードバランサ
Auto Scalingは、システムの負荷に応じてインスタンス数を自動的に調整する機能です。ロードバランサ（ALB, NLB）はトラフィックを複数のインスタンスに分散します。これらを組み合わせることで、システムの高可用性とスケーラビリティを確保できます。


### 2. S3（Simple Storage Service）

S3は、オブジェクトストレージサービスで、主にバックアップやデータ保存に利用されます。アクセス制御、バケットポリシー、バージョニングの設定方法を学びました。

1. ストレージクラス
S3には、「Standard」「Intelligent-Tiering」「Standard-IA（低頻度アクセス）」「One Zone-IA」「Glacier」「Glacier Deep Archive」などのストレージクラスがあり、データの使用頻度や保持期間に応じた最適なクラスを選択することでコストを抑えることができます。

1. アクセス制御
S3では、IAMポリシー、バケットポリシー、ACL（アクセス制御リスト）を使用してアクセスを制御します。アクセス制御のルールを理解し、特定のユーザーやアプリケーションに対して適切なアクセス権限を設定する必要があります。

1. バージョニングとライフサイクル管理
バージョニングを有効にすると、削除や上書きが行われても以前のバージョンを保持できます。また、ライフサイクル管理を設定して、指定した期間が経過したオブジェクトを自動的にアーカイブや削除することでコスト管理が可能です。


### 3. RDS（Relational Database Service）

RDSは、マネージドなデータベースサービスで、スケーラビリティや高可用性のための設定が可能です。バックアップやリストア、自動スケーリング、Multi-AZの構成を学びました。

1. データベースエンジ
RDSは、MySQL、PostgreSQL、MariaDB、Oracle、Microsoft SQL Server、Amazon Auroraといったさまざまなデータベースエンジンをサポートしています。それぞれのエンジンの特徴や互換性を理解し、要件に応じた選択が求められます。

1. Multi-AZ構成とリードレプリカ
Multi-AZ構成を利用すると、障害が発生した場合でも自動でフェイルオーバーが行われるため、高可用性が確保されます。リードレプリカは読み取り専用の複製を作成し、読み取り負荷を分散する際に利用されます。

1. バックアップとリストア
自動バックアップやスナップショットを使ってデータを保護し、必要なときに復元することが可能です。バックアップポリシーを設定し、運用要件に応じて適切なリストア方法を学びます。


### 4. VPC（Virtual Private Cloud）

VPCは、AWS上にプライベートな仮想ネットワークを作成するためのサービスです。サブネットの設計、セキュリティグループやNACLの使い方、ピアリング接続などの知識が求められます。

1. サブネットとCIDR
VPC内で異なる用途に応じてパブリックサブネットとプライベートサブネットを分けることが一般的です。また、CIDR（クラスレスドメイン間ルーティング）ブロックを設計し、IPアドレスの範囲を最適化する必要があります。

1. インターネットゲートウェイとNATゲートウェイ
インターネット接続が必要なリソースには、インターネットゲートウェイを使い、プライベートサブネットから外部リソースへのアウトバウンド通信にはNATゲートウェイを設定します。これにより、プライベートサブネット内のインスタンスがインターネットにアクセスできるようになりますが、外部からのアクセスは制限されます。

1. セキュリティグループとネットワークACL（アクセス制御リスト）
セキュリティグループはインスタンスごとに適用され、ステートフルなトラフィック制御が可能です。一方、ネットワークACLはサブネットごとに適用され、ステートレスなトラフィック制御が行えます。各セキュリティレイヤーを理解して適切に設定することが、セキュリティ確保の鍵となります。


### 5. IAM（Identity and Access Management）

IAMはAWSアカウント内のリソースへのアクセスを管理するサービスです。ユーザー、グループ、ロール、およびポリシーを使って、リソースへのアクセスをきめ細かく制御します。最低限の権限を付与する「最小権限の原則」に従うことで、セキュリティリスクを低減できます。

1. IAMポリシーとロール
IAMポリシーは、リソースへのアクセス権限を定義します。IAMロールは、一時的な権限を他のAWSサービスに付与するために使います。IAMのベストプラクティスとして、必要最小限の権限（最小権限の原則）を設定し、アクセス権限を最適化します。

1. MFA（多要素認証）
MFAを有効にすることで、セキュリティを強化できます。MFAの導入は、管理者ユーザーや重要なリソースに対するアクセス制御の一環として推奨されます。

1. 組織とポリシー
複数のAWSアカウントを管理する際には、AWS Organizationsを使って、組織全体に適用されるポリシーを一元管理できます。

### 6. CloudWatchとCloudTrail

CloudWatchとCloudTrailは、AWS環境内でのリソースやアクションの監視およびログ記録を行うためのサービスです。CloudWatchはリソースのパフォーマンスモニタリングに使われ、CloudTrailはすべてのAPIコールのログを記録し、セキュリティや運用監査に役立ちます。

1. CloudWatchメトリクスとアラーム
CloudWatchはAWSリソースのパフォーマンスと稼働状況をモニタリングするために利用されます。メトリクスに基づいたアラームを設定し、異常が検知された場合に通知を受け取ることで、迅速な対応が可能です。

1. CloudTrail
CloudTrailは、AWSアカウント内でのすべてのAPIコールを記録し、監査やコンプライアンスのためのログを保持します。アクティビティログを分析することで、不審な操作を検出することができます。


### 7. セキュリティとコンプライアンス

AWSではデータ保護、アクセス管理、リソース監視といった多層的なセキュリティ対策が用意されています。これにより、機密性・完全性・可用性が保証され、業界基準に従ったコンプライアンスも確保されています。

1. 暗号化とデータ保護
AWS Key Management Service (KMS)を使った暗号化により、データのセキュリティを強化できます。S3やRDS、EBSといったサービスのデータ暗号化オプションを理解し、データ保護を実現します。
    
1. VPCエンドポイントとプライベート接続
プライベートリンクを使用して、インターネットを介さずに安全に通信を行うことができます。VPCエンドポイントはS3やDynamoDBなどのサービスとプライベートに接続する際に役立ちます。

1. セキュリティポリシーとベストプラクティス
AWSのセキュリティフレームワークに従い、各種ポリシーを適用することで、セキュリティリスクを低減します。

## おわりに

AWS認定ソリューションアーキテクト試験は、AWSの幅広い知識とスキルを要求される試験です。今回の学習メモが、受験を目指す方の参考になれば幸いです。