コンピューティングサービス
Amazon Elastic Compute Cloud(EC2)
- AWS上で仮想サーバーを提供するサービス
- 作成された仮想サーバーをEC2インスタンスという
構築の流れ
1. Amazon Machine Image(AMI)の選択
- EC2インスタンスはAMIと呼ばれるイメージファイルから起動する
- 標準提供のAMI or ベンダーから提供されたAMIをAWS Marketplaceから利用
2. インスタンスタイプの選択
- vCPU(仮想CPU)とメモリ容量の組み合わせがパッケージ化している中から自由に選択する
- vCPUとメモリ容量のバランスによって、インスタンスファミリーと呼ばれるグループに分かれている
3. インスタンスの詳細設定
EC2のインスタンスを構築するネットワーク情報/IAMロールを設定する
4. ストレージの設定
- EC2インスタンスに接続するストレージを選択する
- EBSやインスタンスストアを選択する
EBS(Elastic Block Store)
EC2と共に使用するための、長期記憶用のブロックストレージサービス
インスタンスストア
ホストコンピュータに物理的に接続されたディスク上にある、一時記憶用のストレージ
5. タグの追加
EC2インスタンスやストレージにタグを追加して、運用の効率化/課金の振り分けを行う
6. セキュリティグループの設定
- EC2へのアクセスを制限するためのファイアウォール機能
- AWSではセキュリティグループでアクセス制御するのが一般的
7. キーペアの設定
- EC2インスタンスへのログインは公開鍵認証方式を採用している
- 公開鍵と秘密鍵を発行する
- 公開鍵:AWSが管理
- 秘密鍵:ユーザーが管理し、ログイン時に使用する
- 秘密鍵を紛失した場合は、新たにキーペアを発行して別のEC2インスタンスを起動する
秘密鍵を紛失すると構築したEC2インスタンスにログインできなくなるため注意が必要
Amazon Machine Image(AMI)
- EBSのスナップショットとEC2インスタンスの構成情報から成り立っている
- OSには各種Linux/Windowsサーバー/Amazon Linuxが利用可能
- Amazon Marketplaceで用意されているサードパーティ製のAMI or ユーザー自身で作成したAMIを利用する
Auto Scalingの起動設定にAMIを指定することで、同じ設定のEC2インスタンスを必要な時に必要な分だけ自動構築できる
動作しているEC2インスタンスと同じ環境を別リージョンに複製する場合
- AMIをコピーして複製先のリージョンを指定
- 新しいリージョンに複製されたAMIからEC2インスタンスを起動する
AMIの種類
EBS-Backedインスタンス
- EBSをOSのルート領域として利用したEC2インスタンス
- 不揮発性のため、インスタンスが停止してもデータは永続化する
Instance Store-Backedインスタンス
- インスタンスストアをOSのルート領域として利用したEC2インスタンス
- 揮発性のため、インスタンスが停止したらデータは削除される
EC2インスタンスのライフサイクル
状態 | 内容 | 課金対象 |
---|---|---|
pending | インスタンス起動前 | 対象外 |
running | インタンス起動中 | 対象 |
stopping | インスタンス停止準備中 | 対象外 |
stopped | インスタンス利用不可/再開は可 | 対象外 |
shutting-down | インスタンス削除準備中 | 対象外 |
terminated | インスタンス完全削除/再開不可 | 対象外 |
EBS-Backedインスタンスでは停止処理が可能
Instance Store-Backedインスタンスでは停止状態に遷移できない
ユーザーデータとインスタンスメタデータ
ユーザーデータ
- EC2インスタンス初回起動時に一度だけスクリプトを実行できる機能
- AMIからEC2を起動するとき、最新のコンテンツを反映する場合などに利用する
インスタンスメタデータ
- EC2インスタンス自身に関するデータで、実行中のインスタンスを設定/管理するために利用する
- リンクローカルアドレスにブラウザ or cURLコマンドでアクセスして取得する
- インスタンスID
- プライベートIPv4アドレス
- パブリックIPv4アドレス
- ローカルホスト名
- 公開鍵
AWS Lambda
Lambda関数と呼ばれるアプリケーションコードをデプロイしただけで実行できるサーバーレスなサービス
Lambdaへの連携イメージ
ExecutionRole
- LambdaにアタッチされたIAMロール
- LambdaはIAMロールに従って各AWSサービスにアクセスするため、アクセス制御設計が必要になる
ロギング
Lambda関数の処理結果はCloudWatch Logsに保存される
・Lambdaと名前がついているが、実際はAmazon CloudFrontの機能の一つ
・アプリケーションユーザーに最も近い場所でコードが実行されるため待ち時間が短縮される
Amazon API Gateway
- APIの作成/配布/保守/監視/保護を簡単に行えるサービス
- サーバー管理の必要がないため、Lambdaと組み合わせることでサーバーレスアプリケーションを実装できる
API GatewayとLambdaとの連携イメージ
コンテナ関連のサービス
Amazon Elastic Container Service(ECS)
- 複数の仮想環境(コンテナ)を管理し、起動/削除/監視を行えるコンテナオーケストレーションサービス
- Dockerコンテナを簡単に実行/停止/管理できる
仮想化の種類
ハイパーバイザー型仮想環境
- サーバーへ直接インストールし、仮想マシンを稼働
- ハードウェアを直接制御できる
コンテナ型仮想環境
- ホストOS上にDocker等をインストールして仮想環境を構築する
- 一台のサーバーで多くのコンテナを稼働できる
ECS構築手順
1. クラスター作成
- EC2インスタンスを論理グループ化する
- インスタンスタイプ/インスタンス数/EBSストレージ容量を設定
2. タスク定義
- Dockerイメージの格納先の設定
- メモリ使用料の制限
- ネットワーク/ストレージ/ヘルスチェックに対する項目の設定
3. ELBの設定
トラフィックをコンテナ全体に分散して処理するためにElastic Load Balancingの設定を行う
4. サービス設定
クラスター上で起動するコンテナ数/最大数を設定する
Amazon Elastic Kubernetes Service(EKS)
- Kubernetes向けのコンテナオーケストレーションサービス
- インスタンス数やEBSストレージの容量を定義すると、状況をモニタリングしながら定義した状態になるように自動管理する
- 負荷の増減に対しても、自動スケーリングしてくれる
Kubernetes
分散されたホスト上でDockerなどのコンテナを利用するためのオーケストレーションツール
AWS Fargate
コンテナ向けのサーバーレスコンピューティングエンジン
手動でコンテナを管理する場合
- コンテナイメージのビルド
- ECSインスタンスの定義とデプロイ
- コンピューティングリソース/メモリリソースのプロビジョニングと管理
- アプリケーションを別々の仮想マシンに分離させる
- アプリケーションとインフラの両方を別々に実行して管理
Fargateを利用すれば、コンピューティングリソース/メモリリソースの定義やアプリケーションの実行/管理を行うだけで良い
スケールを含むコンテナの管理をFargateに任せることができる
その他のコンピューティングサービス
Amazon Elastic MapReduce(EMR)
- 大量のデータを迅速/容易にかつコスト効果よく処理するためのWebサービス
- データの分散処理環境の構築と分散処理が容易に行うことができる
VM(Virtual Machine) Import/Export
VM Import
オンプレ環境に作成した仮想サーバーのマシンイメージをEC2インスタンスにインポートするサービス
VM Export
VM ImportでAWS上にインポートされたEC2インスタンスをオンプレ環境で動作する仮想サーバーのマシンイメージにエクスポートするサービス
Amazon LightSail
アプリケーションやWebサイトを素早く構築できるように、仮想サーバー/ストレージ/データベース/ネットワークなどの環境と構成できるオールインワンなコンピューティングサービス
参考