• AWS

Well-Architected Framework 運用上の優秀性

Amazon CloudWatch Logs

Amazon CloudWatch LogsはAWSサービスやEC2インスタンスのOSやアプリケーションのログを収集し、一元管理するサービスです。例えば、CloudTrailにおけるAWSサービスの操作ログや、VPCフローログ(VPC利用時のIPトラフィック情報)などを収集することができます。収集したログは、メッセージの内容をフィルタリングして管理者に通知できます(例:EC2インスタンスのOSログで”Error”の文字列を1時間に5回検出した場合、管理者へメール通知する)。
さらに、フィルタリングしたログをData FirehoseやLambda、OpenSearch Serviceなどの別のサービスへ転送し、ログをリアルタイムに解析したり、ログの内容に応じてプログラムを実行させる、といった連携も可能です。

別のサービスへ転送するには、CloudWatch Logsのサブスクリプションフィルターで、データの転送先を設定します。OpenSearch Serviceへは、CloudWatch Logsから直接データをストリーミング可能です。

Amazon VPC Lattice

Amazon VPC Latticeは、複数のVPCやアカウントにまたがるアプリケーション間の通信を簡素化し、一元的に管理するフルマネージドサービスです。HTTP、HTTPS、gRPCなどのアプリケーション層の通信プロトコルをサポートしており、VPC Latticeを介して各アプリケーションを接続できます。さらに、VPC Latticeにはサービスディスカバリー機能が組み込まれており、他のサービスの位置情報(例えば、IPアドレスやポート番号)を動的に検出できます。これにより、マイクロサービスアーキテクチャの複雑なネットワーク構成を効率的に管理することができます。

[VPC Latticeを使用した複数アカウントにまたがる接続の例]

VPC Lattice使用の流れは以下の通りです:1. サービスネットワークの作成サービスネットワークとは、マイクロサービス間の通信を管理する仮想ネットワークのことです。これを作成することで、異なるVPCのマイクロサービス間が通信できる基盤が整います。2. サービスの作成サービスは、送信元からのリクエストを認証・承認し、ターゲットグループにルーティングします。3. ターゲットグループへの登録送信先VPCのリソース(例:ECSタスク)をターゲットグループに登録します。ターゲットグループはリクエストを受け取るリソースの集合体であり、サービスからのルーティング先となります。4. サービスネットワークへのサービスとVPCの関連付け作成したサービスをサービスネットワークに関連付けます。また、送信元のVPCをサービスネットワークに関連付けることで、サービスネットワークを介して送信先VPCのターゲットグループ内のリソースと通信できるようになります。

AWS Auto ScalingはAWSリソースを負荷状況や設定したスケジュールに従って、自動的にスケーリングする機能です。複数のAZにまたがるAuto ScalingグループにEC2インスタンスを所属させることで、高可用性を確保できます。

Amazon MQは、Apache ActiveMQとRabbitMQに対応したフルマネージドのメッセージブローカーサービスです。メッセージブローカーサービスとは、複数のサービスやシステム間の連携に使用される「メッセージキュー」を管理するサービスのことです。Amazon MQはApache ActiveMQやRabbitMQといったオープンソースのメッセージブローカーと互換性があるので、既存環境から移行するアプリケーションに適しています。
Amazon MQのメッセージブローカーは単一のAZ内で動作します。AZ障害に備えて可用性を向上したい場合は、アクティブ/スタンバイ構成を選択すると複数のAZで動作できます。

設問の要件を満たした構成は次の図のようになります。

AWS Systems Manager Session Managerは、EC2インスタンスへブラウザ(マネジメントコンソール)やAWS CLIからセキュアにログインできる機能です。Session Manager経由のログインでは、ログイン先のインスタンスに対してセキュリティグループなどによるSSH通信の許可設定(通称:穴あけ)が不要になりセキュリティの強化に繋がります。また、キーペア(SSHキー)の管理も不要になるため運用の簡略化にも繋がります。プライベートサブネットにあるインスタンスへも踏み台サーバーなしで接続が可能です。

