AWSの各種サービス - ntuf/Tips GitHub Wiki

名称 特徴
EC2 EC2はコンピューティングだけ。
他のサービスと組み合わせて自由度が高い
止めていればお金はかからない。
Lightsail コンピューティング環境だけでなく、ストレージ、スナップショット、ロードバランサー機能、ファイアウォール、DNS機能などある
サーバーの複製が簡単
簡単にすばやくWebサイトやサービスを作成できます
小希望に向いている。止めていてもお金がかかる
ECR AWS Docker レジストリサービス
ECS Dockerコンテナを実行したり、管理したり
EKS AWS でマネージド Kubernetes を実行)
Lambda イベント発生時にコードを実行
Batch バッチ処理
Elastic Beanstalk ウェブアプリのデプロイと管理
Serverless Application Repository サーバーレスアプリケーションを検索、デプロイ、公開する
WAF Web Application Firewall
VPC Virtual Private Cloud
Route53 ドメインの取得。クラウドのDNSサービス

サーバーレスって何?
  https://qiita.com/y-some/items/e9b78468428d1c481fac
 常時サーバーを起動せずにやる手法らしい。
 サーバー運用の手間やコストについて大いにメリット
 レスポンスの即時性に難あり


■サブネットとは
ネットワークのセグメント。
VPC内に複数設置できる。
以下の3種類ある。 プライベートサブネット:インターネット通信ができない。VPCエンドポイントから利用してアクセスできる
パブリックサブネット:インターネット通信ができる。
VPNのみのサブネット:AWS Site-to-Site VPN接続の仮想プライベートゲートウェイで、VPNのみの接続ができる。

■ NATインスタンスとNATゲートウェイ
・NAT
NATとはそもそもプライベートIPアドレスをグローバルIPに変換する技術。

VPCとサブネットを使い分けることで 公開領域と 非公開領域を分割できる

パブリックサブネット(公開領域)
プライベートサブネット(非公開領域)

この性質とNATインスタンスを利用することで、プライベートサブネットに配置されたサーバーに対して以下のネットワーク要件が可能となる。

 ・ロードバランサー経由でのみアクセス可能
 ・外部からサーバーに直接アクセス不可能
(HTTP, HTTPS/SSH等全て)
 ・サーバーからの外部サイトはアクセス可能


・NATインスタンス

プライベートサブネットに配置されたサーバーから外部サイトヘアクセスするときに踏み台となる。 AWSコンソールのEC2から作れる
管理:ユーザーが行う
踏み台、ポート転送:できる
コスト:1000-3000円ぐらい

例: APIサーバーを内部に持ち外部の決済するサイトとの通信が必要なな場合、 パプリックサブネットに配置すると誰でもサーバーに接続できてしまう。セキュアなプライベートサブネットにAPIに立てるが、 アクセスできなくなってしまうが、NATインスタンスで外部に接続ができる。

・NATゲートウェイ
AWSコンソールのEC2,VPCから作れる
管理:AWSが行う
踏み台、ポート転送:できない
コスト:7000円ぐらい(ちょっと高い)

■ECS
Dockerコンテナを管理し、自動的にデプロイし、スケーリングするサ ービス WebアプリケーションをDockerでつくり、ECSで実行する方法
① Dockerfileを使用して、 Webアプリケーションのイメージをビルドし、 ローカルでコンテナを実行してテスト
②ECSクラスタを作成
コンテナを実行するためのリソース
③ECSタスク定義を作成
コンテナのイメージ、リソースの設定、ネットワーキングの情報を含む
④ECSサービスの作成
⑤ タスクのデプロイ

ECSは
バックエンドでEC2が使用されEC2インスタンスの作成や管理を自動化 する。EC2インスタンスはコンソールで確認することが可能。

■Docker
Dockerでは複数のコンポーネント (Webサーバー、アプリケーション サーバー、データベースなど)を1つのイメージにまとめることができ る(マルチコンテナアーキテクチャ)

WebサーバーとアプリケーションをDockerイメージにして、 DBへの接続は、ローカルにテスト用、AWSに本番用があるので、本番用とローカル用の環境変数をそれぞれ用意する (環境変数ファイルはDockerイメージには含めず) Dockerイメージから環境変数ファイルを読み込むようにする。

■SQS
サーバー間やシステム間のメッセージングに使われる。 非同期処理を行う必要があるときに使われる。 あるECシステムは 注文の処理に時間がかかっても、Webアプリが応答性を維持して顧客に 迅速なフィードバックしたい。 そのためにSQSでの非同期処理を行う。

Amazon SNSにSQSキューを投げることもできる。

■■セットアップを自動化する手法

User Data
EC2インスタンス作成時に、実行したいコマンドやスクリプトを指定することができます。User Dataは起動時に1度だけ実行されます。

CloudFormation
IaC(インフラをコードで管理する)ツールの一つ。 EC2インスタンスだけでなく、関連するリソース(ELB、RDS、VPCなど)の構築や構成を自動化できます。CloudFormationテンプレートにインストール手順を記述しておけば、スタックの作成時に自動でセットアップされます。YAML,JSONで記述する

AWS OpsWorks
AWS OpsWorksは構成管理サービスで、Chef呼ばれるレシピ形式で各層のセットアップ手順を記述できます。OpsWorks上でApache層やデータベース層を構築すれば、そのレシピに従ってソフトウェアのインストール・設定が行われます。

AWS Systems Manager
Systems ManagerのState Managerを使うと、定期的にEC2インスタンスに対してコマンドを実行したり、ソフトウェアをインストールしたりできます。事前にドキュメントにApacheやデータベースのインストール手順を記述しておけば自動化できます。 Ansible、Puppet、Chefなどの構成管理ツール これらの構成管理ツールを使えば、EC2にソフトウェアをインストールするPlaybookやRecipeを事前に用意しておき、インスタンス起動時に実行させることで自動化できます。


■AWS CloudFormation
AWS リソースのテンプレートを定義し、そのテンプレートを使用して環 境を再現することができる。 開発、テスト、本番などの異なる環境で同じ構成を簡単に作成できる。JSONまたはYAML形式で記述できる。

User DataでできることはCloudFormationでも実現できる。 CloudFormationのUserDataプロパティにスクリプトやコマンドを記述する。
⚠️ **GitHub.com Fallback** ⚠️