AWSの基本知識(初心者向け）

# はじめに
この記事はAWSに関して学習した内容の備忘録です

加筆および修正が必要な場合は随時更新します

## AWSとは
AWS（Amazon Web Services）は、クラウド上でサーバやデータベースなどを簡単に立ち上げることができ、規模に応じて拡張可能なインフラ構築が可能です。

提供しているサービスはサーバーだけではなく、ストレージ、データベース、ネットワークなど、さまざまなITリソースを簡単に利用できる仕組みを提供しています。企業や個人はインターネット経由でAWSにアクセスし、必要な時に必要なだけのリソースを利用できます。

## クラウドとオンプレミスの違い

オンプレミスは自社にサーバーを配置するのに対し、クラウドはインターネットを通じてサーバーを利用します。

オンプレミスの場合、外部からのアクセスを遮断する他、ネットワークの遅延が少ないためパフォーマンスは安定しやすい反面、初期投資や維持管理費用の負担などで運用費用が高額になるため、現在ではクラウドが主流になっております

## AWSのサービスと料金体制（従量課金制）について
AWSの料金体系は従量課金制が基本です。これは、使用した分だけ料金が発生する仕組みです。具体的な特徴は以下の通りです。

### コンピューティングサービス
- EC2（Elastic Compute Cloud）
CPU、メモリ、ストレージ、オペレーティングシステム（OS）、セキュリティグループなどをニーズに合わせてカスタマイズできる仮想サーバーを提供するサービスです。ただし、サーバーの管理やメンテナンスが必要であり、ユーザーがセキュリティパッチの適用やソフトウェアのアップデートなどを行う必要があります。
- Lambda
サーバーの管理が不要なサーバーレスコンピューティングサービスであり、コードを実行するためにインフラの管理を行う必要がありません。ただし、EC2と比べてカスタマイズの自由度は制限されており、具体的なオペレーティングシステムの選択や、詳細なサーバー設定はできない点が特徴です。
### ストレージサービス

- S3（Simple Storage Service）
データをファイルとして保存するサービスです。主に画像、動画、バックアップおよび、ウェブサイトをインターネット上で公開するためのストレージとして使用されます。高い耐久性を持ち、常に利用できる状態で待機しているため、インターネット越しにアクセス可能で、拡張可能なストレージが特徴です。従量課金制で、データ転送やリクエストに応じて料金が発生します。
- EBS（Elastic Block Store）
データをファイルとして保存するサービスです。主に画像、動画、バックアップ、またはウェブサイトをインターネット上で公開するためのストレージとして使用されます。高い耐久性を持ち、常に利用できる状態にあるため、インターネット越しにアクセス可能で、必要に応じてストレージのサイズを増やせる拡張性が特徴です。従量課金制で、データの保存、データ転送、リクエストに応じて料金が発生します。

### データベースサービス
- **RDS（Relational Database Service）**
リレーショナルデータベースを簡単に利用できるサービスです。データをテーブルに整理して保存し、SQLを使ってデータを操作します。主に、トランザクション処理や複雑なクエリが必要なアプリケーションに適しています。例えば、顧客情報や販売データの管理に使われることが多いです。また、CPUやサーバーを追加することで処理能力を増やす機能や、データのバックアップ機能も備えています。


- **DynamoDB**
データを柔軟に保存できる仕組みを持ったデータベースです。データをテーブルに保存しますが、決まった形ではなく、異なる種類のデータを一緒に保存することができます。情報の読み取りや書き込みがとても速く、急にアクセスが増えたときにもすぐに対応できるのが特徴です。主に、リアルタイムで動作するアプリケーションや、大量のデータを扱うサービスに適していますが整合性の管理が比較的難しくなるといったデメリットがあります

### ネットワークサービス
**VPC（Virtual Private Cloud）**
インターネット上で自分専用のネットワークを作るサービスです。これにより、データの安全性を高め、他のユーザーから隔離された環境でサーバーやデータベースを管理できます。

**CloudFront**
ウェブサイトのコンテンツを世界中に速く届けるためのサービスです。データをキャッシュ（保存）し、ユーザーに近い場所から提供することで、ページの読み込みを速くします。これにより、ウェブサイトのパフォーマンスが向上します

### コンテナサービス
**ECS（Elastic Container Service）**
Dockerコンテナを管理するためのサービスです。簡単にコンテナを立ち上げて運用できるため、アプリケーションの開発や運用が効率よく行えます。複数のコンテナをまとめて管理する仕組みを使って、必要に応じてコンテナの数を増減することで処理能力を増減することができます
**EKS（Elastic Kubernetes Service）**
Kubernetes（クバネティス）は、アプリケーションを構成するコンテナを効率的に管理するツールですが、EKS（Elastic Kubernetes Service）は、Amazonが提供するKubernetesの簡易版で、設定や運用の手間を省きます。これにより、アプリケーションの開発や運用に集中でき、成長に合わせて自動的にリソースを調整する機能も備えています。

## 分析サービス
### Athena
S3に保存されたデータに対してSQLクエリを実行できるサービスです。サーバーレスであり、データを事前にロードしたり、管理する必要がなく、分析したいデータをすぐにクエリできます。従量課金制で、クエリに使用したデータ量に応じて料金が発生します。

### Redshift
大規模なデータウェアハウスサービスです。データを効率的に分析できるように設計されており、データの集計や分析に特化しています。OLAP（Online Analytical Processing）向けのデータ分析に適しています。

## 機械学習サービス
### SageMaker
機械学習モデルを構築、トレーニング、デプロイするためのフルマネージドサービスです。多様なアルゴリズムやフレームワークが用意されており、コーディングの知識が少ないユーザーでも利用しやすくなっています。

### Rekognition
EKS（Elastic Kubernetes Service）は、コンテナアプリケーションを簡単に管理するためのサービスです。Kubernetes（クバネティス）という仕組みを使っており、これにより複雑な設定を行わずに、アプリケーションを迅速に運用できます。EKSを利用すると、自動的にサーバーを調整したり、必要なリソースを増やしたり減らしたりできます。さらに、セキュリティの更新やパフォーマンスの向上も自動で行われるため、ユーザーは運用の負担を軽減し、アプリケーションの開発に集中できます。

## EC2の使い方
EC2（Elastic Compute Cloud）は、Amazonが提供するクラウド上の仮想サーバーです。EC2インスタンスは、必要なCPU、メモリ、ストレージなどを自由に選択でき、アプリケーションのニーズに合わせてカスタマイズ可能です。従量課金制なので、使った分だけ支払う方式で、必要な時にだけサーバーを立ち上げることができます。また、スケーリング機能により、トラフィックが増えたときにはインスタンスを追加することもできます。
### 実務での使用例：Webサーバを立ち上げ手順
1. **AWSアカウントの作成**
AWSの公式サイトでアカウントを作成します。

2. **EC2ダッシュボードにアクセス**
AWSマネジメントコンソールにログインし、「EC2」を選択します。
3. **インスタンスの起動**
「インスタンスを起動」ボタンをクリックし、インスタンスタイプ（例：t2.micro）を選択します。必要に応じてAMI（Amazon Machine Image）を選びます。
4. **設定のカスタマイズ**
ストレージのサイズやセキュリティグループ（ファイアウォールの設定）を設定します。Webサーバの場合、HTTPやHTTPSのトラフィックを許可します。
5. **インスタンスの起動**
最後に設定を確認し、SSH鍵をダウンロードしてから「起動」をクリックします。
6. **SSHで接続**
ターミナルやSSHクライアントを使って、ダウンロードした鍵を使用し、EC2インスタンスに接続します。
7. **Webサーバのインストール**
接続後、必要なソフトウェア（例：ApacheやNginx）をインストールし、設定を行います。

## まとめ
AWS（Amazon Web Services）は、クラウドコンピューティングの分野で非常に多様なサービスを提供しており、企業や個人が迅速かつ効率的にインフラを構築する手助けをしています