Session ManagerからEC2インスタンスへのアクセスでは、インスタンスへの通信元IPアドレスが変更になってもセキュリティグループを更新する必要がなくなります。

Amazon Cognitoは、モバイルアプリケーションやWebアプリケーション向けのユーザー認証機能を提供するサービスです。不特定多数のエンドユーザー向け認証サービスであり、EC2インスタンスへのログインはできません。

AWS Systems Manager Parameter Storeは、データベースなどにアクセスする際のパラメーター(ログイン時の認証情報など)を管理するサービスです。アプリケーションなどからAWSリソースへアクセスする際にParameter Storeからパラメーターを取得することにより、ログイン情報をアプリケーションにハードコーディングしたり平文で入力しておく必要がありません。
管理者はParameter Storeを利用することにより、アプリケーションの安全な認証を実現できるようになります。

Parameter Storeに保存されたパラメーターを使用するには、Parameter Storeの読み取り権限があるIAMポリシーを、IAMロールに割り当てます。そのIAMロールをアプリケーション(設問の場合はLambda関数)に付与します。IAMポリシーとIAMロールについては、分野「IAM」を参照してください。

Parameter Storeと似たAWSサービスにAWS Secrets Managerがあります。Parameter Storeでは標準サービスを無料で利用できます。Secrets Managerは有料である分、シークレット(Parameter Storeでいうパラメーター)を自動的にローテーションする機能があります。

同じ構成のインフラストラクチャを別のリージョンに迅速かつ確実に構築したい場合、CloudFormationはAWSクラウド上での環境構築を自動で行うサービスの1つです。テンプレートには、リソースやその設定などの情報が含まれており、このテンプレートを使用して別のリージョンで同じインフラストラクチャを構築することができます。同じアーキテクチャを異なるリージョンに構築するための手法として、効率的であり冗長性を高めるための適切な方法です。

現行のインフラストラクチャを参考にして、それをベースにテンプレートを作成する。その後、AWS CloudFormationを利用して新しいリージョンにこのテンプレートを適用し、DR用のインフラを構築する

Elastic Beanstalkは、アプリケーションが動作する定番の構成を提供します。しかし「現在の運用環境の設定をエクスポートする」という機能は提供していません。そのため新しいリージョンでの環境を手動でセットアップする必要があります。
また、Elastic Beanstalkは定番の構成を提供しますが、ある特定の構成の詳細な設定は提供しませんので、設問にある構成を構築できるかは不明です。よって誤りです。

・静的コンテンツの安定配信:
静的コンテンツのホスティングにはS3が最適です。
・Dockerコンテナを使用し、変動するトラフィックに迅速に対応可能な動的処理:
FargateとECSの組み合わせ、FargateとEKSの組み合わせともDockerコンテナの実行に適しており、自動スケーリングもサポートしており問題ありません。
・購入履歴やユーザーアカウント情報のリレーショナルデータベースでの管理:
リレーショナルデータベースサービスにはRDSとAuroraがあります。
・サーバーの運用管理を効率化:
Fargateはサーバーレスのコンテナサービスであり、サーバーの運用管理が不要でとなり効率化が実現できます。
コンテナオーケストレーションにECSを使用する場合、ECSは他のAWSサービスとしての統合が深く、他のサービスとの連携が容易であるため運用管理が簡素化できます。
一方コンテナオーケストレーションにEKSを使用する場合、Kubernetesクラスタの設定と管理が必要となり管理負担が増えます。
・インフラの自動スケーリングとデプロイの簡素化:
FargateとECSの組み合わせ、FargateとEKSの組み合わせとも要件に当てはまります。また、S3のホスティングは管理が簡単であるため要件にあっています。

