aws ネットワーク、コンテンツ配信

AWSのサーバーレスサービスを利用して静的ファイルのWebコンテンツを公開するには、S3の静的Webサイトホスティングを利用するのがもっとも容易です。しかしS3の静的Webサイトホスティングで発行されるURLはHTTPのみで、HTTPS(暗号化通信)はサポートされません。暗号化通信を可能にするには、CloudFrontで静的WebサイトホスティングのURLをオリジンサーバーに設定し、使用するプロトコルに「HTTPS」を選択します。その際に独自ドメインのSSL/TLS証明書(サーバー証明書)をACM(AWS Certificate Manager)から適用します。

OAI(Origin Access Identity)は、S3バケット内のコンテンツへのアクセスをCloudFront経由でのアクセスに限定し、クライアントからS3バケットへ直接アクセスされないようにする機能です。クライアントからオリジナルコンテンツへの直接アクセスを制限することにより、オリジンサーバーのデータを保護できます。


AWS VPN(Virtual Private Network)はオンプレミスなどのユーザー環境からAWSへ、インターネットVPN(※)でセキュアに接続するサービスです。AWS VPNではインターネット回線を利用するので、専用回線を敷設するDirect Connectよりも安価に、かつ短い期間で接続を開始できます。
※インターネットVPN … インターネット回線を使って拠点同士を仮想の専用線で接続し、暗号化通信を行う技術のこと。

Amazon CloudFrontを使用するには、はじめに「ディストリビューション」を作成します。ディストリビューションではオリジンサーバーやキャッシュなど、コンテンツを配信するために必要な各種設定をします。

CloudFrontには、エッジサーバーに保存されているキャッシュを即座に削除できる機能(Invalidation)があります。キャッシュを削除した後にクライアントからデータのリクエストを受け取ると、エッジサーバーは必ずオリジンサーバーへコンテンツを取得しにいくので、クライアントへ配信するコンテンツが最新化されます。削除対象のデータはフォルダ名やファイル名で指定できます。

Route 53にはエイリアスレコードという特別なDNSレコードがあります。S3の静的Webサイトホスティングのエンドポイント(URL)などAWSサービスの一部は、ドメイン名に割り当てられるIPアドレスが動的に変化するので、固定のIPアドレスを登録する必要があるAレコードを設定できません。このようなサービスに独自ドメイン名を別名として割り当てたい場合は、CNAMEレコードまたはエイリアスレコードを利用します。そのうちのエイリアスレコードはAWSサービスのドメイン名に割り当てた別名から直接IPアドレスへ名前解決ができるので、CNAMEレコードを使用するよりもDNSクエリへの応答がより速くなります。

Route 53にはエイリアスレコードという特別なDNSレコードがあります。エイリアスレコードはCNAMEレコードでは登録できない「Zone Apex」の別名を登録できます。Zone Apexとは最上位のドメイン名のことで、例えば「www.example.com」や「sub.example.com」のZone Apexが「example.com」です。
権威DNSサーバーにZone Apexを設定する時、Zone ApexのNSレコードを必ず登録する必要があります。DNSの仕様にCNAMEレコードは別レコードで登録されているドメイン名を登録できないという制約があるため、すでにNSレコードが登録されたZone Apexの別名はCNAMEレコードで登録できません。
例えば、ALBのドメイン名「example.us-east-1.elb.amazonaws.com」の別名として独自ドメイン名「example.com」をCNAMEレコードで登録しようとしても、「example.com」はZone Apexなので登録できません。このような場合にエイリアスレコードを利用すれば「example.us-east-1.elb.amazonaws.com」の別名として「example.com」を登録できます。


