AWS勉強メモ

【AWS】

■範囲
クラウドの概念26%
セキュリティ25%
テクノロジー33%
請求と料金16%

■試験
90分 700点以上

■参考
AWSホワイトペーパー https://aws.amazon.com/jp/whitepapers

■■AWSクラウドの概念 26%
・AWSクラウドのメリット
1.固定費が柔軟な変動費へ
2.スケールによる大きなコストメリット
	>AWSの従量課金制の料金が下がる
3.キャパシティ予測が不要
4.速度と俊敏性の工場
5.データセンターの運用と保守への投資が不要に
6.数分で世界中にデプロイ

■クラウドサービスアーキテクチャの設計原則
1.システムのコンポーネントを疎結合にする
2.マイクロサービスアーキテクチャを利用する
3.SQS、キューイングチェーンを利用して、非同期かつ疎結合な構成を取る

■AWSインフラにおける弾力性、柔軟性
AWSではトラフィックの増減を考慮して手動、定期的、自動のいずれかでスケールアウトを行う事ができる。

■AWS Well-Architectedフレームワーク 上手に設計されたシステム設計のベストプラクティス
1.運用上の優秀性
2.セキュリティ
3.信頼性
4.パフォーマンス効率
5.コスト最適化

■■AWSセキュリティー 25%
1.AWSはクラウド方たんのセキュリティー部分(ハード,１AWSインフラストラクチャ,AZ,マネージドなサービスなど)がAWS
2.ユーザーはクラウド内のセキュリティーを担当(OSのアップデート、セキュリティーパッチ)
3.クラウド内のセキュリティー管理についてもAWSが用意しているサービスと活用することができる

■AWSとユーザーのセキュリティ範囲
AWS：データセンターのセキュリティ(環境レイヤー,物理的な境界防衛レイヤー,インフラストラクチャレイヤー,データレイヤー：アクセス制限)、ハイパーバイザー(仮想サーバーのメモリの独立など)
ユーザー：管理プレーン(IDとパスワード,キーペア,APIキーの管理,アクセス制御と権限管理)

■セキュリティのベストプラクティス
1.転送データの保護
2.蓄積データの保護
3.AWS資格情報の保護
4.アプリケーションの安全性の確保

■セキュリティーグループ
インスタンストラフィックを制御する仮想ファイアウォール
AWSでは各インスタンスごとに個別のファイアウォールの設定が行える
・許可ルールのしていが可能
・拒否ルールの指定は不可能(穴をあけるのみ)
・インバウンドとアウトバウンドの個別指定が可能

■AWS ShieldとAWS WAF
DDos攻撃などによる対策としてAWShieldが有効。プランにはstandardとadvancedがありadvancedを使うと
AWS WAFが無償で無制限に利用可能になる

■AWS Shield standard
通信レイヤー攻撃(DDoS攻撃)の保護サービス対象としてRoute53とCloudFrountがある

■AWS WAFの対象
CloudFront,ApplicationLoadBalancer,APIGateway

■Amazon Inspector
EC2上のアプリケーションの脆弱性判断を行えるツール。レポートも作成してくれる?

■■AWSテクノロジー 33%
■リージョン
・リージョンを選択する際は法律はその国のものが対象となる。
・リージョンによって使用できるサービルが異なることがある
・各リージョンには2つ以上のAZが存在する

■アベイラビリティゾーン
複数のデータセンタで構成されている
障害耐性のために地理的に離れた距離にあるが
リージョン内のAZはプライベートな光ファイバーによってい接続されている

■エッジロケーション
コンテンツ配信用のサーバーがある場所
AmazonCloudFrontが使用できる。(コンテンツ配信ネットワーク（CDN）を提供する)
これを使用することで低レンシーなサービス提唱が行える(CDN)あとAmazon Route 53も
エッジロケーションで使用できるサービスは
AmazonCloudFront,AmazonRoute53,AWS Shield

■AWSのグローバルインフラ構成
・リージョン
・アベイラビリティゾーン
・エッジロケーション

■■コンピューティングサービス
■EC2 (Amazon Elastic Compute Cloud)
・EC2の料金
1.EC2稼働に対する料金(時間単位or秒単位)
	>OS,リージョン,インスタンスタイプによって異なる
