AWS 基礎 Part 0 -- EC2 などの AWS サービスと用途の整理
Tags: aws, japanese, ec2
Published: 2023-01-17 13:43:03


## why

サービス作れるようになりたい
S3 に HTML CSS IMG 置いて静的サイト作るしかできない状態。

AWS は、この S3 と、アプリが動くらしい EC2 しか認識できていない。

---

# EC2 を動かすイメージ確認

まずは動画で見てみる。

https://www.youtube.com/watch?v=HvrIPQ77xRY&t=802s

KLein さんの EC2 構築の動画を見るとこの様に解説されている。

VPC という大きな箱を作る。ネットワークの範囲領域らしい。
VPC にサブネットという単位を作る。VPC を分割するものらしい。
( VPC のままでは使えないのでさらに小さい箱を作ると予想 )

VPC にインターネットゲートウェイという穴を作る。インターネットからアクセスできる口らしい。クリーンアーキテクチャで言う Port と解釈した。

サブネットの中に EC2 インスタンスを作成できる

そして EC2 インスタンスでバックエンドのアプリを作り、外部からアクセスできる様にしていく様だ。

---
---

# 用語整理

---

## VPC ( Virtual Private Cloud )

https://www.sbbit.jp/article/cont1/51188

ビジネス+IT のサイトによると

Amazon Virtual Private Cloud。
プライベートの仮想ネットワーク空間らしい。

EC2 などの AWS サービスを置ける論理的なまとまりのようだ。

他の VPC にも接続できるらしい。

Public でインターネットから接続できるようにできる。
Private で内部のサービス？でしか接続できないようにもできるらしい。

---

## EC2

https://dev.to/kaede_io/aws-ji-chu-part-0-sabisutoyong-tu-nozheng-li-34jj-temp-slug-9710180/edit

Amazon Elastic Compute Cloud
伸縮性のあるコンピューターのクラウド。

インスタンスと呼ばれる、CPU やメモリを決められる仮想サーバーらしい。

https://aws.amazon.com/jp/ec2/?nc1=h_ls

公式によると 99.99% 落ちない強さがあるらしい。
それと安さが売りなようだ。

https://sitecloud.jp/blog/2729/

sitecloud によると、1ヶ月の料金が

* 静的サイト 2,600 円
* 中規模 EC サイト 10,000 円
* 大規模 Web アプリ 20,000 円

くらいらしい。

実際動画で見てみると、

Ubuntu や Amazon Linux を立てられる
Linux なのでなんでも大体立てられる

様に見えた。

---

## ECS

Docker サーバー
Docker で DL できるものならなんでもおける様に見える。

ECR などの Docker レジストリがある前提。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html

コンテナごと権限が与えられるから何かに便利らしい。
Docker コンテナだからビルドされたアプリケーションイメージ push 時に CI/CD として連動機能を作れるらしい。

ログを　CloudWatch におけるらしい。

https://zenn.dev/optfit/articles/a6026924062dd7

OptFit さんの記事によると

EC2 をスケールさせて運用した場合と比べて、変更の反映が楽らしい。

---

## CloudFornt

EC2 などの前に噛ませるようにするキャッシュサーバー。

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

キャッシュサーバーとしてインターネットの各地でデータを持ってくれるから、近いところからデータが取れてアクセスが速くなると解釈した。

html, css, js, image, などを置けるらしい。

https://zenn.dev/kuma2/articles/f7eeb470e930e7

kuruma さんの記事よれば、本体のサーバーの負荷も下げてくれるらしい。それで安くなるなら嬉しいと感じる。


---

## API Gateway

アプリケーションサーバーの前に噛ませる API サーバー。
( 要検証 )


https://www.redhat.com/ja/topics/api/what-does-an-api-gateway-do

Red Hat のサイトによれば
API の集約らしい。
BackEnd For FrontEnd のようなものだと予想。

管理できるので、認証や監視、アラートもできるらしい。

https://www.youtube.com/watch?v=EpEETIox03s&t=2618s

AWS 公式の動画によると

インターネット -> ( CloudFront ) -> API Gateway -> VPC -> サブネット

が一般的な構成らしい。

REST or WebSocket の API を扱えるようだ。
prod or dev の複数環境を作れて、dev のみアクセス制限をなくしたりできるらしい。

また、レスポンスを監視してくれるので、
( Elastic APM を入れなくても )
400/500系の エラーがいつ何回でたか記録してくれるようだ。

https://youtu.be/EpEETIox03s?t=1672

* Lamda 関数の呼び出し
* 外部 API の呼び出し
* Mock データのレスポンス
* 内部の AWS サービスの呼び出し

これらを行うことができるようだ。

内部の AWS サービスを使えるのがいちばんの価値だと予想した
Lamda については全く理解していない。

---

## Aurora

ムカデみたいな名前しやがって
(Arthropleura, 閲覧注意)

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html

公式によると

MySQL と Postgres をおける DB エンジン。

Amazon RDS (Relational Database Service) の一部。

DB エンジンとは、Docker と Postgres などで作った DB サーバーを動かすところと解釈した。

* バックアップ
* 障害検知
* 修復

などの便利機能が使えるらしい。

---

## Lambda

Node.js や Python で書いた関数をおける。
AWS 各サービスから呼べる。

処理時間が 15min までなので、すぐ終わる処理しかできない。

https://www.benjamin.co.jp/blog/technologies/lambda-2-eventbridge/

EventBridge で定期実行してバッジ処理する

https://qiita.com/kamome_ss/items/581c0369ce9a4268a08b

コードを書いて ECS の Task を呼ぶ

これらのことができるらしい。

---

## AWS サービスまとめ

EC2 が基礎となるスケールしやすい仮想サーバーで
ECS がたくさんの EC2 を管理しやすくするもの
ECR が ECS で使うための Docker イメージの置き場
CloudFront がインターネットの手前のキャッシュを活用して負荷を下げもの
API Gateway が実質 BFF
Aurora が DB サーバー置くところ

だと解釈した。

----
----

# 用語

---

## Security Group

通信が来る時のインバウンドルールを設定するもの。
各サービスを作るときに嵌めて作る。後からは変更できない認識。

https://www.acrovision.jp/service/aws/?p=1550

ホワイトリスト方式なので、追加していかないとどこからもアクセスできない。

- EC2インスタンス
- ECSコンテナの{タスク,サービス}

これらを作成するときに必須。

- SSH: 22, 0.0.0.0
- HTTP: 0.0.0.0
- Custom TCP: {my.private.server.ip}/32, 0.0.0.0
- Custom TCP: 8080, 0.0.0.0
- MySQL/Aurora: 3306, 0.0.0.0

例としてこれらだと

- インターネットからの SSH アクセス
- インターネットからの(デフォルトの)80ポートへのアクセス
- プライベートサーバーからの(デフォルトの)80ポートへのアクセス
- インターネットからの8080ポートへのアクセス
- インターネットから MySQL/Aurora へのアクセス


これらが許可される。

---