AWSのコンピューティングサービス

出展：[AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC-%E5%B1%B1%E4%B8%8B-%E5%85%89%E6%B4%8B/dp/4797397403/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3ERB303UT76DT&keywords=aws%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC&qid=1578744077&sprefix=AWS%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%2Caps%2C266&sr=8-1)

#EC2

##EC2の概要
・Amazon Elastic Compute Cloudの略
・仮想サーバがサービスとして提供される

##EC2の特徴

###必要な時に必要なだけの量を使用
・必要なときに必要なだけの***インスタンス***を稼働させることができる
・必要なEC2インスタンスの数を事前に予測する必要はない

###使用した分にだけコストが発生
・EC2の料金の構成
　・EC2稼働に対しての料金
　　　EC2イオンスタンスが起動中の時間が課金対象となり、停止中は課金が停止する
　　　1時間単位で課金（Amazon Linux、Ubuntuでは秒単位）
　・データ転送料金
　　　リージョンの外にデータを転送（アウト）した場合にのみ、データ転送料金が発生する
　　　データ転送料金はリージョンによって異なる
　　　インターネットからAmazon EC2への転送受信（イン）には課金されない
　・ストレージ料金
　　　EBS（Amazon Elastic Book Store）の料金
　　　1GBあたりの***プロビジョニング***（ボリュームのサイズとして確保した容量）した料金

###変更可能なインスタンスタイプから性能を選択
・使い始めてから状態をモニタリングして***インスタンスタイプ***を変更できる
・インスタンスタイプによってインスタンスの稼働時間の課金単価が変わる
・運用を開始する前の、誤った性能予測の計算をする必要がなくなる

###数分でサーバを調達して起動できる
・数分でEC2を起動することができ、一度に複数台を自動で起動することも可能
・調達・起動を自動化することもできる
・経営の俊敏性が向上する

###世界中のリージョンから起動場所を選択
・数分でEC2を世界中にデプロイできる

###AMIからいくつでも同じサーバを起動できる
・EC2インスタンスは***AMI***（Amazon Machine Image）から起動する
・1つのAMIからいくつでもインスタンスを起動することができる
・同じ構成を持ったEC2インスタンスを複数起動することができる
・AMIの種類
　・***クイックスタートAMI***
　　・AWSがあらかじめ用意しているAMI
　　・OSとモジュールがインストール済みで用意されている
　・***マイAMI***
　　・ユーザが作成するAMI
　　・ほかのアカウントと共有することも、公開することも可能
　・AWS Marketplace
　　・ソフトウェアやミドルウェアがすでにインストールされている構成済みのAMI
　　・パートナーベンダーが提供
　・コミュニティAMI
　　・一般公開されているAMI

###セキュリティグループでトラフィックを制御できる
・EC2インスタンスへのトラフィックはセキュリティグループのインバウンド（受信）で制御する

###オペレーティングシステムを管理者権限で操作できる
・起動したEC2では、***キーペア***を使用してログインすることで、オペレーティングシステムを管理権限で操作できる
・キーペア：
　公開鍵と秘密鍵の2つの鍵ファイルをペアにして認証を行う
　ユーザはユーザ名と秘密鍵ファイルを使ってログインする
　公開鍵はAWSに保管される
　秘密鍵はユーザがOSの管理者だけがアクセスできる場所で管理する

###ユースケースに応じた料金オプション
・ユースケースに応じて料金オプションを使い分けることで、コスト効率よくEC2を使用できる
・***オンデマンドインスタンス***
　・料金オプションを使わずにEC2インスタンスを起動すると、オンデマンドインスタンスの単価が適用される
　・定価料金
　・秒単位、時間単位の課金により、必要なときに必要なインスタンスを起動できる
・***リザーブドインスタンス***
　・24時間365日（またはその75%以上）稼働し続けることが決まっているインスタンスがある場合に使用
　・1年または3年の使用期間を事前設定することで割引を受けることができる
　・支払方法の選択が可能（全額前払い、一部前払い、前払いなし）
・***スポットインスタンス***
　・未使用のEC2キャパシティに対して支払ってもよい金額をリクエストとして設定し利用する
　・スポット料金がリクエスト料金を下回った際に起動、上回ったときに終了する
　・処理途中で終了しても問題がないユースケースに向いている
・***Dedicated Hosts***
　・EC2が起動するホストを専用するオプション
　・セキュリティ／ガバナンス要件、ライセンス要件を満たす目的で使用する
　・インスタンスではなく、ホストに対しての従量課金

#ELB
**ELBの概要
・Elastic Load Balancing
・EC2インスタンスの可用性を高めるためにELBを使用することができる

##ELBの特徴

###ロードバランサータイプ
・***Application Load Balancer***：HTTPまたはHTTPSのリクエストを負荷分散する
・***Network Load Balancer***：HTTP、HTTPS以外のTCPプロトコルを使用する場合に選択する
・***Classic Load Balancer***：以前のタイプのロードバランサー。以前の構成との互換性のために残されている

