【AWS】基礎知識まとめ

#可用性・冗長化
|手段|具体例|
|---|---|
|バックアップ＆リストア|バックアップファイルのみを別のリージョンに退避しておく考え方。|
|パイロットライト|停止した状態のサーバーを別のリージョンに用意しておき、障害発生時に立ち上げる。|
|ホットスタンバイ|パイロットライトのサーバー稼働バージョン。ただし、パブリックからのアクセスは受け付けていない。|
|マルチサイト|ホットスタンバイでパブリックに後悔しているバージョン|

#VPC間接続
|手段|具体例|
|---|---|
|VPC ピアリング接続|2 つの VPC を接続し、それらの間でのトラフィックをプライベート IP アドレスを介してルーティングします。これにより、VPC は同じネットワーク上にあるのと同じように機能します。これらの接続は、物理的なハードウェアに依存しないため、単一障害点やネットワーク帯域幅のボトルネックなど、一般的な問題の影響を受けません。|
|VPC エンドポイント|インターネットアクセスを必要としない、VPC内のインスタンスと他のAWS サービス間をつなぐプライベート接続です。|



#EC2
##インスタンスタイプ
|種類|内容|
|---|---|
|リザーブドインスタンス|利用料が割引になるお得なサービスですが、契約期間が1年もしくは3年のどちらかと長い|
|オンデマンドインスタンス|コンピューティング性能の料金を、長期契約なしで、時間または秒単位 (最低 60 秒) で支払う|
|スポットインスタンス|オンデマンド価格より低価で利用できる未使用の EC2 インスタンスです。スポットインスタンス では未使用の EC2 インスタンスを時価でリクエストできるため、Amazon EC2 のコストを大幅に削減できます（入札式のオークションのよなもの）|
|	Dedicated インスタンス|物理ホストをアカウントに割り当て、その物理ホスト内でインスタンスを起動していく。アカウント専用の物理サーバで、コンプライアンス対応(他組織との機器の同居を禁止する場合など)に用いられる。|

##IPの割当
|種類|内容|
|---|---|
|Elastic IP|Elastic IP は、異なる EC2 インスタンスに単一の IP アドレスを継続して関連付けできる機能。インスタンスを停止→立ち上げを行ってもIPが変わらない|
|パブリック IP|インスタンス起動時に自動的に割り当てられるグローバルIPアドレス。インスタンス停止→起動で変わってしまう。|

##EC2 Image Builder
簡単で迅速にアップデートのデプロイと"ゴールデン"VMイメージを自動で作成・管理してくれる。
イメージにはいろんなアプリケーションが含まれますが、それらの更新を自動で行ってくれる。





#ベストプラクティス
##AWS Trusted Advisor
- 「コスト最適化」、「パフォーマンス」、「セキュリティ」、「フォールトトレーランス」の４つの観点から、利用者のAWS環境をAWSが自動で精査し、推奨設定のお知らせをしてくれる機能。

#環境構築
#AWS CloudFormation
- AWSで環境を構築するときに、リソースの設定やプロビジョニングをコード化したテンプレートを作成できます。 それをもとにすれば、次に新しい環境を構築するとき、時間や手間を大きく削減できるのです。

#オンプレミスへの対応
##接続方法
|手段|具体例|
|---|---|
|インターネット接続|HTTPS/SSH|
|インターネット接続|VPN|
|専用回線接続|AWS DirectConnect　※相互接続データセンター」のAWS Direct Connect用の物理ポートと接続する|

##Storage Gateway
-AWS Storage Gateway は、オンプレミスのソフトウェアアプライアンスをクラウドベースのストレージと接続し、組織のオンプレミスの IT 環境と AWS のストレージインフラストラクチャ間でシームレスにセキュアな統合を実践するサービスです。