Kinesis Data Streamsは外部から送信されるストリーミングデータを収集するサービスです。センサーなどが生成したストリーミングデータをKinesis Data Streamsのストリームへ送信し、ストリーム上のデータは分析や機械学習などを行うアプリケーションがリアルタイムに読みだして処理するためリアルタイムのデータ収集が可能です。Managed Service for Apache Flink(旧 Kinesis Data Analytics)は、Kinesis上のストリーミングデータを処理し、可視化・分析できるサービスで、リアルタイムの分析が可能です。データレイクとは、データが構造化されているかどうかに関係なく、さまざまなデータを一元的に保存・管理する場所のことを指します。S3は大量のデータをスケーラブルに、コスト効率的よく保存でき、高い耐久性とセキュリティ機能を持っているため最適です。

Redshift Spectrumは、S3上のデータを外部テーブルとして参照できるようにした機能でS3の大量データを効率的に分析するため使用されますが、リアルタイムの分析には適していません。

SNSはリアルタイムの通知には適していますが、連続的なデータストリームの取り込みには適していません。DynamoDB StreamsはDynamoDBのテーブルに対して行われた直近の24時間の変更をログに保存する機能でリアルタイムデータの処理には使用できません。

Athenaは、S3上のデータに対して標準SQLを実行できるデータ分析サービスで、連続的なリアルタイムストリーミングデータの分析には最適ではありません。

ECSはコンテナを実行、管理するサービスです。Fargateはコンテナ向けのサーバーレスコンピューティングエンジンで、ECSと組み合わせることでサーバーの環境構築や管理をすることなくコンテナを実行できます。EventBridgeは、AWS上リソースの状態変化やスケジュールに応じてアクションを実行することができるサービスです。特定の時刻にジョブを開始させるのに適しています。

Lambda関数の実行時間は1回につき最長15分です。ジョブの実行時間が30分かかる場合、Lambda関数は適切ではありません。

Step Functionsは、複数のAWSサービスをワークフローとして連携させ、処理を自動化するためのフルマネージド型のサーバーレスなサービスです。Step Functionsは複数のサービスの連携を容易にしますが、単独での大規模なデータ解析タスクの実行には最適とは言えません。

Glueは、フルマネージドのサーバーレスETLサービスです。Glueのデータの抽出・変換・書き出しをする処理はできますが、複雑なデータ解析には適していません。

AWS Certificate Manager(ACM)は、SSL/TLS証明書を作成・管理できるマネージドサービスです。ACMで管理しているSSL/TLS証明書(サーバー証明書)をAmazon CloudFront、Elastic Load Balancing、Amazon API Gatewayなどに適用することで、ユーザーとの通信をHTTPSで暗号化するとともに、ドメイン(ping-t.com など)の使用権を確認してアクセス先のサーバーが本物であるという証明をします。ACMで管理するSSL/TLS証明書はACMから発行できる他、ユーザー独自の証明書もインポートして利用できます。
ACMから発行した証明書は有効期限が切れる前に自動で更新されますが、インポートした証明書はユーザーが更新しなければなりません。

AWS Configは、AWSリソースの設定を管理し、記録・評価するサービスです。AWSリソースの設定がいつ変更されたかを記録し、変更がルールに準拠したものでない場合には「非準拠」として記録されます。
AWS Configでは、ACMで管理している証明書の有効期限を対象としたルールを作成できます。ユーザーが指定した日数以内に有効期限が切れる場合、ルールが非準拠となります。ルールが非準拠になったことをトリガーにしたAmazon EventBridgeのイベントルールを作成し、Amazon SNSから通知することで、設問の要件を満たせます。

証明書の有効期限が切れる前に通知する方法として、AWS Configを使用する方法以外にも、Amazon CloudWatchのメトリクス(DaysToExpiry:証明書の有効期限までの日数)を使用して、SNSから通知する方法などがあります。