###ヘルスチェック
・ターゲットとしているインスタンスが正常かどうかのヘルスチェックを行い、正常なインスタンスのみにリクエストを送る

###インターネット向け／内部向け
・ELBはインターネット向けにも内部向けにも対応している
・インターネット向けだけでなく内部向けにもELBを挟むことによって、システムの可用性を高めることができる

###高可用性のマネージドサービス
・ELB自体が高可用性のマネージドサービスなので単一障害点とはならない

###クロスゾーン負荷分散
・ターゲットに対してアベイラリティゾーンを超えて負荷分散するかどうかの設定
・有効にしていると、すべてのターゲットインスタンスに対しリクエストが送信される
・リクエストの分散が均等となり、ターゲットインスタンスのリソースを無駄なく使える

#Auto Scalling
##Auto Scalingの概要
・Auto ScalingによってEC2インスタンスを必要なときに自動で増減できる
・Auto Scalingのメリットは高可用性、耐障害性、コスト効率化

##垂直スケーリングと水平スケーリング
・***垂直スケーリング***：
　・インスタンスのサイズを変更することによって、スケールアップ/スケールダウンを行う
　・システムの設計変更が発生
　・影響がないかの検証が必要
　・変更時にサーバ単位での停止が発生
　・上限はインスタンスタイプの最大サイズ
・***水平スケーリング***：
　・インスタンス数を変更することによって、スケールアウト/スケールインを行う
　・システムの設計変更ではない
　・変更時にシステム全体に対しての影響なし
　・上限なし
・垂直スケーリングよりも水平スケーリングのほうがスケーラビリティを確保しやすい
・Auto Scalingでは水平スケーリングを自動化する

##Auto Scalingの設定
###起動設定（何を）
・どのようなEC2インスタンスを起動するか
　・IAM
　・インスタンスタイプ
　・IAMロール
　・ユーザデータ
　・ストレージ
　・セキュリティグループ
　・キーペア

###Auto Scalingグループ（どこで）
・どこでEC2インスタンスを起動するか
　・起動設定名
　・アベイラリティゾーン（サブネット）
　・ELBのターゲットグループ
　・最小/最大/希望するインスタンス数
　・通知
　・タグ

###Auto Scalingポリシー（いつ）
・いつのタイミングで起動/終了するか
・***ターゲットポリシー***：
　・Auto ScalingグループのEC2インスタンス平均CPU使用率などを決めておくことで、AWSが自動的に最小数と最大数の間でEC2インスタンスを調整する
・***シンプルポリシー***：
　・CloudWatchのアラームに基づいて、Auto Scalingアクションを実行する
　・***クールダウン***：「その後待機」。Auto Scalingアクションが連続して発生し、インスタンスが頻繁に起動/終了されることを防ぐ
・***ステップポリシー***：
　・複数段階でのインスタンスの追加、削除を設定できる
　・***ウォームアップ***：インスタンスが頻繁に追加されることを防ぐ
・Auto Scalingアクションはポリシーだけではなく、時間を指定した***スケジュール***も実行できる

##アプリケーションデプロイの自動化
・EC2のユーザデータを使うことでコマンドを自動実行し、デプロイ処理を自動化することができる
・EC2の情報（IPアドレスやインスタンスID）はメタデータから取得できる

#Lambda

##Lambdaの特徴

###サーバの構築が不要
・実行したいプログラムのランタイムを選択してソースコードをアップロードすれば実行できる（すぐに開発を始められる）
・OSの用意、実行するためのミドルウェアのインストール、環境設定などの作業は不要

###サーバの管理が不要
・サーバの運用から解放され、開発に注力できる

###一般的な言語のサポート
・Lambdaがサポートする言語
　・C#/PowerShell/Go/Java/Node.js/Python/Ruby
・Labdaを使うために新しい言語の勉強は不要。使い慣れた言語ですぐに始められる

###並行処理/スケーリング
・リクエストに応じて水平的にスケーリングして、並行で関数が実行される
・Auto Scalingを設定する必要がない
・初期設定では、アカウント全体で同時実行数1000という制限があるが、同時実行数の制限引き上げをリクエストすることができる

###柔軟なリソース設定
・メモリを割り当てることで、CPU等、他のリソースの性能も割り当てられる
・設定できるメモリの範囲は128MBから3008MBまで、64MB刻み
・タイムアウト時間は最長で15分

###ミリ秒単位の無駄のない課金
・実行されている時間に対してミリ秒単位の無駄のない課金がなされる
・実行されていない待機時間には課金されない

###他のAWSサービスとの連携
・AWSサービスの処理を簡単に自動化できる
・AWSサービスからのトリガーを使用することで、イベントからLambdaを実行できる