|手段|具体例|
|---|---|
|ゲートウェイキャッシュ型ボリューム|プライマリデータを Amazon S3 に保管し、頻繁にアクセスするデータをローカルに保持します。ゲートウェイキャッシュ型ボリュームを使用すると、プライマリストレージのコストを大幅に削減でき、ストレージをオンプレミスで拡張する必要性が最小になり、頻繁にアクセスするデータへの低レイテンシーのアクセスを維持できます。|
|ゲートウェイ保管型ボリューム|データセット全体への低レイテンシーアクセスが必要な場合は、プライマリデータをローカルに保管し、そのデータのポイントインタイムスナップショットを非同期に Amazon S3 にバックアップするようにオンプレミスゲートウェイを設定できます。ゲートウェイ保管型ボリュームは、災害復旧のための代わりの容量が必要な場合などに、ローカルまたは Amazon EC2 から復元できる、耐久性が高く低コストのオフサイトバックアップを提供します。|
|ゲートウェイ仮想テープライブラリ（ゲートウェイVTL）|を使用すると、クラウド上にゲートウェイ1つにつき1500本もの仮想テープをコレクションできます。各仮想テープは、テープライブラリかテープシェルフに格納できます。仮想テープライブラリはAmazon S3によってバックアップされた仮想テープを格納出来ます。また、仮想テープシェルフはAmazon Glacierによってバックアップされた仮想テープを格納できます。仮想テープライブラリは、バックアップアプリケーションに仮想テープへのオンラインアクセスを提供する業界標準のiSCSIインターフェイスを公開します。格納したデータへのアクセスの頻度が低下するなどの状況に応じて仮想テープをライブラリからシェルフに移動することが出来ます。これによりストレージコストをさらに下げることが出来ます。|
#ファイル共有
##Network File System
Network File System (NFS) は、主にLinux/UNIXで利用されているファイル共有のプロトコルです。
Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES), CentOS, Ubuntuなど主要なLinuxディストリビューションに標準搭載されています。

##Server Message Block
Server Message Block (SMB) は、主にWindowsで利用されているファイル共有のプロトコルです。
歴史的経緯でCommon Internet File System (CIFS) と呼ばれることもあります。
クライアント用OSのWindows 8.1, 10、サーバ用OSのWindows Server 2016, 2016 R2, 2019に標準搭載されています。

#クラウドのアプリケーションの迅速なデプロイ
##Elastic Beanstalk
- ウェブアプリケーションやサービスを、Apache、Nginx、Passenger、IIS など使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービス
- コードをアップロードするだけで、Elastic Beanstalk が、キャパシティのプロビジョニング、ロードバランシング、Auto Scaling からアプリケーションのヘルスモニタリングまで、デプロイを自動的に処理します。同時に、お客様のアプリケーションが稼動している AWS リソースの完全な制御を維持でき、いつでも基盤となるリソースにアクセスすることができます。

#コンテナ
##Amazon Elastic Container Service(ECS)
- クラスター（＝複数EC2インスタンスの集合）の上でDockerコンテナを使って、Serviceを動作させる

##Amazon Elastic Kubernetes Service (EKS)
- 独自の Kubernetes コントロールプレーンを立ち上げたり維持したりすることなく、AWS で Kubernetes を簡単に実行できるようにするマネージド型サービス

##Amazon Elastic Container Registry (ECR) 
- 完全マネージド型の Docker コンテナレジストリです。 このレジストリを使うと、開発者は Docker コンテナイメージを簡単に保存、管理、デプロイできます。

#システム構成の一元化
##AWS OpsWorks
- Chefをベースにしたサービスです。Chefのレシピを使ってシステムの構成などを一元的に設定できます。また、アプリケーションのデプロイ方法、スケーリング方法、保守方法なども事前設定することで自動化を図ります。

#高速コンテンツ配信ネットワーク機能
##Amazon CloudFront
- データ、動画、アプリケーションなど、静的・動的なさまざまなWebコンテンツをスムーズに配信できるコンテンツデリバリネットワーク（CDN）であるため、多くのサービスを支えることができます。
- 世界規模のデータセンターであるエッジロケーションのネットワークを通じてコンテンツの配信が行われ、ユーザーからのリクエストをルーティングする仕組みです。

#Amazon Simple Workflow(SWF)
- マネージド型のタスクコーディネータ
商品の発注/請求処理のワークフロー（処理の流れ）のような、重複が許されない、厳密に一回限り順序性が求められる処理のコーディネータとしての利用に適している。
- ワークフロースターター、もしくはワーカー・Lambdaタスクから受け取った情報を元に決定タスクを作成し、ディサイダーへ渡す。

