AWS知識保存用

# Well-Architected

## 信頼性⇒高可用性
  - リソースの冗長化
  - 地理的冗長化
  - 疎結合

## パフォーマンス効率
  - 最新技術の導入
  - グローバルな環境
  - サーバーレスアーキテクチャの使用
  - 比較テストの実施
  - 適切な技術の利用

##  セキュリティ
  - AWS責任共有モデル
  - アイデンティティ管理とアクセス管理
  - ネットワークセキュリティ
   - セキュリティグループ
   - ネットワークACL
   - 踏み台サーバー
  - データの保護
   - 通信SSL/TLS
   - データ暗号化⇒SSE、CSE、AWS KMS、CloudHSM）
  - セキュリティ監視

## コスト最適化
### コスト最適化指針
- 必要なリソースを必要な時に必要な分だけ利用する
- 全体的なコスト効果を測定する
- データセンター運用への投資を不要に
- 投資効果の要因分析
- マネージドサービス活用

### コスト最適化の四つのベストプラクティス
- コスト効果の高いリソースを選定
 - オンデマンドインスタンス
 - リザーブドインスタンス（Standard、Convertible）
 - スポットインスタンス（スポットブロック、スポットフリート）
- ITリソースの需要とAWSサービスの適切な供給によるコスト最適化
- 全体的なコストの管理
 - Consolidated Billing一括請求⇒AWS Organizationsマスターアカウント、メンバーアカウント
 - AWS Cost and Usage Report
 - Cost Explorer
 - AWS  Budgets
 - Truested Advisor
- 継続的なコスト最適化の活動

## 運用上の優秀性
- コードによるオペレーション実行
- 定期的に小規模で元に戻すことができる変更を行う
- 運用手順を見直す
- 障害発生を想定する
- 運用の失敗をもとに改善する

### サービスの稼働状況監視
 - AWS Service Health Dashboard
 - AWS Personal Health Dashboard

### AWSサポートプラン
 - ベーシック⇒標準、技術問合せ不可
 - 開発者⇒学習用途、1名のみ
 - ビジネス⇒本番環境運用ユーザー、無制限
 - エンタープライズ⇒ミッションクリティカルなシステム、無制限

### AWSサポートプラン緊急度
- 非常事態⇒15分
- 発生中障害（ビジネスへの影響大）⇒一時間
- 発生中障害⇒4時間
- 障害・開発中急ぎ⇒12時間
- 通常⇒24時間

# アクセス制御サービス
## IAM
  - AWS管理ポリシー(AdministratorAccess、PowerUserAccess)
  - カスタマー管理ポリシー
  - インラインポリシー

## IDフェデレーション
  - SAML 2.0/OpenID Connect
  - Security Token Service(STS) 

## Web IDフェデレーションによるソーシャル連携
  - OpenID Connect
  - Amazon Cognito

## Directory ServiceによるMicrosoft AD連携
  - Microsoft AD
  - Simple AD⇒Sambaサービス
  - **AD Connector**⇒プロキシーサービス
 
# 暗号化SSL/TLS
 - ELB
 - RDS
 - CloudFront
 - API Gateway
 - AWS Certificate Manager(ACM)証明書サービス

### Client Site Encryption(CSE)
### Server Site Encryption(SSE)

### AWS KMS
 - S3(SSE)
 - EBS(SSE)
 - RDS(SSE)
 - Redshift(SSE)
 - AWS CLI(CSE)
 - AWS SDK(CSE)

### CloudHSM(Hardware Security Module)
 - Redshift
 - RDS for Oracle

## 操作方法
 - AWSマネジメントコンソール
 - AWS CLI
 - AWS SDK

# ネットワークサービス
## VPC
 - サブネット
 - IGW（インターネットゲートウェイ）
 - ルートテーブル（サブネット単位）
 - NATゲートウェイ（NATインスタンス⇒送信元/送信先チェック無効、自身への通信トラフィックを破棄）
 - VPCフローログ
 - VPCピアリング接続（VPC間、1対1）
 - Egress-Onlyインターネットゲートウェイは冗長化、IPv6
 - VPCエンドポイント
  - S3やDynamoDB接続時、インタネット経由せずプライベート接続を実現
  - インターネット接続できない

**DNS hostnamesオプション有効化されていないと、サブネットで起動されたインスタンスはDNS名を取得できません**

## EIP
## セキュリティグループ
## ネットワークACL
## ELB
 - CLB
 - ALB
  - WebSocket プロトコル機能に対応
 - NLB

