Amazon Auroraとは
Amazon Auroraは、Amazonが設計・開発したMySQL/PostgreSQL互換のデータベースエンジン フルマネージド型サービスであるAmazon RDS(Relational Database Service)で利用可能なデータベースエンジンなので、データベースのスケーリング(拡張、縮小)、高可用性、バックアップ、OS/データベースソフトウェアへのパッチ、サーバーの電源やメンテナンスなどはRDS(AWS)によって管理される。特徴
・データベースインスタンスとストレージが分離したアーキテクチャ
データベースインスタンスだけを必要に応じて増減できる。手動でのデータベース管理が不要なサーバーレス構成や、最大15台のレプリカ(複製)インスタンスなど柔軟な構成が可能
・複数のデータコピーと自動修復機能などによるストレージの高い耐障害性
ストレージは、デフォルトで3つのAZに2つずつ(計6つ)のデータコピーが作成される。これらのストレージは「クラスターボリューム」というクラスタ構成で管理される。
Auroraのクラスタボリューム内のストレージは互いに監視しあっており、データの破損が発生しても自動で検出、修復する。
Amazon Redshiftについて
Amazon Redshift
ペタバイト級のデータを扱えるデータウェアハウス(複数のシステムに蓄積されたデータを再構築したデータベース)
大量のデータを高速に扱えるため分析用途に利用
データウェアハウス(DWH:Data WareHouse)とは、複数のシステムからデータを収集・統合・蓄積し、分析に使用するデータベース
DWHでは、基本的にデータの削除・更新は行わずに追加(蓄積)されていくので通常のデータベースよりも多くの容量が必要になる。RedShiftではPB(ペタバイト)級のストレージに対応しており、大量のデータを扱うことができる。
S3のデータ暗号化
S3のデータ暗号化には「サーバー側の暗号化」と「クライアント側の暗号化」の2種類がある
・サーバー側の暗号化
サーバー側の暗号化では、データがS3に保存されるタイミングでS3が暗号化を行う
データを取り出す際にもS3がデータを復号して、ユーザーに渡す
・クライアント側の暗号化
クライアント側の暗号化では、データをS3へ保存する前にクライアント側で暗号化を行い、暗号化したデータをそのままS3に保存する。データを取り出す際にも、暗号化したデータをS3からダウンロードした後、クライアント側で復号する。
Amazon EFS
Amazon EFS(Elastic File System)はNFS(Network File System)プロトコルをサポートするファイルストレージサービス
NFSとはネットワーク上にある複数のコンピューターからストレージを共有することができるプロトコル
EFSはNFSに対応したAWSサービスおよびオンプレミス(自社運用)のシステムから利用できる
EFSではデータ量に伴い自動的にスケーリング(拡張・縮小)が行われるため、利用開始にあたり事前に容量を確保する必要がない。保存したデータ量に応じて課金が発生する。
ストレージ形式の違い
・ファイルストレージ
データを「ファイル」「フォルダ」の単位で階層構造として管理する
・ブロックストレージ
データを「ブロック」という固定長の単位で管理する
・オブジェクトストレージ
階層/入れ子などの構造がなくフラットに管理する
Well-Architected Frameworkの「パフォーマンス効率」とは
Well-Architected Frameworkの「パフォーマンス効率」の設計原則には、実現したいシステムの要件に合わせてAWSリソースを効率的に使用することと、需要の変化や技術の進化に応じてパフォーマンスを維持するための推奨事項が記載されている。
パフォーマンス効率の設計原則は以下の5つ
・高度な技術を誰でも使えるようにする
高度な技術の知識とサービスをクラウドが提供することにより、オンプレミスでは実装が難しい技術であっても容易に利用できる。
・数分でグローバルに展開する
世界各地にある複数のAWSリージョン経由で、世界中から低遅延でサービスへアクセスできる。
・サーバーレスアーキテクチャを使用する
サーバーの運用や管理を意識することなくサービスを展開できる。
・より頻繁に実験する
異なるタイプのサーバーやストレージ、設定を使用した比較テストをより頻繁に実施する
・システムに対する精通の程度を考慮する
クラウドサービスの技術を理解し、実現したいシステムを最適な技術で実装する
Auto Scalingのライフサイクルフック
ライフサイクルフックは、スケーリング発生によるEC2インスタンスの起動または終了時に任意の処理を実行する機能
例えば、スケールアウト(リソースの増加)によって新たに追加したインスタンスに初期化スクリプトを実行させたり、スケールイン(リソースの削減)によって終了するインスタンスにログを収集・退避させるといった処理を行える
Amazon ElasticCache
ElasticCacheはフルマネージド型のインメモリデータベースサービス
インメモリデータベースとは、データストレージを使用するデータベースのこと
HDDのようなディスクストレージよりも高速・安定したアクセスが可能で、主にパフォーマンスを重視するアプリケーションに利用されている。ElasticCacheにはKVS(Key-Value Store:Key-Value型のデータストア)型のデータベースエンジン「Redis」「Memcached」が用意されている。。
また、ElasticCacheはフルマネージド型のサービスなので、データベースのセットアップや利用状況の監視、ソフトウェアへのパッチ適用などはAWSによって管理される
Application Load Balancer
ALBはレイヤー7(アプリケーション層)で負荷分散を行う
ALBではHTTP,HTTPSをサポートしている。また、WebSocketや、同一インスタンス内の複数ポートへの負荷分散、ホストベースやパスベース、URLクエリ文字列でのルーティングに対応している
WebSocketとは、一つのコネクション内で永続的にサーバー/クライアント双方からデータ送信できる技術
通常のWebアプリケーションの場合、クライアントからのリクエストにサーバーがレスポンスを返して接続終了となるが、WebSocketを使うと、一度接続したコネクションではクライアントからのリクエストがなくてもサーバー側からデータを送信できる。
チャットや株価情報のような、リアルタイムな情報提供を必要とするアプリケーションでよく使われる
○ALBが対応している主なルーティング
・ホストベース
ホストベースのルーティングとは、クライアントがリクエストした接続先URLのFQDNに従ってルーティングできる機能のこと
例えば、クライアントの接続先URLが「http://www1.example.com
」の場合はWebサーバー1にアクセスさせ、「http://www2.example.com
」の場合はWebサーバー2にアクセスさせることができる。
・パスベース
パスベースルーティングとは、クライアントがリクエストした接続先URLのパスに従ってルーティングできる機能のこと
例えば、クライアントの接続先URLが「http:/www.example.com/web1
」の場合はWebサーバー1にアクセスさせて、「http://www.exapmle.com/web2
」の場合はwebサーバー2にアクセスさせることができる。
・URLクエリ文字列
URLクエリ文字列でのルーティングとは、クライアントがリクエストした接続先URLのクエリ文字列に従ってルーティングできる機能のこと。
URLクエリ文字列とは、ブラウザがWebサーバーに送信するデータをURLに表記したもの
「http://www.example.com/web?lang=jp」であれば「?lang=jp」がURLクエリ文字列に該当する
例えば、クライアントの接続先URLが「http://www.example.com/web?lang=jp」の場合は日本語サイトのあるWebサーバーにアクセスさせて、「http://www.example.com/web?lang=en」の場合は英語サイトのあるWebサーバーにアクセスさせることができる
AWS Storage Gatewayのボリュームゲートウェイの種類
・キャッシュ型(キャッシュボリューム)
キャッシュストレージをオンプレミス(ローカル)に設置することで、高速アクセスが可能な堅牢性の高いストレージを利用することができる。オンプレミスのキャッシュストレージには頻繁にアクセスするデータのみを保持し、アクセス頻度の低いデータはS3へ保存することで、階層化されたストレージを実現する。
キャッシュとして使用するストレージの容量を最小限に抑えることができるが、データがキャッシュ上に存在しない場合はS3へアクセスしに行くため、遅延が許容できないシステムには適さない
・保管型(ストアドボリューム)
オンプレミスのボリュームストレージに全てのデータを保持する
キャッシュ型とは異なり、全てのデータに対して高速アクセスが可能になる。
ボリュームストレージ上のデータは任意のタイミングでS3にスナップショットとして保存されるので、災害対策や定期的なバックアップとして利用できる。
Well-Architected Frameworkの「コスト最適化」
Well-Architected Frameworkの「コスト最適化」の設計原則には、実現したいシステムに必要となるAWSサービスを最小限の費用で利用するための推奨事項が記載されている
コスト最適化の設計原則は以下の5つ
・クラウド財務管理を実践する
リソースの使用量とクラウドに支払う費用を把握し、組織全体でコスト意識を高める
・消費モデルを導入する
未使用のリソースは停止し、必要最小限のリソース費用のみを支払う
・全体的な効率を測定する
AWSリソースの使用量とそれに対する費用を把握することにより、コストパフォーマンスを向上しやすくなる
・付加価値を生まない高負荷の作業に費用を書けない
データセンターやサーバーの管理・運用など高負荷の作業はAWSで実施するため、インフラの整備よりも開発業務や顧客対応に集中できる
・費用を分析し、帰結させる
システムの利用状況と費用からコストパフォーマンスを測定することで、リソースの最適化とコスト削減の機会を得られます。AWSを利用したシステムで得られた利益に対して、AWSに支払った費用が適切かを分析し、コスト最適化を目指す。
AWS KMS キーローテーション
AWS KMSにおいて、CMK(カスタマーマスターキー)には「AWSマネージド型」「カスタマーマネージド型」の2種類がある
通常、AWSによって作成・管理されるものは「AWSマネージド型」であり、ユーザーは削除できない。AWSマネージド型の鍵は、連携したAmazon EBSやAmazon Redshiftなどのサービスで暗号化を利用したタイミングでAWSが作成する。
一方、カスタマーマネージド型のCMKはユーザーが作成・削除、および管理を行う。ただし作成した鍵を長期間利用するのはセキュリティ上危険なため、KMSでは鍵の自動ローテーション(定期的な更新)をサポートしている。
ルートテーブルについて
ルートテーブルはデータをどこに転送するかを定義する機能
ルートテーブルに従って、送信先ごとに指定したターゲットへデータを転送することを「ルーティング」という。各サブネットは1つのルートテーブルを紐つけることができ、ルートテーブルの紐つけがないサブネットはVPC全体に適用される「メインルートテーブル」に従ってルーティングを行う
ルートテーブルはVPCからインターネットへ接続するときにも使用する
ターゲットをインターネットゲートウェイに設定すると、サブネット内に発生した送信先がVPC外への通信をインターネットゲートウェイへ転送して、インターネットへ接続できるようになる
CloudWatch Logsとは
CloudWatch LogsはAWSサービスやEC2インスタンスのOSやアプリケーションのログを収集し、一元管理するサービス
例えば、CloudTrailにおけるAWSサービスの操作ログや、VPCフローログ(VPC利用時のIPトラフィック情報)などを収集することができる。収集したログは、メッセージの内容をフィルタリングして管理者に通知させることができる。収集したログは、メッセージの内容をフィルタリングして管理者に通知させることができ(例:EC2インスタンスのOSログで"Error"の文字列を1時間に5回検出した場合、管理者へメール通知する)。
なお、EC2インスタンス上のアプリケーションやOSのログを収集するには、対象のEC2インスタンスへ「CloudWatchエージェント」をインストールする必要がある
さらに、フィルタリングしたログをAmazon KinesisやAWS Lambdaなどの別のサービスへ転送し、ログをリアルタイムに解析したり、ログの内容に応じてプログラムを実行させる、といった連携も可能
Amazon Aurora Global Database(Auroraグローバルデータベース)
Amazon Aurora Global Databaseは、Auroraデータベースを複数のリージョンにまたがって運用できるサービス
例えば、東京リージョンで稼働しているデータベースを大阪リージョンにも配置できる。Auroraグローバルデータベースを使用しても、ユーザーは2つのリージョンのデータベースを管理する必要はない。データはプライマリとして稼働しているメインのリージョンからセカンダリリージョンへレプリケートされる。
※AuroraはAWS独自のアーキテクチャによって高い耐久障害性を誇るが、デフォルトではあくまで単一のリージョン構成である
グローバルデータベースの大きな利点は以下の2点
・データベースアクセスを世界中から高速に行える(レイテンシの向上)
・リージョン単位で発生した大規模な障害の災害対策(ディザスタリカバリ:DR)になる
異なるリージョンからデータを読み取りたい場合はリードレプリカを異なるリージョンに配置することもできるが、Auroraグローバルデータベースは書き込みも異なるリージョンから行える。
また、Auroraグローバルデータベースは災害復旧時に非常に高い効果を発揮する。プライマリリージョンのデータベースが停止した場合、セカンダリリージョンのデータベースを昇格(フェイルオーバー)させ運用を継続できる。Auroraグローバルデータベースでは、一般的にディザスタリカバリの指標として使用されるRPO(目標復旧時点)を1秒、RTO(目標復旧時間)を1分未満と定めている。
RPO(Recovery Point Objective:目標復旧時点)
どの時点までのデータを復旧させるか。データベースの更新頻度が高い場合は、0秒(停止直前)のデータ復旧が求められる。
RTO(Recovery Time Objective:目標復旧時間)
どのくらいの時間で復旧させるか。サービスやシステムを停止していられる時間
Amazon SQSとAuto Scalingの組み合わせ
リクエストが急激に増加した場合、SQSとCloudWatch、Auto Scalingを連携することでサーバーを自動的にスケーリングできる。リクエストの増加によりSQSに滞留したメッセージ数が閾値を超えたときにCloudWatchがアラートをあげ、Auto Scalingがサーバーを増やす。キューに目セージがなくなり次第スケールインすることで、コストを抑えた運用が実現することができる。
IPアドレスの種類
・プライベートIPアドレス
VPC内のリソース間の通信に使用し、インターネットとは通信不可のIPアドレス
プライベートIPアドレスをもつAWSリソースは、VPC内でのみ名前解決が可能なプライベートDNSホスト名が割り当てられる。プライベートIPアドレスは、パブリックサブネットとプライベートサブネットにあるEC2やRDSなど、全てのインスタンスに割り当てられる
プライベートIPアドレスは、AWSリソースを停止・起動しても同一のIPアドレスがつかわれ、AWSリソースの削除時にIPアドレスが解放される
・パブリックIPアドレス
インターネットと通信可能なIPアドレス
パブリックIPアドレスをもつAWSリソースは、パブリックDNSホスト名が割り当てられる。パブリックDNSホスト名は、名前解決要求がVPC外からであればAWSリソースのパブリックIPアドレスに解決され、VPC内からであればプライベートIPアドレスに解決される。
後述するElastic IPアドレスではないパブリックIPアドレスは、AWSリソースが停止する時にIPアドレスが解放され、AWSリソースが起動するときに新規のIPアドレスが割り当てられる
・Elastic IPアドレス
インターネットと通信可能な固定のパブリックIPアドレス
Elastic IPアドレスを割り当てたAWSリソースが削除されても同一のIPアドレスが保有され、別のAWSリソースに再び割り当てることができる。Elastic IPアドレスを割り当てたAWSリソースはパブリックDNSホスト名も固定になり、Elastic IPアドレスへ名前解決される
Elastic IPアドレスは割り当てられているAWSリソースが起動している時は無料で利用できるが、AWSリソースが停止していたり、割り当てられていない時は料金が発生する。
アーカイブとボールト
アーカイブ
S3 Glacierに保存されるデータのことで、S3のオブジェクトに相当する。また、アーカイブが保存される領域をボールドと呼ぶボールドは保管室(Vault)という意味があり、S3のバケットに相当する。
ボールトロック
S3 Glacierにはボールドロックという機能がある
ボールトロックは「誰に対して」「どの動作を」「どの期間」「許可or拒否」という設定に従って、ボールト内のアーカイブに制限をかける。一度ボールトロックを有効にすると、指定した期間中は設定内容を変更できない。
例えば、「すべてのユーザーに対して更新と削除を一年間拒否する」という設定をすれば、対象のアーカイブは一年間更新や削除が禁止される
ログを一括管理する方法
・Amazon CloudWatch Logs
AWSサービスやEC2インスタンスのOSやアプリケーションのログを収集し、一元管理するサービス
例えば、CloudTrailにおけるAWSサービスの操作ログや、VPCフローログ(VPC利用時のIPトラフィック情報)などを収集することができる。なお、EC2インスタンスのOSのログを収集するには、対象のEC2インスタンスへ「CloudWatchエージェント」をインストールする必要がある。
※CloudWatch Logs Insightsは収集されたログを解析するサービス
CIDR(Classless Inter-Domain Routing)について
CIDRは、ネットワークの範囲を指定するIPアドレスの設定方法のこと CIDRはIPアドレスを「172.16.0.100」のように表記する。この「/24」をプレフィックス長と言い、IPアドレスとプレフィックス長によって所属するネットワークが決まる。メタデータとは
実行中のインスタンスに関するデータ
メタデータには、インスタンスIDやパブリックIPアドレス、DNSホスト名などが含まれる
ゲストOSとは
ゲストOSとは、ハイパーバイザー(ホストOS)の仮想環境上で動作するOSのこと
また、ハイパーバイザーとは、仮想化環境を実現するための土台となる仮想化ソフトウェアやOSのことをいう
AWS Site-to-Site VPN
AWS Site-to-Site VPN(サイト間VPN)は、カスタマーゲートウェイ(オンプレミスのルーター)とVPCの仮想プライベートゲートウェイ(VGW:Virtual Private Gateway)を、インターネットVPNで接続するサービス
Site-to-Site VPNはインターネット上に仮想の専用線であるVPNトンネルを張り、IPsecという暗号技術を使って通信を保護する。
データ転送コスト削減方法
プライベートサブネットから別アカウントのVPCへ、NATゲートウェイ経由でアクセスしてアプリケーションを実行する場合、アプリケーションの応答データはAWSからインターネットへのアウトバウンド通信と同じデータ転送料金が発生する。
また、NATゲートウェイを通過するデータ全てに対してもデータ処理料金が発生する。
この問題を解決するには、VPCピアリングによるVPC間の接続、もしくはAWS Resource Access ManagerによるVPCの共有を利用する。
VPCピアリングとは、VPC間のルーティングを可能にする機能
異なるリージョンのVPCや他のAWSアカウントのVPCでも、同一のプライベートネットワーク内に存在しているかのように相互に通信できる。
AWS Resource Access Manager(RAM)は、AWSリソースを複数のAWSリソースで共有できるサービス
AWS RAMは追加料金なしで利用できる。
ハードウェアを専有するインスタンスの購入オプション
ハードウェア専有インスタンス
特徴
・インスタンス単位で契約
・物理的なCPUソケット、コア数、ホストIDは確認できない
・物理ホスト単位で購入したソフトウェアライセンスの持ち込み(BYOL)はサポートしない
用途
会社のコンプライアンス対応で、他のAWSアカウントとは分離された専用ハードウェアでEC2インスタンスを利用したい場合など
Dedicated Hosts(専有ホスト)
・ホスト単位で契約
・物理的なCPUソケット、コア数、ホストIDが確認できる
・物理ホスト単位で購入したソフトウェアライセンスの持ち込み(BYOL)をサポートする
用途
利用するソフトウェアライセンスの制約で、他のEC2インスタンスとは分離された専用ハードウェアで利用したい場合など
BYOL(Bring Your Own Licence)
利用者があらかじめ購入済みのライセンスをAWSに持ち込んで使用すること
AWS Key Management Service(KMS)において、暗号化鍵の利用状況を監査するサービス
AWS CloudTrail
KMSは、暗号化に使用する鍵(キー)を作成・管理するサービス
通常は、暗号化を行う対象のサービス(Amazon S3やEBS(Elastic Block Store)、Amazon Redshiftなど)と連携して利用する
KMSはAWS CloudTrailと連携しており、鍵の使用ログ(いつどのサービスで鍵が使用されたか)が記録されるため、鍵の利用状況を監査することができる
暗号化鍵について、鍵の生成や保管、削除などの管理を自社で完全に制御したい時の適切なサービス
・AWS CloudHSM
AWS CloudHSMでは、専用のハードウェアデバイスを用いて暗号化鍵を生成・管理する。
貸し出されるハードウェアは世界的な暗号化ハードウェアの規格(FIPS 140-2 のレベル3)で認証済みのため、信頼性の高さが強み
「CloudHSM」のHSM(Hardware Security Module)とは、データセキュリティを高めるための暗号鍵を保護しつつ運用するデバイスのこと
AWS Key Management Service(KMS)では鍵の管理はAWS側で行われるのに対して(フルマネージド)、CloudHSMでは鍵の生成や保管・削除などのライフルサイクル管理はユーザー自身が行う
なお、CloudHSMでは専用のハードウェアを使用する分、KMSと比べると利用料金が高価に設定されている
法令や規制等の要件で、認定を受けたハードウェアで暗号化鍵を管理する必要があるようなケースでは、CloudHSMを使用する。