AWS主サービスまとめ

# はじめに
AWSの基本から、AWSの主サービスの概要をまとめました。
備忘録的な扱いで、今後業務で新しく触ったサービスがあれば随時更新していこうと思います。

---
# アジェンダ

* AWSとは
* AWSでできること
* AWSを利用するメリット
* AWS主サービス各種の概要

---
# AWSとは

* Amazon Web Serviceの略、Amazonが提供するクラウドコンピューティングサービスの総称
* Amazonが自社のインターネットショップを運用するために構築したインフラやアプリケーションをベースに、個人や他社でも利用できるようしたサービス
* 現在、<strong>200</strong<>以上のサービスから構成され、必要な機能だけを利用できる

クラウドコンピューディングサービス・・インターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした様々なITリソースを提供するサービス。AWS以外にはマイクロソフトのAzure、GoogleのGCP、IBMのIBM Cloudなどあります。

---
# AWSでできること

* Webサイト・Webサービスの構築・運用
* データのバックアップ・災害対策
* ビッグデータの蓄積・分析・運用
* 基幹・業務システム（顧客管理や販売管理、給与計算などのシステム）の構築
* 統合開発環境（IDE）の構築

・・・など複数あります

---
# AWSを利用するメリット

* 初期費用ゼロ/低コスト
* 継続的な値下げ
* 拡張性
* セキュリティ

---
## ①初期費用ゼロ/低コスト

* ハードウェアの購入や設置が不要のため初期費用なし
* 利用量に応じた従量課金型のため、必要な期間のみ利用し、不要になったらサービスを縮小もしくは削除することで課金を停止できるので無駄な費用はかからない

=>必要な時に、必要な分だけ、低価格でITリソースを調達可能にするため、新規プロジェクトや実験的なサービスの検証など、スモールスタートが可能に、また撤退コストの最小化を実現する

---
## ②継続的な値下げ

* AWSは2006年のサービス開始以降、利用規模の拡大（スケールメリット）によりサーバーの調達コストや維持コストを安く抑えられる
* 新しい技術の導入でITコストの低減に成功し、コスト低減分をユーザーに還元することで継続的な値下げを実施している。2021年11月時点で109回以上の値下げを実現している

=> ユーザーの負担するITコストの単価は低下し続けるため、リピータ数の増加につながる

---
## ③拡張性
![aws-ten-reasons-03_202103.a36273a2a8169f2b400e0cf43092f0febc45089f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554111/98702769-b639-ac8c-11c0-80492a2b26ec.png)

* 必要な時に数クリックでサーバーの台数を増減できたり、CPUやメモリなどのサイズを変更できる
* ITリソースの稼働量が閾値を超過した場合に自動的にリソースを増強されるような自動化が実現可能

=> システム稼働が増えることを予測し、その予測を上回るリソースの確保の必要もなく、実際に運用する中で調整できる。必要な時だけリソース強化することにより、コストの節約化につながる。

---
## ④セキュリティ

* 「責任共有モデル」を採用しており、AWSが責任を負う範囲と、ユーザーが責任を負う範囲を明確に分けている（責任範囲は利用サービスによって若干変わる）
* AWSの責任範囲は、AWSで提供サービスのインフラ部分の保護についてで、セキュリティ機能の実装や厳格なコンプライアンス要件に対応し、さらに第三者機関による検証が行われている
* ユーザー側はAWS上のセキュリティに対して責任を負い、運用するアプリケーションなどのセキュリティは対応必要となる

=> ハードウェアの管理やソフトウェアのアップデートといったシステム管理者の負担がかからないため、その分の人的リソースを有効活用できる

---
# AWS主サービス一覧
* CloudFront
* Route53
* ACM
* VPC
* ALB
* EC2
* EBS
* EFS
* S3
* RDS(Aurora)
* CloudWatch
* SNS
* Lamda

---
## CloudFront
静的及び動的WEBコンテンツを配信するCDNサービス

**【特徴】**
* コンテンツをユーザーに最も近いサーバーから配信される
* 初回アクセス時以降、キャッシュされたコンテンツはレスポンスされる