## Auto Scaling
  - クールダウン(デフォルト値は300秒)
  - ライフサイクルフック(起動か終了時に実行できる)
  - RDSの場合、増加するデータベースのワークロードに応じてストレージ容量がダウンタイムなしで自動的にスケールされる

## Route 53
  - シンプルルーティング
  - 加重ルーティング
  - 位置情報ルーティング
  - レイテンシーベースルーティング
  - フェイルオーバールーティング

**ELBやCloudFrontのみエイリアス指定できる**

## AWS Direct Connect（インターネットVPNと比較）
## 仮想プライベートゲートウェイ
## CloudFront
  - エッジロケーション
  - リージョン別エッジキャッシュ

# コンピューティングサービス
## EC2
## Lambda
  - コンテナ上動作
  - SQSでホットスタンバイ⇒低レイテンシー

**Lambdaのコンテナはコールドスタートするため、急増したトラフィックに対応できない可能性がある**

## API Gateway
 - 時間単位で料金発生
 - 秒単位で指定した有効期限（TTL）が切れるまで、エンドポイントからのレスポンスをキャッシュ
 - TTL値はデフォルト３００秒、０の場合キャッシュ無効

## EMR(Amazon Elastic MapReduce)
 - 動的にスケーラブルなAmazon EC2インスタンス全体で膨大な量のデータを処理するのを簡単、高速、そして費用対効果の高いものにするマネージドHadoopフレームワークを提供
 - Web インデックス作成、データマイニング、ログファイル分析、機械学習、財務分析、科学シミュレーション、バイオインフォマティクス研究などのアプリケーションに対して、データ集約型のタスクを実行
 - 中心的なコンポーネントは、クラスターです。クラスターはEC2インスタンスのコレクションのこと
 - クラスター内の各インスタンスは、ノードと呼ばれます
 - 

## ECS(Amazon Container Service)
 - Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービス
 - 
 - Fargate起動
  - バックエンドインフラストラクチャをプロビジョニングおよび管理する必要なく、コンテナ化されたアプリケーションを実行できる
  - ユーザーに求められる設定はコンテナ内のアプリケーションのパッケージ化、CPU 要件やメモリ要件の指定、ネットワーキングポリシーや IAM ポリシーの定義、アプリケーションの起動のみ
 - EC2起動タイプ
  - 管理している Amazon EC2 インスタンスのクラスターで、コンテナ化されたアプリケーションを実行できる
  - コンテナアプリケーションを実行するインフラストラクチャに対して、サーバーレベルの詳細なコントロールを実行できます。EC2 起動タイプでは、サーバークラスターで詳細なコントロールを実行でき、カスタマイズの幅広いオプションが利用できますが、管理オーバーヘッドが高くなります


## VM Import/Export

# ストレージサービス
## S3
- スタンダード
- 標準低頻度アクセス⇒読み込み課金
- 1ゾーン低頻度アクセス
- 低冗長化ストレージ
- Glacier

**特定のユーザー単位でのアクセス制御⇒パケットポリシー**
**特定IPアドレスが付与されたEC2インスタンスからのアクセス制御⇒IAMロール**

**S3バケットに対してMFA認証を有効化すると削除に対して認証情報を問われることになり作業ミスを防ぐことができます**
**ファイル名におプレフィックスにランダムな16進数で表された文字列追加⇒パフォーマンス向上⇒今は不要となった**
**証明付きURLでS3にアップロード**
**デフォルトで保存データを暗号化しているサービスはAWS Storage GatewayとAmazon Gracier**

## Amazon Glacier
  - Expedited (1-5mins)
  - Standard (3-5hours)
  - Bulk (5-12hours)

## プロビジョンドIOPS
 - レイテンシーの影響が大きいトランザクションワークロード向けに設計された極めてパフォーマンスの高い SSD ボリューム
 - プロビジョニングされたIOPSと要求されたボリュームサイズ（GiB単位）の最大比は50：1

## スループット最適化HDD
 - 高いスループットを必要とするアクセス頻度の高いワークロード向けの低コストの HDD ボリューム

## コールドHDD
 - アクセス頻度の低いワークロード向けに設計された極めて低コストの HDD ボリューム

## EBS
- 汎用SSD(General Purpose SSD:gp2)
- プロビジョンドIOPS SSD(PIOPS SSD:io1)⇒EBS最適化インスタンス
- スループット最適化HDD(st1)⇒EMR、ビッグデータ
- コールドHDD(sc1)⇒ログ
- マグネティック⇒旧世代EBS
 
