∑考=人

そして今日も考える。

AWSソリューションアーキテクトサマリ2

第二弾。だいぶ慣れてきた。フロー図とかシーケンス図とか普通に書けるといいんだが。

4. EC2/AMI/EBS/インスタンスストア

EC2起動までのステップ

# ステップ 詳細
1 AMI(Amazon Machine Image)の選択 仮想マシンのOSイメージを選択
2 インスタンスタイプの選択 マシンスペック(CPUコア数、メモリ)を選択
3 ネットワーク・IAMロールなどの設定 VPC・サブネット・IPの割当、IAMロール、ユーザデータ(OS起動時のスクリプト)を設定。
インスタンス作成時に確定していない値はメタデータを用いて記述
4 ストレージの設定 EC2インスタンスに接続するストレージをEBSとインスタンスストアから選択
インスタンスストアの選択は初回起動時のみ可
5 タグ付 検索性向上のためのキーと値のセットを付与
6 セキュリティグループの設定 FW設定として最低一つのセキュリティグループを設定
7 設定確認 1〜6の設定内容の確認
8 キーペアの選択 EC2インスタンスSSHログインする際のキーペアを選択

EC2インスタンスのライフサイクル(状態遷移図)

初期状態 起動 時間経過 再起動 停止 削除
-(未起動) pending - - - -
pending - running - - -
running - - rebooting stopping shutting-down
rebooting - running - - -
stopping - stopped - - -
stopped pending - - - shutting-down
shutting-down - terminated - - -
terminated - - - - -

EBSとインスタンスストアの比較

比較観点 EBS インスタンスストア
データ特性 不揮発性(永続的) 揮発性(一時的)
性能 数百〜2万IOPS MAX30万IOPS
価格 $/GB 無料
対応EC2 EBS-backedインスタンス instance store-backedインスタンス
対応EC2の特徴 停止、起動、再起動、削除 再起動、削除

EBSの3タイプの比較

比較観点 General Purpose SSD Provisioned IOPS SSD Magnetic
ボリュームサイズ 1G〜16T 4G〜16T 1G〜1T
IOPS 3IOPS/GB、MAX10000IOPS 容量の30倍IOPSを指定、MAX20000IOPS 平均100IOPS
価格 容量のみ 容量・指定したIOPS 容量・発生したIO
ユースケース 一般 高い性能を求め羅れるアプリ・DBなど IOの発生が少ないコスト重視のマシン
推奨運用 - ネットワークがボトルネックになるため、
EBS最適化インスタンスとしてEC2を起動
-

EBSスナップショット

S3に保存されるEBSないのデータバックアップ。 主な特徴は下記の通り。 - 圧縮保存 - 差分バックアップ - ディスクI/Oを停止するため、ボリュームをアンマウントしてからの取得を推奨 - 復元時は異なるAZ、EBSタイプ、サイズ(大きい場合)の指定が可能

プレイスメントグループ

EC2インスタンス間のネットワーク接続を高速化するためのグループ。 異なるAZ間は物理的には離れているために発生する遅延への対策として利用される。

Dedicatedインスタンス

ハードウェア占有インスタンス。EC2インスタンスを起動させる物理ホストに別アカウントのEC2が起動しないことを保証する。ソフトウェアライセンスでハードウェアの占有を求められる場合への対策として利用される。

5. オブジェクトストレージ

S3

Amazon Simple Storage Service。安価で耐久性有り。データ容量無制限。 オブジェクトには下記2種類のストレージクラスがある。 - スタンダードクラス・・・イレブンナイン(99.9・・・と9が11個続く%)の耐久性。3ヵ所に複製。 - 低冗長化(RRS)クラス・・・フォーナイン(99.99%)の耐久性。

包含関係としては、オブジェクト<<バケットである。一般的なファイルシステムのストレージは、ディレクトリ単位でファイルを管理するが、オブジェクトストレージはバケット単位でファイル(オブジェクト)を管理する。また保存形式はKey-Value Store形式である。

操作ごとにデータが整合されるタイミングは下記の通り異なる。

  1. 新規オブジェクトの書き込み(PUT)
    S3バケットに書き込み後、S3から完了が返却された後に整合される。

  2. 既存オブジェクトの上書き(PUT)
    S3バケットに上書き後、S3から完了が返却され時間経過後に整合される。

  3. オブジェクトの削除(DELETE)
    S3バケットから削除後、S3から完了が返却され時間経過後に整合される。

S3のセキュリティ

  • アクセス制限方法の比較
比較観点 ACL バケットポリシー IAMポリシー
他アカウントの設定 ×
自アカウントの設定 ×
バケットアクセス 許可のみ可 許可・拒否可 許可・拒否可
オブジェクトアクセス 許可のみ可 許可・拒否可 許可・拒否可
条件付きアクセス 不可
IAMユーザアクセス 制御不可 制御可 制御可
グループアクセス 制御不可 制御可 制御可

加えて、署名(期限)付きURLという方法があり、一時的に特定のユーザだけにアクセスを許可したい場合に用いる。

  • 暗号化とアクセスログ
    • サーバサイド暗号化・・・AWS管理の鍵、ユーザ管理の鍵を使って実施可。
    • クライアントサイド暗号化・・・暗号化データをアップロードする。
    • アクセスログは任意で取得可能、実アクセスから一定時間経過後に取得される。