**【メリット】**
*  オリジンサーバーへのアクセス数減少によりサーバーの負荷軽減
*  ネットワークレイテンシー（遅延時間）の低減
海外からのアクセス時でもレイテンシーは低減できる

参考
[Amazon CloudFront は何ができるのか？ AWSを使う上で知っておきたい知識を解説](https://tracpath.com/works/cloud/amazon-cloudfront/)

---
## Route53
可用性と拡張性に優れたクラウドのドメインネームシステム（DNS)

**【特徴・メリット】**
* ドメイン登録
ドメイン名をRoute53に登録することで、ドメインを管理・運用できる

* DNSルーティング
ブラウザのアドレスバーにドメイン名またはサブドメイン名を入力したときに、Route53はWebサイトまたはアプリケーションに接続してくれる
地理的状況やレイテンシーなども考慮に入れた効率的な接続ができる

* DNSヘルスチェック
ウェブサーバーなどのリソースの正常性を監視する
リソースが使用不可になったら通知を受け取るようにしたり、インターネットの接続を異常なリソースから遠ざけるようにルーティングしたりできる

参考
[Amazon Route 53 とは？](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html)

---
## ACM(AWS Certificate Manager)
SSL証明書発行サービス（Webサイトの身元照明や通信暗号化に使われるデジタル証明書）

SSLとはインターネット上でやり取りされるデータの「盗聴」「なりすまし」を防止するための暗号化プロトコル。
セキュリティを向上させ、アクセス権限を持たないユーザーがシステムの内部にアクセスできないようにするために必要。

**【メリット】**
* 無料発行
* 簡単に発行できる
* ACM証明書は自動更新される
* 単一ドメイン名、複数ドメイン名、ワイルドカードドメイン、これらの組み合わせを保護できる

参考
[AWS Certificate Manager とは？](https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/acm-overview.html)

---
## VPC(Virtual Private Cloud)
ユーザー専用のプライベートなクラウド環境を提供するサービス

**【特徴】**
IPアドレス及びサブネットの管理・ルーティング・ゲートウェイの設定等一連の仮想ネットワークの制御が可能

**【メリット】**
* 仮想ネットワーク空間を即座に割り当て可能
* インターネットを使わないセキュアな通信ができる
* 便利なコンポーネントが多くカスタマイズ性が高い

参考
[AWSのVPCって何？メリットや使えるシーンなど徹底解説！](https://techplay.jp/column/541)

---
## ALB(Application Load Balander)
Webサービスに発生する負荷を複数のターゲット(EC2、コンテナ、IPアドレスなど)に分散させるサービス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554111/46ece48e-4996-5a60-7ba8-0f198fc81aa8.png)

**【メリット】**
* 柔軟な負荷分散、複数のAZに対しても分散できる
* 登録されているターゲットの状態を監視し、正常なターゲットのみトラフィックをルーティングする
* 受信トラフィックの時間的な変化に応じてロードバランサーをスケーリングする