## EFS
 - スケーラブルな共有ストレージサービス
 - 複数EC2インスタンスから共有ファイルストレージとして利用
 - オンプレ環境も利用可能
 - レイテンシーの影響を受けやすい単一スレッドのワークロードに可能な限り高いスループットを必要とする、高度に並列化されたスケールアウト型ワークロードの多様なユースケースをサポートするのに利用します

## SGW(AWS Storage Gateway)
S3へNFS、SMB,iSCSIといった標準プロトコルでアクセスできるサービス
 - キャッシュ型ボリュームゲートウェイ
 - 保管型ボリュームゲートウェイ
 - テープゲートウェイ
 - ファイルゲートウェイ

## AWS Import/Export⇒Snowball

# データベースサービス
## RDS
 - マスタ、スレーブ、リードレプリカ
 - RDSインスタンスにAuto Scalingを導入することはできません
 - RDS自体にオートスケーリング機能はありますが、それはデータ容量をスケールすることができる機能

## DynamoDB
  - Amazon DynamoDB Accelerator(DAX)⇒インメモリキャッシュ、1秒当たり100万単位のリクエストの応答時間数ミリ秒
  - DynamoDBストリームを使用してDynamoDBテーブルへの変更ステータスが履歴として残るようになります
  - パフォーマンスを向上させるためにカーディナリティの高いパーティションキーを使用
  - **メタデータ**・**セッションデータ**や一連の**ストリームデータ**を蓄積することでビッグデータ解析などに利用
 
## Redshift
  - ノード⇒リーダーノード、コンピュータノード⇒クラスター
  - SQLでデータアクセス可能
  - データウェアハウス（BIツール）
  - 列志向アーキテクチャ(カラム)
  - WLM(Work Load Management)を利用することで、クエリ処理を実施する際に、照会内容をキューに経路指定することが可能
  - クロスリージョンスナップショットすることで、プライマリクラスターがダウンした場合に備えて即座に利用できる構成を維持することができます

**マルチAZできない、ノード数を増やすとデータベースがクラスターかされ、耐障害性増す**
**クロスリージョンスナップショットにより、別リージョンバックアップできるが、冗長性関係ない**

## ElastiCache
  - キーバリュー型

## ElastiCache Memcached
  - 一時的なデータのキャッシュ用
  - ノード間の複製は行わない
  - データベース別途用意
  - シンプル
  - スケールアウト、スケールイン機能が必要
  - データベースのオブジェクトをキャッシュする必要がある
  - 永続性が不要

## ElastiCache Redis
  - マスター・スレーブ型の構成
  - データストアとしても使用可能
  - 複雑なデータ構造
  - 自動的にフェイルオーバー必要がある
  - 永続性が必要

# データ通知・連携サービス
## SES
## SNS
  - トピック、サブスクライバ

## SQS
- ショットポーリング
- ロングポーリング
- 可視性タイムアウト⇒スポットインスタンスと組み合わせ
- デフォルトのメッセージ保持期間は 4 日間

## Data Pipeline
## Kinesis Data Streams
- データ処理
- データプロデューサーからすばやくデータを移動して、連続的にデータを処理し、データストアに送る前にデータを変換したり、メトリクスや分析をリアルタイムで実行したり、他の処理のためにさらに複雑なデータストリームを取得したりできます
- Kinesis Data Streamsはウェブサイトのクリックストリーム、金融取引、ソーシャルメディアフィード、ITログ、位置追跡イベントなど、数十万のソースから1時間あたりテラバイトのデータを継続的にキャプチャして保存できます。 
- ストリーミングデータの分析をリアルタイムで実行できます


## Kinesis Data Firehose
- データの配信・保存
- Kinesis Data Firehoseを利用してS3にログを蓄積し、Athenaを利用してログ解析を行う

## Kinesis Data Analytics
 - SQLクエリ実行しリアルタイム分析


# 構成サービス(プロビジョニング、デプロイ)
## CloudFormation⇒プロビジョニングのみ
  - テンプレート⇒スタック
  - 主な項目
   - AWSTemplateFormatVersion
   - Description
   - Type
   - Parameters⇒テンプレート実行時に利用できる値を指定
   - Resources⇒プロビジョニングしたいAWSリソース、設定記述
   - Outputs⇒スタック作成後に出力したい項目