ワークフロースターター
SWFを起動し、ワークフロー開始の起点となるアプリケーション。
例えば、顧客の注文を起点に動作するワークフローだと注文を受けるアプリケーションがワークフロースターターになる。

ディサイダー
SWFから受け取った決定タスクを元に次に実行するタスクを決定する。
SWFを使用するユーザ自信がプログラミングして作成する必要があります。

#Amazon EMR
- ビッグデータプラットフォーム
- クラスターを数分で起動して簡単に使用できます。セットアップやHadoop の設定といった面倒な作業は不要。
- 安定したハイブリッドエクスペリエンスを実現するフルマネージドサービスAWS Outpostsを利用できます。

クラスター（Cluster）は「房」「集団」「群れ」の意味。ネットワークに接続した複数のコンピューターを連携して1つのコンピューターシステムに統合し、処理や運用を効率化するシステムのこと。

Apache™ Hadoop® は、大規模データセットの効率的な処理に使用できるオープンソースのソフトウェアプロジェクトです。データの処理と保存を単独の大型コンピュータで行う代わりに、Hadoop では商用ハードウェアをクラスター化して、巨大なデータセットの分析を並列実行できます。

Apache Sparkは巨大なデータに対して高速に分散処理を行うオープンソースのフレームワークです。JavaやScala、Pythonなどいろいろなプログラミング言語のAPIが用意されています

#信頼性の設計
##Elastic Load Balancing(ELB)
- 受信したアプリケーションまたはネットワークトラフィックを、EC2インスタンス・コンテナ・IPアドレス・複数AZなど、複数のターゲットに分散させる機能
- マネージド型サービス
- 従量課金制
- アプリケーションの可用性と耐障害性の向上の為に使用
- VPC上に構成する
- 必ず2つ以上のAZを指定する

###特徴
- インターネットからのみアクセス可能なELB（Internet-Facing ELB）とVPC内やオンプレミス環境からのみアクセス可能なELB（Internal ELB）を選択可能
- ELB自体もプライベートIPアドレスを利用
→ ELBを配置するサブネットは最低でも /27ビットのCIDRブロックを持つ必要がある
- ELB作成時に自動的に生成されるエンドポイントと呼ばれるURLに独自ドメイン名を指定可能
→ 自社のDNSサーバーにCNAMEレコードを追加する、またはRoute 53にALIASにレコードを追加する
- アクセスログをS3に出力可能

##Auto-Scaling
- 安定した予測可能なパフォーマンスを可能な限り低コストで維持するためにアプリケーションをモニタリングし、容量を自動で調整するサービス
- 複数AZにまたがって設定可能なことによる耐障害性の向上を実現可能（リージョンをまたぐことは不可）


##Amazon Relational Database Servie(RDS)
- 様々なデータベースソフトウェアに対応したフルマネージドのリレーショナルデータベース
- 7種類のRDBMSからエンジンを選択肢、利用可能

MySQL
Oracle DB
SQL Server
PostgreSQL
MariaDB
Amazon Aurora（MySQL-compatible）
Amazon Aurora（PostgreSQL-compatible）

###構成要素
1. 汎用SSD
様々なワークロードに対応できるコスト効率の高いストレージとして使用

2. プロビジョンドIOPS
低I/Oレイテンシー及び一貫したI/Oスループットが必要となるI/O負荷の高いワークロード（特にデータベースワークロード）のニーズを満たすように設計されている

3. マグネティック
下位互換性のためにマグネティックストレージをサポートしている

#Route53
DNSサービスを提供するマネージドサービス
DNSサービスを実行するためのサーバー管理、冗長化対策、セキュリティ対策を担う

- サーバーは複数ロケーションに分散して配置されている
- 稼働率はSLA上100％
- 特定リージョンに紐付くものではなく、グローバルサービスとして利用される
- 特定のVPCからの問い合わせとそれ以外からの問い合わせを識別し、異なる応答を返すことが出来る

#データベース
##DynamoDB
- キーバリューストア型のデータストアのマネージドサービス
- DynamoDB Streamは、DynamoDBに対する項目の追加、変更、削除をイベントとして検出できる機能です。 DynamoDB Streamを使うことで、項目が追加・変更された時にプッシュ通知を飛ばしたりといった実装が可能になります。