2.データ転送料金
	>リージョンの外にデータを転送した場合にデータ転送料金が発生する(アウト通信)
	>データ転送料金はリージョンによって異なる、インターネットへ転送した場合と他リージョンに転送した場合でも異なる
	>インターネットからES2へのデータ転送(in)には料金はかからない
	>異なるAZ間のデータ転送には料金が発生する
3.ストレージ料金
	>EC2にではなく、EBS (Amazon Elastic Block Store)にかかってくる

・EC2インスタンスの料金オプション
1.オンデマンドインスタンス
2.リザーブドインスタンス
	>長期間契約で割引を受けれる
3.スッポトインスタンス
	>未使用のインスタンスを利用する変動型の形態(アベイラビリティゾーンごとに決定する)
	>リクエスト料金が通ればインスタンスを利用することができるが、料金が超えたときにインスタンスが終了する
	>テストや検証する際に利用することで低コストでインスタンスを利用することができる
4.Dedicated Hosts
	>EC2が起動するホストを専有するオプション
	>セキュリティ、ガバナンス要件、ライセンス要件を満たす目的で使用される
	>ホストに対しての従量課金
5.ハードウェア専有インスタンス
	>アカウント専用のハードウェアでEC2を実行する。インスタンス単位+専有追加料金が必要
6.SavingPlans
	>

・インスタンスタイプ
t2.micro
t:ファミリー
2:世代
micro:サイズ
サイズによってvCPU,メモリ,ネットワーク,ストレージの性能・選択できるストレージが決まる

・インスタンス起動手順
1.リージョンの選択
2.AMIを選択
3.インスタンスタイプを選択
4.ネットワークを選択
5.ストレージを選択

・EC2はAMI (Amazon Machine Image)から起動される
AMI → EC2

■AMIの4種類
1.クイックスタートAMI
	>AWSが予め用意しているAMI(OSとモジュールが用意されている)
2.マイAMI
	>起動中のEC2からイメージを選択する
	>アプリケーションサーバのバックアップが取れる,共有,公開が可能
3.AWS Markeplace
	>パートナーベンダーが提供するソフトウェア、ミドルウェアがすでにインストールされた構成済みのAMI
4.コミュニティ AMI

・セキュリティーグループでトラフィックを制御できる
	>EC2のトラフィックはセキュリティーグループのインバウンドで制御する

・OSを管理者権限で操作できる
	>キーペアでログインすることで可能
	>Linux：SSH, Windows：RDP(リモートデスクトップ接続)

■インスタンスストア
　EC2インスタンスの一時的なデータを保持するストレージ。
　実態はホストに物理的にアタッチされたディスク上。

■ELB (Elastic Load Balancing)
	>別のAZにインスタンスを配置することができる(マルチAZ)

・ELBの特徴
1.ロードバランサータイプ
	Application Load Balancer
		>HTTP,HTTPSのリクエストを負荷分散する
	Network Load Balancer
		>TCPプロトコルを使用する場合に使用する
		>静的なIPアドレスと使用できる
	Classic Load Balancer
		>以前のELB。今ELBを使用する場合は上記の2つから選択する
2.ヘルスチェック
	>対象インスタンス正常に動いているかチェックする機能
3.インターネット向け/内部向け
	>グローバルIPかパブリックIPの不要で決まる。
	>EC2同様セキュリティーブループでトラフィックを制御できる
4.高可用性のマネージドサービス
	>ELBは内部的に複数存在しているのでELBによる可用性の低下は考えなくて良い
5.クロスゾーン負荷分散
	>複数のAZに負荷分散できる

■Auto Scaling
自動でインスタンスをスケール調整してくるサービス。
それによって高可用性、障害耐性、コスト削減することができる

・Auto Scalingの設定
「何を」=「起動設定」：どのようなEC2インスタンスを起動するか
「どこで」=「Auto Scalingグループ」：どこでEC2インスタンスを起動するか
「いつ」=「Auto Scalingポリシー」：どのタイミングで起動/終了するか
	>ターゲットポリシー：CPU使用率を設定する