## Elastic Beanstalk⇒プロビジョニング、デプロイ
 - Webアプリケーションやサービスをサーバーにデプロイでき、また、実行環境の管理も行う
 - 自動的にデプロイメントの詳細 (容量のプロビジョニング、負荷分散、Auto Scaling、アプリケーションのヘルスモニタリングなど) を処理

## AWS OpsWorks ⇒プロビジョニング、デプロイ
- 構築手順通りにサーバー構築作業を自動化することができる構成管理サービス
- 負荷分散、データベース、アプリケーションサーバーなど、さまざまなレイヤーを含むスタックとしてアプリケーションをモデル化できる
- Chef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービス
- サーバーのパッチ適用、アップデート、バックアップが自動的に実行され、Chef サーバーが管理

## AWS CodeDeploy⇒デプロイのみ

# 運用管理サービス
## CloudWatch
 - 開発者、システムオペレーター、サイトリライアビリティエンジニア (SRE)、IT マネージャーのために構築したモニタリングおよび管理サービス
 - 標準メトリクス、カスタムメトリクス
 - アラーム
 - イベント

## CloudWatch Logs

## CloudTrail
- ユーザーレベル
- APIコールなど
- AWS マネジメントコンソールでの操作と AWS API コールを記録することにより、ユーザーおよびリソースのアクティビティを把握しやすくなる

## VPCフローログ
- VPC内のネットワークインターフェース間で通信内容をキャプチャする機能、監視・監査に使用

## AWS Config
- リソースレベル
- AWS リソースの設定を評価、監査、審査できる構成管理のサービス

## AWS System Manager
- AWS内のさまざまなリソースの運用情報を総合的に可視化、および制御するサービス

## AWS Trusted Advisor
 - コスト最適化
 - セキュリティ
 - 耐障害性
 - パフォーマンス
 - サービスの制限
 
**スナップショットの制限などをモニタリングして利用状況についてアドバイスを与えてくれます**
**Trusted Advisorは稼働中のEC2インスタンスに関連付けられていないElastic IP Address (EIP) をチェックしてくれます**
**EBSボリュームの設定を確認し、ボリュームの利用頻度が低いとみられる場合に教えてくれます。**

## Amazon Elastic Kubernetes Service (Amazon EKS) 
 - フルマネージド型の Kubernetes サービス
インテル、Snap、Intuit、GoDaddy、Autodesk などのお客様が、セキュリティ、信頼性、スケーラビリティを獲得するために、最も機密性が高くミッションクリティカルなアプリケーションを EKS で実行

**AWS ベストプラクティスに従ってリソースをプロビジョニングするのに役立つ、リアルタイムガイダンスを提供**
**稼働中のEC2インスタンスに関連付けられていないElastic IP Address (EIP) をチェックしてくれる**
**EBSボリュームの設定を確認し、ボリュームの利用頻度が低いとみられる場合に教えてくれる**

## セキュリティ侵入テスト
 - EC2
 - RDS
 - Aurora
 - CloudFront
 - API Gateway
 - Lambda
 - Lightsail
 - DNS Zone Walking

# 上限値
### IAM
  - 1AWSアカウントあたり5000ユーザー
  - 1AWSアカウントあたり300グループ
  - 1ユーザーあたり10グループ

### セキュリティグループ
 - 通信ルール最大60

## 知識まとめ
  **Blue/Greenデプロイメントとは、異なるバージョンのアプリケーションを実行する環境をそれぞれ1つずつ、つまり計2つ作成し、それらの環境間でトラフィックを移動（ブルー⇒グリーンへ移動）させること。Blue Greenの展開に加重ルーティングを設定します。加重ルーティングは新しいバージョンのソフトウェアのテストに適しています。**

**カスタマーゲートウェイに静的ルートテーブルを構成することでVPN接続を設定できる**

**SQSデフォルトでメッセージはデッドキューに移動されるのではなく、別途設定が必要**

**Lambda関数を呼び出すたびに使用できる一時ボリューム量は最大512MB、同時実行数：１０００、関数とレイヤーストレージ：７５GB**

**VPC 内の Amazon EFS ファイルシステムにアクセスするには、マウントターゲットが必要**

## IAMコンソール画面のダッシュボードではIAM設定の要素を確認できる
 - IAM ユーザーのサインインリンクのURL
 - ユーザー
 - ロール
 - グループ
 - ID プロバイダ
 - カスタマー管理ポリシー