###特徴
- NoSQLデータベース
- データは3つのAZに分散して格納される
- 格納容量に上限がない
- データ取得のレイテンシーが低いため、キャッシュの用途にも利用出来る
- ビッグデータ処理、大量データ処理が必要なアプリケーション、Web行動データ、ログ管理等に利用
- トランザクション機能は備えていない

##Aurora
- MySQL 及び PostgreSQL と互換性がある完全マネージド型のリレーショナルデータベースエンジン

###特徴
- 高性能のストレージサブシステムを含み、それを利用するようカスタマイズされている
- 既存のアプリケーションの殆どを変更することなく、MySQLのスループットの5倍
- PostgreSQLのスループットの3 倍を実現する
- 3つのAZに2つずつ、計6つのデータコピーを持つ
- Auroraノードに障害が発生すると、別のAZで起動中のReaderノードが自動的にWriterノードに昇格し、クラスターエンドポイントの指すAuroraノードが新しいWriteノードに変更されることで復旧が行われる

##Amazon Simple Storage Service (S3)
- クラウド型のオブジェクトストレージサービス。
- オブジェクト（ファイルなど）単位で出し入れが可能なストレージです。各地の物理的なデータセンターに分散して保存されていることで障害に強かったり、オブジェクト単位でのバージョンを残すことが出来たりと、メリットが多いです。
- S3の最もメジャーな使い方は、ファイルをS3に保存するストレージ機能を使うことです。
ファイルのバックアップであったり、ファイル処理の加工前、もしくは加工後のファイルを保存する、画像ファイルやCSSなどWebで使う静的なファイルをS3に置いて配信するなど、使い方は無限大です
S3は事前に保存容量を決める必要は無く、入れた分だけ課金されますので、FTPサーバーのようにストレージの空きを気にする必要もありません。 思い立ったらすぐにS3に保存する事ができます。

|名称|詳細|
|---|---|
|Standard-IA| "IA"とは[Infrequent Access]、つまりたまにしかアクセスしないファイル用、という意味を指します。普段はそんなに頻繁にアクセスするわけではないけれどGlacierに入れてしまうと取り出すときのコストが大きすぎる、、、そういう時にこのStandard-IAを使うと使い勝手を通常のS3と同じにしながら料金を抑える事が出来ます。ただし、ライフサイクルポリシーの設定はできない。|
|バージョニングを有効化|バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクトを維持できます。|
|事前署名付きURLの発行|発行することで、AWSのアカウントを持っていない人がS3のオブジェクトにアクセスできる。また、公開期限を設けることも可能。|
|One Zone-IA|オブジェクトを1つのアベイラビリティーゾーン（AZ）に保存するストレージクラスだ。「Amazon S3標準」クラスや「Amazon S3標準 - 低頻度アクセス（標準 - IA）」クラスでは、複数のAZでデータの耐障害性を確保する方式が採用されているが、それを必要とせず、アクセス頻度が低いデータ用の低コストなオプションを必要としているユーザー向けに設計されている。|

###S3の暗号化
|名称|詳細|
|---|---|
|SSE-S3|AmazonS3がデータ暗号化キーとマスター暗号化キーを管理し、暗号化の使用に追加料金はかかりません|
|SSE-KMS|AWSマネージド型キーまたは、カスタマー管理型のキーがありKMSでキーを管理、AWS Key Management Service の料金が適用|
|SSE-C|ユーザーが暗号化キーを管理|
|CSE|ユーザーが暗号化に係る作業すべてを行い、AWSは関わらない|

#Amazon S3 Glacier
- 大量 (大抵の場合ペタバイト以上) の重要データを収集して保存することに特化したもの。
- 書き出しに時間と費用がかかるが、保存していること自体のコストが少ない。
- ライフサイクルポリシーの設定可能。