Webサイトのホスティング

EC2よりも安価にWebサイト構築が可能。動的なプログラム(PHP,JSPなど)は不可だが、クライアントサイト(JavaScript)などは可能。

バージョニング機能

S3バケット単位で有効化できる。オブジェクトに対してバージョンIDが付与されるため、誤操作時に元データの復元が可能。

Glacier

データのアーカイブや長期バックアップなどの用途に適したストレージでS3に比べてコストが安い。(一方で、即時参照ができない。)S3バケットライフサイクル機能によって、指定日数経過後のオブジェクトストレージをGlacierに移行、指定日数経過後に削除などが可能。

6. データベース

AWS提供のマネージドデータベースサービス種類

サービス名 サービス概要
RDS リレーショナルデータベース
Dynamo DB NoSQLデータベース
ElastiCache インメモリキャッシュ
Redshift データウェアハウス
  • マネージドサービス・・・ユーザインストールすることなく利用可能なサービスであり、RDB、ELB、SQSなど様々ある。

Amazon RDS

データベースエンジンを下記から選択可能。 - Amazon AuroraAWS独自、MySQLと互換性あり) - MySQL - MariaDBMySQLから分岐、オープンソース) - PostgreSQL - Oracle - Microsoft SQL Server

RDSの主要機能と特徴

  • マルチAZ配置

    • 複数のAZにRDSインスタンスを配置して可用性を向上。
    • スレーブ最新化の仕組みは下記の通り。
    • 読み取り性能のためにリードレプリカを用意する構成がある(スレーブは読み書き不可)
    • フェイルオーバーはマスター障害、メンテナンス、インスタンス再起動時に発生(数分程度)
    • Auroraは3AZにクラスターボリュームを作成し、各AZでデータを保持、プライマリインスタンス以外にはリードレプリカを配置する構成
  • 自動バックアップ機能

    • 1日1回スナップショットを取得
    • スナップショット保持期間はデフォルト7日(0〜35日で指定可)
    • トランザクションログを取得しているため、復元が可能
  • パッチ適用

    • 指定の曜日・時間帯に自動でパッチ適用
    • スレーブ→スタンバイの順番で適用
    • 重要なセキュリティ脆弱性対応の場合は無効でも適用される場合あり
  • ストレージ

    • EBSと同様のタイプから選択可

DynamoDB

  • 必要に応じてストレージ自動拡張
  • 秒間あたりのI/O性能を指定可能
  • SSDのみのため性能安定
  • 3つのデータセンターにデータ複製(高可用性・高耐久性)
  • 読み込み整合性の強弱を指定可能(性能と整合性のバランス調整)
    ※読み込み整合性=データが整合されるタイミングの早さのようなもの

一つ一つの項目は400KBを超えられないため、サイズは小さいが項目数が多いデータに適している。

  • セッション
  • ゲームの点数
  • 買い物カゴ
  • センサーデータ

ElastiCache

下記のいずれかを選択。

  • Memcached・・・Key-Value Store形式。マルチノードのキャッシュクラスタ構成
  • Redis・・・Key-Value Store形式。マスターースレーブ構成

RDSへのアクセス負荷の軽減、セッションデータの格納などの用途に用いられる。

7. Amazon CloudWatch

Amazonのモニタリングサービス。 下記のような監視項目(メトリックス)が存在する。 - EC2のCPU利用率 - EBSのディスクI/O - S3の格納オブジェクト総数 - RDSインスタンスのメモリ空き容量 - DynamoDBに書き込まれたユニット数

など

EC2のモニタリング

  • EC2のメトリックス

    • 標準(デフォルト)メトリックス・・・ハイパーバイザが取得(12種類)
    • カスタムメトリックス ・・・OSにインストールしたエージェントが取得
  • データプロット間隔

    • 基本モニタリング・・・3種類のステータスチェックは1分間隔、その他は5分間隔
    • 詳細モニタリング・・・標準メトリックスを全て1分間隔(要追加料金)

アラーム

メトリックスの閾値を超えた際に所定の動作(アクション)を行う機能。 下記のような動作が可能。

  • メール通知(SNS
  • Auto Scalingポリシー(インスタンス数の増減)
  • EC2アクション(停止/削除/再起動/復旧)

アラームは3つの状態を持つ。 - OK・・・閾値未満 - アラーム・・・閾値以上 - 不足・・・データ不足

SNS

Amazon Simple Notification Service。ユーザやアプリケーションにメッセージを送信できる通知サービス。

  • メッセージ・・・通知するメッセージ
  • サブスクライバ・・・通知を受け取るクライアント。対応プロトコルは下記の通り。
    • Eメール
    • SMS
    • モバイルプッシュ
    • HTTP/HTTPS
    • SQS
    • Lambda
  • トピック・・・単一、複数のサブスクライバをまとめたもの

アラームアクションSNS設定・検知の流れ

  1. システムアラートが通知されるトピックを作成
  2. トピックにサブスクライバを登録
  3. トピックにCloudWatchのアラームとSNSのアクションを設定
  4. アラーム検出時、トピックにメッセージを送信
  5. SNSがサブスクライバにメッセージを送信