　　　シンプルポリシー：CloudWatchのアラートに基づいてスケールする
	  ステップポリシー：複数段階でスケールアウトの計画を設定できる
・EC2の設計
自動で削除されるのでEC2インスタンスに情報を持たない設計する必要がある。(ステートレス)

・アプリケーションデプロイの自動化
設計パターン：ブートストラップ
Auto Scaligによってインスタンス起動時にコマンドスクリプトを実行してソースコード最新にする

EC2のユーザーデータを使うことでコマンドを自動実行し、デプロイ処理を自動化することができる
EC2情報(ipアドレスやインスタンスID)はメタデータから取得できる

■Lambda
自動でスケーリングが行われる(並列スケーリング)
AutoSlaringを利用する必要はない

・実行トリガーとAWSサービスとの連携
特定の時間(CloudWatch Events)
S3にアップロード時
DynamoDBに書き込みがあっと時
AutoStalingが実行された時
Webページでボタンが押された時
Kinesisにレコードが追加された時
Alexaとの連携

■■ストレージサービス
■EBS (Amazon Elastic Block Store)
・EBSの特徴
EC2のボリュームとして使用
AZ内でレプリケート
ボリュームタイプの変更が可能
容量の変更が可能
ボリュームの暗号化
永続的ストレージ

・スナップショット
S3の機能を使って保存されるので(複数AZ)耐久性が高い

・EBSの暗号化に対して追加で操作する必要はない(暗号化/復号化が自動で行われる)

■AWS KMS
　EBSストレージの暗号化サービス

■S3 (Amazon Simple Storage Service)
・S3の特徴
無制限のストレージ容量
高い耐久性
インターネット経由でアクセス

・アクセス権限
アクセルコントロールリスト(ACL)
	>バケット単位,オブジェクト単位で権限の設定ができる