権威DNSサーバーにDNSレコードを登録する時、1つのドメイン名に対して複数のIPアドレスを設定できます。ルーティングポリシーとは、DNSクエリのドメイン名に対応するIPアドレスの中から回答するIPアドレスを決める方針のことです。
Route 53のルーティングポリシーのうち「加重ルーティングポリシー」は、複数のIPアドレスに対して設定された重みづけに従ってIPアドレスを回答します。高性能なサーバーへのアクセスを多くしたい場合は、対象サーバーのIPアドレスに対して重みの値を他サーバーより大きく設定します。

レイテンシールーティングポリシーを使用したDNSレコードを作成する
レイテンシールーティングポリシーは、遅延(レイテンシー)が最も小さいリージョンにあるリソースのIPアドレスを回答するルーティングポリシーです。

l


AWS Direct Connectロケーションとは、オンプレミスとAWSのデータセンターとを相互に接続するポイントのことです。各リージョンに複数用意されており、ユーザーは接続するロケーションを選択できます。東京リージョン(ap-northeast-1)では、東京や大阪など5つのロケーションが用意されています(2022年1月時点)。
Direct Connectでは、オンプレミスから複数のDirect Connectロケーションへの接続をサポートしています。利用しているロケーションの障害に備えて複数のロケーションへ接続することで、可用性を高められるようになっています。
例えば、オンプレミス環境から東京に存在するロケーションと大阪に存在するロケーションへDirect Connectを接続することで、自然災害時の影響を少なくすることが期待できます。

l

複数のDirect Connectロケーションを利用することで、単一障害点(※)がない設計にできます。
※単一障害点(SPOF:Single Point Of Failure) … ある箇所が故障すると、システム全体が機能不全になる箇所

AWS Site-to-Site VPN(サイト間VPN)は、カスタマーゲートウェイ(オンプレミスのルーター)とVPCの仮想プライベートゲートウェイ(VGW:Virtual Private Gateway)を、インターネットVPNで接続するサービスです。Site-to-Site VPNはインターネット上に仮想の専用線であるVPNトンネルを張り、IPsecという暗号技術を使って通信を保護します。

AWS Site-to-Site VPNで使用する仮想プライベートゲートウェイ(VGW:Virtual Private Gateway)とVPNトンネルは、機器障害に対する高可用性を保つためにAWS側で冗長化されています。一方、カスタマーゲートウェイはオンプレミス内の機器なので、高可用性を保つにはAWSユーザー側で冗長化する必要があります。

VPNトンネルを経由したネットワークトラフィック情報は、Amazon CloudWatchで収集できます。CloudWatchには指定した仮想プライベートゲートウェイのVPNトンネルの状態、送受信したバイト数が記録されます。VPNトンネルの状態をCloudWatchで監視すれば、VPNトンネルに異常が発生した場合にアラームを出すことができます。

Route 53における7種類のルーティングポリシーのうち、シンプルルーティングポリシー以外はヘルスチェックが利用できます。Route 53のヘルスチェックは、ドメイン名に対応するリソースが正常に動作しているかを定期的に確認します。その結果、正常であったリソースのIPアドレスのみDNSクエリの回答とします。
複数値回答ルーティングポリシーとフェイルオーバールーティングポリシーはヘルスチェックの結果に基づいて回答するので、ヘルスチェックの設定が必須です。

「複数値回答ルーティングポリシー」は、複数のリソースに対してヘルスチェックを行い、最大8個の正常なリソースの中からランダムに分散してIPアドレスを回答します。

「フェイルオーバールーティングポリシー」は、通常時はプライマリに設定したリソースのIPアドレスを回答し、プライマリのリソースにヘルスチェックで異常が発生した場合はセカンダリに設定したリソースのIPアドレスを回答するルーティングポリシーです。