ACMのオプションで証明書の有効期限イベントの管理ができますが、SNSの通知を設定することはできません。
Amazon SNSから通知するには、EventBridgeのイベントルールを作成する必要があります。

Trusted Advisorのチェック対象に、ACMで管理している証明書の有効期限は含まれていません。

Systems Manager Parameter Storeは、データベースなどにアクセスする際のパラメーター(ログイン時の認証情報など)を管理するサービスです。ACMで管理している証明書の有効期限をパラメーターとして取得することはできません。

AWS Directory Serviceは、MicrosoftのActive Directory (AD) をAWS上で提供するマネージドサービスです。
ADはネットワーク上のリソース情報(ユーザアカウントやデバイスなど)を一元管理でき、ユーザーやWindowsサーバーの管理・認証ができます。AWS Directory Serviceも同様の機能を持つので、オンプレミスのADと同様にWindowsインスタンス群を管理できます。

ConfigはAWSリソースの設定を管理し記録・評価するサービスです。
キーの削除が実行されたときにキーを非準拠とし、SNSトピックを通じて管理者へメールを送信するようにできますが、キーの削除は実行されてしまいます。

AWS KMSのキーを削除すると、キーで暗号化されたデータを復号できなくなり、データの回復が不可能となります。管理者はAWSユーザーが誤って必要なキーを削除しないように、削除権限を付与しないか、もしくは万が一削除操作をしても復旧できるようにしておくと、暗号化したデータを保護できます。

AWS Systems Manager Automationは、AWSリソースへの操作をランブックに従って自動的に実行するサービスです。ランブックは、自動実行されるワークフローを定義するドキュメントであり、ワークフローは一連のタスクで構成されています。AWSが提供する定義済みのタスク(例:インスタンスの再起動)のほか、ユーザーがカスタマイズしたワークフローを作成することも可能です。

Systems Manager Automationには、指定したKMSのカスタマーマネージド型のキーの削除をキャンセルする定義済みのランブックがあります。EventBridgeを利用し、キーの削除をトリガーにランブックの実行、およびSNSトピックを通じて管理者へメールを送信することで、設問の要件を満たせます。

AWS Systems Manager Run Commandは、AWSのEC2インスタンスやオンプレミスのサーバーに対してリモートでコマンドやスクリプトを安全に実行する機能です。サーバーにログインしなくても安全でセキュアに大規模なサーバー群をリモートで管理できるため、踏み台サーバー、手動でのSSH接続などが不要になります。
パッチ管理に限定されずリモートから任意のコマンドやスクリプトの実行ができるため、多様なタスクの自動化や一斉実行が可能です。既存の多数のEC2インスタンスにCloudWatchエージェントをリモートで安全にインストールするのに適した方法す。

AWS Systems Manager Patch Managerは、EC2インスタンスやオンプレミスのサーバーのOSパッチ情報をスキャンし、パッチ適用を自動化する機能です。OSの種類ごとに「どのパッチを」「いつ適用するか」などのパッチベースライン(パッチ適用のルール)を作成して、自動で実行されるようにします。CloudWatchエージェントのような特定のソフトウェアを多数のインスタンスにインストールする要件には向いていません。

AWS Configは、AWSリソースの設定を管理し、記録・評価するサービスです。対象のEC2を選択するには役立ちますが、多数のインスタンスにエージェントをインストールする作業を手動で行うのは非効率的です。

Amazon Quantum Ledger Database (QLDB) は、フルマネージドの台帳データベースです。データの変更履歴をイミュータブル(不変的)に記録し、履歴が改ざんされていないことを暗号技術によって検証できます。QLDBはデータベースの全ての変更履歴が追跡できるので、金融取引の監査や法的文書の管理など変更履歴の正確性が求められるケースでの利用に適しています。
また、QLDBはフルマネージドサービスであるため、サーバー管理などの運用オーバーヘッドを最小限に抑えることができます。

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

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

関連記事

コメント

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