DEV Community

kaede
kaede

Posted on • Edited on

AWS 基礎 Part 0 -- EC2 などの AWS サービスと用途の整理

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 へのアクセス

これらが許可される。


Top comments (0)