AWS勉強 振り返りまとめ (1)

AWS ソリューションアーキテクト アソシエイト受験に向けて取り組んできた勉強において、
振り返っておくと良さそうな部分をまとめてみました (その1) :bear: 
メモ程度の内容ですが、同じように AWS の勉強をしている方の参考になれば嬉しいです :penguin:

続き :point_right:  [AWS勉強 振り返りまとめ (2)](https://qiita.com/kumashun/items/0b8c733ddca0fc6c8083)
## IAM
- 1アカウントあたりのIAMの制限(数)
  - IAMユーザー : 5000
      - IAM ユーザーは10個のIAMグループに所属可能
  - IAMグループ : 300
   - IAMロール : 1000
- **AWS Organizations** は IAM のアクセス管理を容易にするサービス。
    - アクセス権限自体の編集を行うものではない。

## EC2
- EBS のボリュームタイプ

    タイプ | ユースケース | 最大スループット[MiB/sec] | 料金 [USD/GB]
    -------|------|-----------|----------
    汎用SSD | バランス良い |250| 0.1 
    プロビジョンドIOPS SSD |大規模なDBワークフロー等IOPS重視|1000|0.125 + 0.065 (IOPS向上分の費用)
    スループット最適化HDD|ビッグデータ処理やログ解析|500|0.045
    Cold HDD|アクセス頻度の低いデータ(ログデータ等)用|250|0.025
- ゴールデンイメージ : ソフトウェアがインストールされた最新の状態のAMI
- **Reserved Instance (RI)** による価格メリット適用範囲
    - 特定の AZ で購入した場合
        - RI のインスタンスタイプ/サイズと同じインスタンスのみ
    - 特定のリージョンで購入した場合
        - RI のインスタンスタイプと同じインスタンスに対して、正規化係数に基づくインスタンスサイズの柔軟性が適用される。
    - 上記のルールは RI を購入したアカウントだけでなく、そのアカウントの一括請求グループに所属するアカウントにも適用される。

## VPC
- セキュリティグループとACLの違い
    - セキュリティグループ : インスタンスに対するトラフィック制御
    - ACL : サブネットのトラフィック制御
    - どちらの設定内容も即時反映される
- **Direct Connect**
    - オンプレ環境と AWS リソース間を、高い信頼性&ネットワーク帯域幅の専用線を用いて接続するサービス。
    - より短時間で接続設定を完了したい場合は、**サイト間VPN (Site2Site VPN) 接続**によって VPN トンネルを作成することも可能。
    - オンプレ=>クラウド移行に使用されるサービスではない。
- **Transit Gateway**
    - 1,000 以上のVPCとオンプレ間の相互接続を可能にするマネージドサービス。 (巨大なルーター)
    - ネットワークの共用がスコープ。
    - アプリケーションの共用が目的であれば、**PrivateLink**  w/NLB を使用する。
- S3, Dynamo DB にアクセスする場合は VPC エンドポイントを用いる。
  - 他のリージョンサービスにおいては NAT ゲートウェイを経由する。

## DB系
- なんとなく用途別サービス紹介
    - データレイクとしてデータ蓄積, アクセス頻度の少ないデータ保存には **S3**
    - ビッグデータ解析などの高速処理や、一度にアクセスが集中アプリケーションには **DynamoDB**
    - DynameDBでもいけそうなケースだが、より複雑なクエリ処理(JOIN, TRANSACTION, COMMIT, ROLLBACK など)が必要な場合は **RDS**
    - 検索効率重視ときたら **ElasticSearch**
    - リアルタイム処理ときたら **ElasticCache**
    - マッピング表示ときたらグラフDBを提供する **Neptune**
- **DAX (Data Accelerator) クラスター**
    - DynamoDB のインメモリキャッシュ。
    - マルチAZで構成することで 1秒間に数百万件のリクエスト処理を可能にする。
- **Aurora Serverless**
    - DBインスタンスクラスを指定せずにデータベースエンドポイントを作成することができるサービス。
    - データベースの容量範囲を指定することで、自動的にリソースがスケーリングされる。
    - その処理負荷が一定ではないが、高性能なパフォーマンスが必要なケースに適している。
- (Aurora以外の) RDS vs Aurora

    タイプ|アクティブなインスタンス|自動バックアップの対象|切替(マルチAZ)|切替え(マルチリージョン)
    ---|---|---|---|---
    RDS|プライマリのみ|スタンバイ|スタンバイへの自動フェイルオーバー|なし
    Aurora|全インスタンス|共有ストレージレイヤー|リードレプリカへの自動フェイルオーバー|セカンダリリージョンのマスタ昇格が可能
- **Storage Gateway**
    - オンプレから実質無制限のクラウドストレージ (RDS, S3, ...) へのアクセスを提供するハイブリッドクラウドストレージサービス。
    - 用途ごとにボリュームタイプの設定が必要。
        - **保管型ボリューム** : オンプレ側をプライマリとして使用したい場合
        - **キャッシュ型ボリューム**クラウドストレージサービスをプライマリとして使用したい場合
   
## S3
- ストレージクラス

クラス | 特徴 | 耐久性[%] | 可用性[%]
-------|------|-----------|----------
STANDARD | ベーシック | 99.999999999 | 99.99
STANDARD-IA(Insufficient Access)|↑ より安価 低頻度だが高速な取得が要求されるケース|99.999999999|99.9
One Zone-IA|↑と同ケース+低コスト (1 AZのみの運用)|99.999999999|99.5
Intelligent-Tiering|アクセス頻度に応じてデータを自動で分類してコスト削減|99.99|99.9
RRS|低冗長化(現在非推奨)|99.99|99.99
Amazon Glacier|最安 アーカイブ用|99.999999999|N/A

- アクセス制御の手段
  - バケットポリシー : アクセスを行うインスタンスが不特定多数の場合
  - IAMロール : アクセスを行うインスタンスが特定できる場合
- **Glacier** の選択余地
     - Glacier は最も安価な S3 のボリュームタイプ。
     - 低頻度アクセスときたら Standerd-IA を選びがちだが、コスト最適化重視かつ数分でのデータ取得で良い場合は Glacier が最適である。
         - データ取り出しのオプションを "迅速取り出し" すれば、1~5分で取得可能になる。
     - 必要とされるデータ取得時間が 12 時間以上でも問題ない場合は、**Glacier Deep Archive** が最適である。

- バケットとオブジェクトの所有者が異なるケース
    - AWS アカウント A が作成したバケットに AWS アカウント B がアップロードしたオブジェクトの所有者はアカウント B であり、デフォルトではアカウント A はそのオブジェクトにアクセスできない。
    - アカウント A にアクセス権を付与するためには、アップロードされたオブジェクトの ACL を更新する必要がある。or クロスアカウント設定?

- 5xx エラーが発生する場合のトラブルシューティング
    - エラー発生の時点で、S3 がリクエストを処理しきれていない状態にある。特に 503 Slow Down では S3 バケットが許容できるリクエスト率を超えて、非常に高いことを示している。
    - 処理できていないリクエストを再試行すため、以下の手順に従って耐障害メカニズムを持たせる必要がある。
        - リクエストするアプリケーションの再試行メカニズムを有効にする。
        - リクエスト率を徐々に増やすようにアプリケーションを設定する。
        - 複数のプレフィックスにオブジェクトを分散する。

続き :point_right:  [AWS勉強 振り返りまとめ (2)](https://qiita.com/kumashun/items/0b8c733ddca0fc6c8083)