参考
* [【ALBとELBの違い】初心者でもわかる簡単 AWS 用語解説](https://www.wafcharm.com/blog/difference-between-alb-and-elb/)
* [Application Load Balancer とは?](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/introduction.html)

---
## EC2(Elastic Compute Cloud)
必要に応じてスペックを変更できる仮想サーバーを作成・利用できるサービス

**【メリット】**
* 従量課金による余剰コストカット
* サーバースペックの変更が簡単
* サーバー作成が即時可能で時間短縮
* サーバーを複数作成しての冗長化が簡単操作で実現できる

参考
[AWSとは？ 初心者にもわかりやすく解説](https://www.skyarch.net/column/whataws01/)

---
## EBS(Elastic Block Store)
EC2向けに設計された高性能なブロックストレージサービス
EC2とEBSの関係性は、仮想サーバーとHDDの関係

**【特徴】**
* SSDとHDDの2種類のディスクタイプがある
* 99.999%という高い可用性を維持する
* Snapshot（＝バックアップ）、自動化でSnapshotすることも可能
* EBSの暗号化
* 複数AZにまたがるような冗長性は備えていない。可用性の高いローカルディスクという扱いで、拠点が丸ごと停止するようなケースでは、サービスが停止する

参考
* [Amazon EBSとは？S3との違いやユースケースを解説](https://bcblog.sios.jp/what-is-amazon-ebs/)
* [AWS EBSとは？8つの特徴とEBSボリュームについても解説](https://www.fenet.jp/aws/column/aws-beginner/33/)

---
## EFS(Elastic File System)
サーバー間のファイル共有に最適なNAS(Network Area Storage)のようなサービス

**【特徴】**
* ファイルの追加・削除に応じて、ファイルシステムを自動的にスケールできる
* 複数のAZに冗長保存される高可用性と、99.999999999%の耐久性
* LinuxなどのOSでマウント可能

参考
* [AWSのストレージサービス EBSやEFS、S3などの主要サービスの違い](https://style.potepan.com/articles/35411.html)
* [Amazon EFS入門 S3、EBSとの違いと使い方](https://business.ntt-east.co.jp/content/cloudsolution/column-64.html)

---
## S3(Simple Storage Service)
オブジェクト単位でデータを格納できる、低コストなストレージサービス
データのバックアップ及び復元、アーカイブ、ファイルの保存・動画・画像ファイルやcssなどWEBで使う静的ファイルで使用される広範囲な使い方が可能

**【特徴】**
* 拡張性、可用性、パフォーマンスの高さを備える
* EBSやEFSに比べて安価
* 容量無制限で保存可能。

参考
[【AWS初心者向け】ストレージサービス「Amazon S3」とは？実際に使用してみた](https://business.ntt-east.co.jp/content/cloudsolution/column-try-43.html)

---
## EFS、S3、EBSとの違い

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554111/24f1eeba-535d-f0f3-f606-0309d84f2fb3.png)


最大の違いは、ストレージの種類
* EFSは「ファイルストレージ」。複数のリージョンとインスタンスにファイルシステムをマウント可能。高耐久・高可用を要求するデータ保存に最適。3つの中で一番高価。

* S3は「オブジェクトストレージ」。データをフラットに保存。データ移動や分散した保存が得意で、耐久性が高く大量データの保存しやすい。３つの中で一番安価。

* EBSは「ブロックストレージ」。ブロック単位に番号が割り当てられ、番号をもとに管理される。番号をもとにアクセス可能で、アクセス速度が高速。処理速度を高速化したいデータ保存に最適。３つの中で一番高速。

参考
[Amazon EBSとは？S3との違いやユースケースを解説](https://bcblog.sios.jp/what-is-amazon-ebs/)

---
## RDS(Aurora)
MysSQL及びPostgreSQLと互換性のあるリレーショナルデータベース

**【特徴】**
* 高いスペック
MySQLの5倍、PostgreSQLの3倍のスループット。商用データベースと同じ機能を10分の1程度のコストで動かせる
* データ保管時に暗号化できるため高い信頼性
* MySQL・PostgreSQLとの互換性
* 最大15個のリードレプリカ生成（他のRDSでは最大5個まで）
読み取り専用のインスタンス。アクセス頻度の高いデータに対して処理速度を向上させる。
自動フェイルオーバー機能を備えており、セカンダリDBとしても機能する
* Aurora Serveless
ユーザーからのリクエストに応じて自動的に起動停止、容量を拡大または縮小をする

参考
* [【AWS解説】Amazon AuroraとRDSは何が違う？違いやAurora特有の機能を説明](https://ryonotes.com/difference-between-amazon-rds-and-amazon-aurora/)
* [Amazon Auroraの特徴と使い方を解説！Amazon AuroraとRDSの違いや料金設定・導入のメリットも比較
](https://agency-star.co.jp/column/amazon-aurora)

---
## CloudWatch
AWSの各種リソースを監視するサービス
サービスは「CloudWatch」「CloudWatch Logs」「CloudWatch Events」の3つに分類される

**【CloudWatch】**
* CPUやメモリなど複数項目をグラフ化してダッシュボードを作れる
* クレジット（利用料金）も監視できる
* 監視以外にリソースの状況に応じて、メール送信、再起動、AutoScalingさせたりできる

**【CloudWatch Logs】**
* 各種ログを取得し、アプリケーションやOSがエラーログを吐いたら管理者のメールに通知できる

**【CloudWatch Events】**
* APIのイベントをトリガーに何らかのアクションを実行させるもの
* ユースケースには、インスタンスの削除でアラートを通知する、コンソールに特定のユーザーがサインしたときにアラート通知するなど。

参考
[【運用管理】 AWSの監視ツール「CloudWatch」で何ができるの？](https://biz.nuro.jp/column/aws-mama-006/)

---
## SNS(Simple Notification Service)
サーバーレスでアプリケーションからの通知を可能にするサービス

**【特徴】**
* イベントドリブンのメッセージ通知を実現
* モバイルのプッシュ通知にも対応
* セキュアなメッセージプッシュ
* 前払い料金・最低料金なし

参考
[Amazon SNSとは ～手早く、安価なメッセージ通知プラットフォームの特徴～](https://business.ntt-east.co.jp/content/cloudsolution/column-134.html)

---
## Lamda
サーバーレスを実現するためのプログラム実行環境を提供するサービス

通常、アプリケーションを動かすとしたら
EC2立ち上げ、WindowsやLinuxの環境を構築し、Webサーバーの用意
↓
APサーバーも用意（Webサーバーが代替するケースもあります）
↓
プログラムを用意

Lamdaであれば、WebサーバーやAPサーバー不要で、プログラムだけ開発すれば動かすことができる
LamdaはJava、Node.js、C#、Pythonのプログラミング言語に対応。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554111/7fa65545-2e17-ca94-14e3-1f317d40917b.png)

参考
[「Lambda」ってなにがスゴイんですか？](https://biz.nuro.jp/column/aws-mama-014/)

---
## Lamda

**【ユースケース】**
「S3に画像ファイルがアップロードされたら、リサイズしたサムネイル画像を生成する」

S3に画像ファイルがアップロードされたのをトリガーとして、Lamdaが画像リサイズ処理を実行し
Webサイトやモバイルサイトに最適な画像に変換できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/554111/be69e472-77b1-4c06-3325-4f4269289e65.png)

**【特徴】**
* サーバーの運用管理が不要
* 処理が動いた分だけコストがかかる
* 100万リクエストにつき0.2USドル（100円以下）
* 毎月100万リクエストまでは無料

---

# まとめ
* CloudFront(CDN)・・・CDNサービス
* Route53(DNS)・・・DNSサービス
* ACM・・・SSL証明書発行サービス
* VPC・・・プライペートなクラウド環境の提供サービス
* ALB・・・負荷分散サービス
* EC2・・・仮想サーバーの利用サービス
* EBS・・・EC2向けブロックストレージサービス
* EFS・・・NASサービス
* S3・・・オブジェクト単位のストレージサービス
* RDS(Aurora)・・・互換性のあるRDBMS
* Cloudwatch・・・リソース監視サービス
* SNS・・・通知サービス
* Lamda・・・サーバーレスでコードを実行させるサービス

---
# 参考
[AWS アーキテクチャアイコン](https://aws.amazon.com/jp/architecture/icons/)
[AWS 初学者向けの勉強方法 6 ステップ！2022 年版！](https://aws.amazon.com/jp/blogs/news/2022-aws-beginner-learning/)
[【2021年】AWS全サービスまとめ](https://dev.classmethod.jp/articles/aws-summary-2021/)
[AWSのサービス一覧表を紹介！使い方や学習法も【2022年最新】](https://www.sejuku.net/blog/126921)
[AWS の クラウドが選ばれる 10 の理由](https://aws.amazon.com/jp/aws-ten-reasons/)
[AWS入門。AWSで何ができる？特徴やメリット、勉強方法を解説](https://bcblog.sios.jp/introduction-of-aws-feature-merit/#i)
[クラウドサービスのAWSを導入する6つのメリット](https://cloudnavi.nhn-techorus.com/archives/867)