##Amazon Elastic Block Store (EBS)
- EC2 にアタッチ可能なブロックレベルのストレージサービスです。(仮想ディスク)。
- 一つのEC2インスタンスには複数のEBSボリュームをアタッチすることができます。
- 複数のEC2インスタンスから一つのEBSボリュームへアタッチすることはできません。
- 他のインスタンスにアタッチすることが可能です。
- 別のAZにあるEC2インスタンスにアタッチすることはできません。EBSボリュームを移動するには一度スナップショットとしてAMIを生成してから、AMIのAZコピー機能を利用して他のAZにコピーします。
- 内部的に冗長化されているので、耐久性に優れている。
- スナップショット機能でバックアップなどを撮っておくことができる。
- 暗号化されている。
- 後から容量を増やしたりなどすることができ、インスタンスを停止することなく実行できます。

##Amazon Elastic File System (EFS)
- ストレージ容量は保存するファイルのサイズ合計によって自動的に伸縮するため、ストレージ容量をあらかじめ決める必要がありません。
- スループット(読み書き速度)はストレージ容量に応じて増減しますが「プロビジョンドスループットモード」というモードを選択することによって必要なスループットを指定することができるため、高いスループットが要求されるユースケースにも対応することができます。

##Amazon FSx
- EFSのWindows対応版。OSがWindowsのEC2で使用。

##ElastiCache
- データをノードのメモリに保存するので非常に高速でデータの出し入れが可能です。ですがメモリにデータを保存しているのでノードが落ちてしまう（再起動を含む）と中のデータが無くなってしまいます。なのでElastiCacheには無くなっても良いデータを保存するようにしましょう。

###料金体系
「標準ストレージクラス」と「低頻度アクセスストレージクラス」の2つのストレージクラスが用意されています。
標準ストレージクラスではストレージ容量だけが課金の対象となるのに対し、低頻度アクセスストレージクラスではストレージ容量とデータ転送量の両方が課金の対象となります。
低頻度アクセスストレージクラスのストレージ料金は標準ストレージクラスのストレージ料金と比べて安価であるため、あまりアクセスしないファイルを低頻度アクセスストレージクラスのストレージに保存した方がサービスの利用料金を安く抑えることができます。
なお、「プロビジョンドスループットモード」を使用する場合、これらの料金に加えてスループットに対する料金が指定したスループットの数量に応じて発生します。

##Amazon S3やAmazon EBSとの違い
Amazon EFSは「ファイルストレージ」というタイプのストレージサービスであり、LinuxなどのOSでマウント可能なファイルシステムを提供します。
Amazon EFSとは異なり、Amazon Simple Storage Service (S3)は「オブジェクトストレージ」というタイプのストレージサービスであり、データを「オブジェクト」と呼ばれる単位で読み書きするためのHTTPSなどでアクセス可能なエンドポイントを提供します。
また、Amazon Elastic Block Store (EBS)は「ブロックストレージ」というタイプのストレージサービスであり、Amazon Elastic Compute Cloud (EC2)のインスタンス(仮想マシン)にアタッチするためのボリュームを提供します。
このように利用するサービスによって異なるタイプのストレージが提供されるため、目的に応じて適切なタイプのストレージサービスを使い分ける必要があります。

##Kinesis
- 外部システムから送られてくる大量のストリーミングデータをリアルタイムで収集・処理・分析することが出来るマネージドサービス
- データの暗号化には AWS KMS マスターキーを使用
- デフォルトで最大 24 時間保存されます。 データ保持期間は、延長データ保持を有効にすることで最大 7 日まで、またはコンソール、CLI、API 呼び出しを使用して長期データ保持を有効にすることで最大 365 日まで延長できます。

##Redshift
- AWSがPostgreSQLをベースに開発したDWHのマネージドサービス
- 数百ギガバイトのデータから開始して、ペタバイト以上まで拡張が可能
- 複数ノードをまとめたクラスター構成
- 単一AZで起動し、マルチAZ構成は不可
- リーダーノード：クライアントの窓口となる単一のノード
- コンピュートノード：集計・分析などの処理を行う複数のノード
- 自動で8時間ごとにスナップショットを作成し、S3に保存する。
- クロスリージョナルスナップショットを有効かすることで、より厳しい目標復旧時間 (RTO) と目標復旧ポイント (RPO) の災害復旧 (DR) ポリシーに対応できる。