AWS Direct Connect(DX)はオンプレミスなどのユーザー環境からAWSへ、専用回線を使ってセキュアに接続するサービスです。インターネット回線ではなく専用回線を敷設して使用するので、安定した高速なネットワークで接続できます。
Direct Connectのプライベート接続はDirect Connectエンドポイントと仮想プライベートゲートウェイ(VGW:Virtual Private Gateway)を1対1で接続するので、通常は1つのVPCにしか接続できません。Direct Connectエンドポイントから複数のVPCに接続したい場合は「Direct Connectゲートウェイ」を利用します。
Direct ConnectゲートウェイはDirect Connectエンドポイントと仮想プライベートゲートウェイの間に配置されて、世界中の各リージョンにある複数のVPCへ接続できるようになります。なお、VPCは他のAWSアカウントのものであっても接続できます。

AWS Global Acceleratorは、複数のリージョンで展開しているWebアプリケーションなどへのリージョン間の負荷分散が可能です。負荷分散先(エンドポイント)はALB、NLB、EC2インスタンス、Elastic IPアドレスを指定できます。
負荷分散については「ELB」分野の参考【負荷分散(ロードバランシング)】を参照してください。

リージョン間の負荷分散を設定することにより、あるリージョンで稼働しているEC2インスタンスに障害が発生しても他リージョンのEC2インスタンスでサービスを継続できるため、Webアプリケーションの可用性を向上できます。Global Acceleratorは2つの固定パブリックIPアドレスを保有しており、ユーザーはこの固定IPアドレスへアクセスします。エンドポイントが増減してもIPアドレスに影響なくサービスを継続できるため可用性が向上します。
また、Elastic IPアドレスを割り当てられないALBへのアクセスが、Global Acceleratorを利用して固定IPアドレスでアクセス可能になります。

CloudFrontはユーザーからオリジンサーバーへのリクエストを受けるリバースプロキシとして動作します。フィールドレベル暗号化は、ユーザーから送信されたHTMLフォームのPOSTリクエストのうち、一部のフィールドを暗号化し、特定のアプリケーションでのみ復号可能とする機能です。リクエストをオリジンに転送する前にCloudFrontがさらにデータを暗号化するので、HTTPS通信のセキュリティがより強固になります。フィールドレベル暗号化は、ECサイトで送信される個人情報のような高い機密性が求められるデータに利用します。
下記の図では、ユーザーから送信された機密情報をCloudFrontで暗号化し、Lambda関数のみアクセス可能にしています。

キャッシュTTL(Time To Live:TTL)とはキャッシュを保持する時間のことです。URLパスごとに指定できます。CloudFrontはキャッシュTTLが超過した後にクライアントからのリクエストを受けると、オリジンサーバーにコンテンツの更新有無を確認し、更新されていればキャッシュに反映しつつ応答を返します。

キャッシュTTLは大きい値であるほどキャッシュの更新頻度が低くなり、小さい値であるほどキャッシュの更新頻度が高くなります。

CloudFront署名付きURLは、URLを知っている特定のクライアントが期限付きでコンテンツへアクセスできる機能です。S3の署名付きURLと同じく、CloudFront署名付きURLは非常に長いランダムな文字列で作成されているため、URLを知らない人が推測することはほぼ不可能です。CloudFront署名付きURL発行時に有効期限を設定すると、有効期限の過ぎたURLは無効になります。
CloudFront署名付きURLを利用する時は、OAI(Origin Access Identity)を有効にしてS3バケットへ直接アクセスされないように設定します。OAIは、S3バケット内のコンテンツへのアクセスをCloudFront経由でのアクセスに限定し、クライアントからS3バケットへ直接アクセスされないようにする機能です。

AWS Global Acceleratorは、ユーザーからAWSリソースまでのアクセス経路をAWSネットワークを利用して最適化するサービスです。通常、ユーザーがAWSリソースにアクセスする時、AWSリソースがあるリージョンまでに経由するインターネット回線の影響を受けるため、遅延の発生やデータ損失などのリスクがあります。Amazon Global Acceleratorは、ユーザーと地理的に近いエッジロケーションから高パフォーマンスなAWSネットワークを経由してAWSリソースへアクセスするため、遅延の発生やデータ損失などのリスクを少なくします。

l


この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。