バケットポリシー
	>バケット単位の権限の設定ができ、アクセスコントロールリストよりも細かい設定ができる。(例 特定のIPにだけtmp/下のアクセスを許可するなど
IAMポリシー
	>AWSサービスに対してS3の利用権限をふるなど

・通信、データの暗号化
通信：HTTP/HTTPS
暗号化方法3種
	S3のキーを使用したサーバーサイド暗号化
	KMSを使用したサーバーサイド、またはクライアントサイド暗号化
	お客様独自のキーを使用したサーバーサイド、またはクライアントサイド暗号化

・S3のポイント
S3バケット、オブジェクトはデフォルトではプライベート
アクセスコントロールでアクセス権限を設定できる
バケットポリシーで詳細にアクセス権限の設定が可能
AWSリソースからの利用にはIAMロールでアクセス権限の設定をする
HTTPSでアクセス可能
保存データの暗号化は複数の方法がある(S3キーの利用、KMSの利用、独自キーの利用)

・S3の料金
ストレージ料金
	保存しているオブジェクトの容量に対しての料金(1ヶ月平均の保存料/リージョンによって料金がことなる/ストレージクラスによっても料金が異なる)
	ストレージクラス
		標準
			デフォルトのクラス(アプリケーションよって頻繁にアクセスの場合や、静的コンテンツの利用で使用)
		低頻度アクセス(標準IA)
			アクセス頻度が少ない場合にコストを下げることができるがリクエスト料金が上がる。(バックアップなどの利用に適している)
		1ゾーン低頻度アクセス(1ゾーンIA)
			複数のアベイラビリティゾーンに助長化する必要がない場合などに利用
		Amazon Glacier
			アクセスする必要はないは保存して置く必要がある場合に利用。標準取り出しに3~5時間を要する
	ライフサイクルポリシー
		アップロード時から経過日数によっていストレージクラスを自動で変更することが可能(例えばエラーログなどの保存に利用)
リクエスト料金
	アップロードやダウンロードに対しての料金
データ転送料金
	リージョン外への転送料金(インターネットと他リージョンとで料金が異なる)
	インターネットからの転送(in)には料金はかからない

・S3のユースケース
アプリケーションのデータ保存
静的コンテンツの配信
データバックアップの保存
ログデータの保存
ビッグデータのステージング
クロスリージョンレプリケーション構成を取ることによるDR対策(災害対策)

■Amazon Athena
　S3内のデータを標準sqlを使用して分析することができる。

■Amazon EFS(Amazon Elastic File System)
　EC2からLAN上の共有ストレージサービス。
　S3と異なる点はインターネットからの接続ができないこと。

■Snowball Edge
　物理デバイスを利用してオンプレからAWSクラウドへ大容量(ペタバイト級)のデータ転送を安全に行うことができる。

■■AWS ネットワークサービス
■VPC (Amazon Virtual Private Cloud)
AWSクラウド内にプライベートなネットワークを構築できる
AWSサービスにはVPC内で利用できるものとVPC外で利用できるものがある。

・VPC内で使うサービス
	VPC,サブネット,インターネットゲートウェイ,ルートテーブル,セキュリティーグループ,ネットワークACL,NATゲートウェイ(NATインスタンス)

・VPCの作成
	複数のAZをまたいでネットワークを構築することができる

・サブネット
	AZ内にIP範囲を設定する(IPの重複はNG)

・CIDR
	/24とすることで256のipを利用できるが、AWSでは最初の4つと最後の1を予約ipとして利用するので
	実際には251となる。
	10.0.1.0：ネットワークアドレス
	10.0.1.1：VPCルータ用
	10.0.1.2：AWSで予約
	10.0.1.3：将来の利用のためのAWSで予約
	10.0.1.255：ネットワークブロードキャストアドレス

・インターネットゲートウェイ
	VPSに１つ。水平スケーリングをとる。

・ルートテーブル
	ルートテーブルはサブネットと関連付ける。
	VPC作成時にメインルートテーブルというものができるが、実際にルートテーブルを使う際にはカスタムルートテーブルを作成してサブネットに関連付けを行う。
	サブネット内のリソースがどこに接続できるかを定義できる。

・パブリックサブネットとプライベートサブネット

・ネットワークACL (アクセスコントロールリスト)
	サブネットに対して設定する仮想ファイアウォール
	デフォルトではインバウンド、アウトバウンドともにすべてが許可されているので拒否のブラックリストとしても使用できる。
	使い所としては追加の要件がある場合にのみ利用する。必要がなければ設定しない。

・ハイブリット環境構成
	既存のオンプレミスとAWSをVPNで接続し、拡張することができる。

・専用線とAWSダイレクトコネクト
	帯域の確保や、セキュリティー、コンプライス要件を満たすために
	ハイブリット環境を構築する場合は重要なサービスになる。

・VPCピリアリング接続
	これを使うと複数のVPCの接続が可能になる。

■CloudFront (Amazon CloudFront)
	世界中に150個所以上にあるエッジローケーションを利用し、低いレイテンシーでコンテンツを配信できるCDNサービス

・CloudFrontの特徴
	キャッシュによる低レイテンシー配信
	ユーザー近くからの低レイテンシー配信
	安全性の高いセキュリティ

・セキュリティ
	AWS Certificate Managerを利用することで通信データを保護することができる
	AWS Shield、AWS WAFを利用することで攻撃からも保護することができる

■Route 53 (Amazon Route 53)
	DNSサービス

・Route 53の特徴
	様々なルーティング機能
		シンプルルーティング
			単一のipアドレス情報を回答すすシンプルなルーティング
		レイテンシーベースのルーティング/ Geo DNS
			1つのドメインに対して複数のDNSレコードを用意し地理的な場所を近くする
		加重ラウンドロビン
		複数値回答
	高可用性を実現するヘルスチェックとフェイルオーバー
	ルートドメイン(Zone Apex)のエイリアスレコード
　　　　　ドメインの登録

■■AWS データベースサービス
■RDS (Amazon Relational Database Service)
・ポイントタイムリカバリー
	フォランザクションログが保存されていることによっていバックアップ期間内の任意の特定時間のインスタンスを起動できる

・RDSのマルチAZ配置
	マルチAZ配置をonにすることで高可用性を担保することができ、データセンター間で数ミリ秒以内のレイテンシーでレプリケーションされる。同時にマスターBDに障害を検知しサブに切り替えるフェイスオーバーも自動でここなってくれる。

・Amazon Aurora
	mysql postfresql互換のクラウド最適化されたRDMS

・DMS (AWS Database MIgrationService)
	データベース間でデータを移行できるサービス
・SMS (Server Migration Service)
　サーバー移行を支援する

■DynamoDB
	フルマネージドのNoSQL型のデータベースサービス
・RDSとDynamoDBの違い
	sql型かNosql型か
	RDSは
		トランザクションによって厳密な処理に向いている。
		大量のアクセスには向いていない
		項目が決まっていいる
	DynamoDBは
		厳密な処理には向いていない。
		大量のアクセスには向いている
		データに主キーがあればどのような項目でもデータを登録できる

■Amazon ElaticCache
　クラウド内のインメモリデータストアサービス。
　低速のデータベースに依存せずに、高速に管理されたメモリ内データストアを利用することでwebアプリケーションの高速化を図ることができる。

■■管理サービス
■CloudWatch (Amazon CloudWatch)
	AWSによりリソース(aws管理化の部分)の標準メトリクスが収集されている

・特徴
	標準(組み込み)メトリクスの収集・可視化
	カスタムメトリクスの収集・可視化
	ログの収集
	アラーム

・CloudWatch Logs
	EC2やLamdaなどのログを収集することができる
	CloudWatchエージェントをインストールすることでCloudWachLogsへの書き込みができるようになる
	これによってEC2などはステートレスな構成を取ることができる。

・アラーム
	サービスの状態(=メトリクス値)に対してアラームを設定することが可能
	アラームに対してEC2の回復、AutoScaling、SNS通知、lamdaへの通知などが実行できる

■CloudTrail
　AWSアカウント内のすべてのAPI呼び出しを記録する。
　AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を行うためのサービス

■AWS Config
　CloudTrailと似ているが、ConfigはAWSリソースの変更を、記録する

■AWS CLI (コマンドラインインターフェイス)
　AWSサービスを管理するための統合ツール　

■■請求と料金
・コスト分析
	コストエクスプローラー
	コスト配分タグ


■■その他のサービス
■Amazon Kinesis
　ストリーミングデータをリアルタイムで収集・処理・分析できるサービスで。
　インサイトを適時に取得して新しい情報に迅速に対応できるようになる。

■Amazon EMR(Amazon Elastic MapReduc)
　ビッグデータの分析に使う

■Amazon Redshift
　通常の業務システムデータなどのBIシステムやデータウェアハウスとして利用可能なリレーショナルデータベースサービス

■AWS SDK
　様々なプログラミング言語からAWSさサービスを呼び出すためのツール

■AWS Storage Gateway
　オンプレミスアプリケーションとAWSクラウドストレージをシームレスに接続することができるサービス
　バックアップ、アーカイブ、災害復旧、クラウドデータ処理、および移行に使用できる。

■AWS OpsWorks
AWS OpsWorks は、Chef や Puppet のマネージド型インスタンスを利用した構成管理サービスです。Chef や Puppet は、コードを使用してサーバーの構成を自動化するためのオートメーションプラットフォームです。Puppetを使用してEC2インスタンスの構成方法を自動化することができます。

■AWS CloudFormation
コードでAWSのインフラ環境を構築するサービス

■AWS Elastic Beanstalk
　AWS クラウド上にアプリケーションを迅速にデプロイし管理することができる。

■AWS CodeDeploy
　Amazon EC2、AWS Fargate、AWS Lambda、オンプレミスで実行されるサーバーなど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化する、フルマネージド型のサービス

■サーバーレスなAWSリソース
　AWS Fargate
　AWS Lambda　

■AWS Global Accelerator 
　世界中のユーザーに対して、地理的に近いエンドポイントにトラフィックをルーティングしてくれルサービス。

■Amazon Neptune
　インタラクティブなグラフアプリケーションを作成できる

■AWS Security Token Service (AWS STS)
　AWSサービスへの一時的な限定権限認証情報を取得することができる

■Amazon ECS
　Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービス

■Amazon Elastic Container Registry (ECR) 
　DockerコンテナイメージをAWSクラウドに保存・管理することができる