###特徴
- 1. RA3インスタンス
コンピューティング性能とマネージドストレージのスケーリングと支払いを独立させることで、データウェアハウスを最適化する
最低2ノード必要
データ量の増大が予想される場合に選択
- 2. DC2インスタンス
固定ローカルSSDストレージを使用したデータウェアハウス
データのサイズ増加に対し、ノードを追加してクラスターのストレージ容量を増強
最低1ノード必要
未圧縮で1TB未満のデータセットでの利用に選択


#サーバレス
##Amazon Simple Queue Service(SQS)
- システムやプロセスの間でデータを非同期でやりとりするメッセージキューサービス。
- トラフィック量を想定出来ないようなメッセージをSQSのキューにバッファリングし、そのメッセージを後から処理するようなシステムで利用される
- オートスケールで運用負荷を軽減する目的でも利用される

###特徴
- 受信側がキューに問い合わせてメッセージを取得するPull型のサービス
- 送信側・受信側の増加によってメッセージが増加すると。自動的にスケールアップし高スループットを実現する
- キューに格納出来る 1メッセージあたりのサイズは最大256KB
- Extended Client Library を利用することで最大2GBに設定可能
- メッセージの送信・受信は 1APIリクエストあたり最大10件
- キューのメッセージの 保存期間はデフォルトで4日間
- 60秒から14日間の間で保存期間を設定可能

##Amazon Simple Notification Service(SNS)
- パブリッシャーからサブスクライバーへのメッセージ配信を提供するマネージド型サービス
- パブリッシャー：メッセージの送信を行う側
- サブスクライバー：メッセージの受信を行う側

###特徴
- 通信の取り消しは不可
- メッセージの通信順序は保証されない
- 1メッセージあたりの 最大サイズは256KB
- HTTP(S)、Eメール、SMS（Mobile Push*）*、AWS SQS**といった様々なプロトコルによりPush型で通知する
- 各プロトコルに合わせメッセージを変換するため、パブリッシャーはサブスクライバーが利用しているプロトコルを意識せずメッセージを配信可能

##Amazon Simple Email Service(SES)
- フルマネージド型・サーバレス型のコスト効率に優れたEメール配信サービス
- メール転送エージェント（Mail Transfer Agent ※メールサーバー）の構築が不要
- SMTPエンドポイントまたはAPIエンドポイントにリクエストを送ることでメール送信が可能
- バウンス処理（メール送信失敗時の処理）の設定が可能

##Lambda
- サーバー構築なしにアプリのコードを実行することができる。
- サーバーのプロビジョニングや管理を行わずにコードの実行が可能

###特徴
- EC2のような仮想サーバを立てる必要がない。（サーバレス）
- 処理件数が増えてくると、自動的に実行ユニットを増やして並列にスケールアウトしてくれます。そのため、CPUやメモリなの使用率に応じてオートスケール設定を調整するなどの作業は不要となります。
- 低コスト少ない労力でサービスを開発できますが、稼働時間やステートレス、リレーショナルデータベースとの相性があり、全てをEC2からLambdaに置き換えることは困難です。
- API Gateway をエンドポイント（ただのURLとして）とし、組み合わせて利用することで、簡単なWebサービスやAPIサービスを公開できます。時間帯によってアクセス数の変動が多いサイトや、特別な日だけアクセス数の急増するサイトに効果的。

##Amazon API Gateway
- AWS Lambda、EC2、もしくはAWS外でパブリックとして公開されているアプリケーションをAPIとして公開することができます。
- Amazon API Gatewayは、APIの管理に必要な管理、運用などをお客様側での実施が必要なく、AWS側で提供してくれるマネジどサービスです。


#セキュリティー
##AWS Certificate Manager
- AWS上でお手軽にSSLを利用することのできるサービス

##Key Management Service（KMS）
- データの暗号化/復号用の鍵をAWS上で管理できます。
- データを暗号化するデータキー
- データキーを暗号化するマスターキー

##AWS Security Token Service(STS)
- AWS リソースへのアクセスをコントロールできる一時的セキュリティ認証情報を持つ、信頼されたユーザーを作成および提供することができます。
- 発行される認証情報は、「アクセスキー」、「シークレットキー」、「セッショントークン」の3つが発行されます。

##AWS Config
- ルールの割り当て変更を記録（=リレーションシップ変更の記録）
- ルールの変更を記録（=設定変更の記録）