見出し画像

AWS 認定ソリューションアーキテクトプロフェッショナル問題集3

はじめに

AWSソリューションアーキテクトプロフェッショナルの問題集になります。全部で30問あり設問が終わったあと30問分の回答があります。10問までは問題だけ無料で閲覧可能です。実際の試験は75問あり、文章が長く試験時間も180分と1問にかけられる時間が短いです。この問題で慣れておくと合格に近づくことができると思います。本問題集が対応しているテストのバージョンはSAP-C01です。新しいバージョンのテストが出たら公開を停止する予定です。

問題1

ある企業のオンプレミスのデータセンター内の仮想マシン上で103の基幹業務アプリケーションが稼働しています。アプリケーションの多くはシンプルな PHP、Java、Ruby の Web アプリケーションであり、もはや積極的に開発されておらず、トラフィックはほとんどありません。これらのアプリケーションをインフラコストが最も低いAWSに移行するためのアプローチはどれでしょうか?

A. ロードバランサをつけない単一インスタンスのAWS Elastic Beanstalk環境へ各アプリケーションをデプロイする。

B. AWS SMSを使いそれぞれの仮想マシンのAMIを作成し、それらをEC2で稼働させる。

C.
各アプリケーションをDockerイメージに変換し、ALB配下の小さなECSクラスターへデプロイする。

D.
VM Import/Exportを使い各仮想マシンのAMIを作成し、カスタムイメージの設定で単一インスタンスのAWS Elastic Beanstalkで稼働させる。

問題2

S3、CloudFront、Transcoderを主なコンポーネントとしたビデオストリーミングサービスを構築しています。
動画コンテンツはAWSのS3に保存されますが、最初の作業は10本の動画をS3にアップロードし、セキュリティを確認してから動画をストリーミングしようと考えます。10本の動画はS3へのアップロードが完了したところで、格納したファイルが暗号化されていることを確認する必要があります。これを行うには、次のうちどれが最適でしょうか。

A. 物理的および論理的な改ざん検知とアプライアンスのゼロ化をトリガーにする応答メカニズムの両方を備えたAWS CloudHSMアプライアンスを使用する。

B. APIでフラグを設定するか、AWSマネジメントコンソールでチェックボックスをチェックして、Amazon S3でデータを暗号化します。

C. KMSを使用して、データの復号と暗号化する。また、CloudFrontのディストリビューションでOrigin Access Identityを使用することで、コンテンツはS3のURLではなくCloudFront経由でのみ提供できるようにする。

D. データをAES-256で暗号化する。オブジェクトを暗号化した後で、暗号鍵はCloudFrontに保管する。

問題3

ある企業では、ビジネスクリティカルな多階層アプリケーションをAWSに移行することになりました。アーキテクチャは、デスクトップクライアントアプリケーションとサーバーインフラで構成されています。サーバーインフラはオンプレミスのデータセンターにあり、アプリケーションの稼働時間のSLAである99.95%を維持できないことが多いです。ソリューションアーキテクトは、アプリケーションがSLAを満たすことができるように、またはSLAを超えることができるようにアプリケーションを再設計しなければなりません。アプリケーションには、単一の仮想マシン上で動作する PostgreSQLデータベースが含まれています。ビジネスロジックとプレゼンテーション層は、複数の仮想マシン間で負荷分散されています。リモートユーザは、このレイテンシに敏感なアプリケーションを使用している間、ロード時間が遅いと不満を感じています。ユーザーエクスペリエンスを向上させ、コストを最小限に抑えながら、アプリケーションにほとんど変更を加えずに可用性の要件を満たすのは、次のうちどれでしょうか?

A. データベースをEC2のPostgreSQLデータベースに移行する。アプリケーション層とプレゼンテーション層をALBの後ろにある自動的にスケールするAmazon ECSコンテナへホストする。ユーザエクスペリエンスを改善するためにAmazon WorkSpacesをエンドユーザのワークスペースに割り当てる。

B. データベースをAmazon RDS Aurora PostgreSQL構成に移行する。アプリケーション層とプレゼンテーション層を、ALBの後ろにあるEC2インスタンス上のAuto Scaling構成でホストする。Amazon AppStream 2.0を使用してユーザーエクスペリエンスを向上させる。

C. データベースをAmazon RDS PostgreSQL Multi-AZ構成に移行します。アプリケーション層とプレゼンテーション層を、NLBの後ろにある自動的にスケールするAWS Fargateコンテナでホストします。Amazon ElastiCacheを使用してユーザーエクスペリエンスを向上させる。

D. 少なくとも2つのノードを持つAmazon Redshiftクラスタにデータベースを移行します。アプリケーションとプレゼンテーション層を、ALBの後ろにある自動的にスケールするAmazon ECSコンテナに結合してホストします。Amazon CloudFrontを使用してユーザーエクスペリエンスを向上させる。

問題4

あなたの会社では最近、データセンターをAWS上のVPCに拡張し、必要に応じてバーストコンピューティング機能を追加しています。 会社のネットワークオペレーションセンター(NOC)のメンバーは、必要に応じてAWSマネジメントコンソールにアクセスし、Amazon EC2インスタンスを管理する必要があります。NOCメンバーごとに新たにIAMユーザーを作成し、それらのユーザーにAWSマネジメントコンソールへの再ログインをさせたくありません。以下のオプションのうち、どれがNOCメンバーのニーズを満たすでしょうか?

A. OAuth 2.0を使用して一時的なAWSセキュリティ認証情報を取得し、NOCメンバーがAVVSマネジメントコンソールにサインインできるようにする。

B. Web Identity Federationを使用してAWSの一時的なセキュリティ認証情報を取得し、NOCメンバーがAWS Management Consoleにサインインできるようにします。

C. オンプレミスのSAML 2.0準拠のIDプロバイダ(IdP)を使用して、NOCメンバーにAWSシングルサインオン(SSO)エンドポイントを介してAWSマネジメントコンソールへのフェデレートアクセスを許可する。

D. オンプレミスのSAML 2.0準拠のIDプロバイダ(IdP)を使用して、一時的なセキュリティ認証情報を取得し、NOCメンバーがAWSマネジメントコンソールにサインインできるようにする。

問題5

ある組織では、スキャンした10TB相当のファイルを保存する要件があります。スキャンしたファイルを検索するための検索アプリケーションが必要です。以下のオプションのうち、どれがストレージと検索機能を実装するのに理想的ですか?

A. スキャンしたファイルを保存して使用するのに低冗長化クラスのS3を使う。商用検索アプリケーションをEC2インスタンスにインストールしてAuto ScalingとELBを設定する。

B. CloudFormationを使って環境をモデル化する。EC2インスタンスを使いApache Webサーバとオープンソースの検索アプリケーションを稼働させ、ストライピングした複数の標準EBSボリュームに検索インデックスとともにスキャンしたファイルを保存する。

C. スキャンしたファイルを保存して使用するのに標準クラスのS3を使う。クエリ処理のためにCloudSearchを使い、マルチAZ構成のElastic Beanstalkを使いWebサイトを構築する。

D. シングルAZのRDS MySQLインスタンスを使いスキャンしたファイルの検索インデックスを保存する。インデックスを使ったカスタムアプリケーションのためにEC2インスタンスを使用する。

問題6

新しいクライアントからAWSの運用を効率化してほしいとの依頼がありました。同社は急成長を遂げており、複数の異なるリージョンに多数のEC2インスタンスを保有しています。問題の一つとして、すべてのインスタンスのアップデートやパッチ適用、ポートの開閉などを行うのに非常に時間がかかることがわかっているとのことです。このプロセスを効率化するために、どのようなステップを踏むことができますか?

A. パッチやアップデートを適用したAMIを作成し、既存のインスタンスをサービスから外し、AMIから新しいインスタンスを作成する。

B. CloudFormationとAuto Scalingのローリングアップデートを使用する。

C. 各リージョンのインスタンスのリソースグループを作成する。Systems Managerを使用して、すべてのインスタンスに一度にパッチとアップデートを適用する。

D. 各リージョンのインスタンスのリソースグループを作成します。更新やパッチを適用する Pythonスクリプトを作成する。

問題7

ある企業では、多くの動的コンテンツを提供するWEBアプリケーションを運用しています。同社では、利用者がアプリケーションの使用時にレスポンス時間を短縮するためのキャッシングソリューションを導入したいと考えています。最適なソリューションはどれか、またその理由はどれか。以下の選択肢の中から正解を選びなさい。

A. DNSにRoute53を採用する。Route53は世界中にDNSサーバを持ち、DNSレイテンシを減らす最も近いリージョンへリクエストをルーティングする。

B. ElastiCacheクラスタを作成し、RDSの前に動的コンテンツをキャッシュするコードを書きます。これにより、動的コンテンツがキャッシュされるため、リクエストにかかる時間を短縮することができる。

C. CloudFrontディストリビューションを作成し、Query String Forwardingを有効に、TTLを0に設定する。これにより、CloudFrontからオリジンまでのTCPコネクションが開かれた状態が維持され、TCPハンドシェイクが発生するまでの時間が短縮される。

D. CloudFrontディストリビューションを作成し、Query String Forwardingを無効に、TTLを0に設定する。これにより、CloudFrontからオリジンまでのTCPコネクションが開かれた状態が維持され、TCPハンドシェイクが発生するまでの時間が短縮される。

問題8


ある企業は、市場分析するためのグリッド環境を構築するために、一部のワークロードをAWS上に移行することを決定しました。グリッドは、ジョブスケジューリング機能によって処理を実行する多数の同様のインスタンスで構成されます。大規模な分析ワークロードが完了するたびに、ジョブ スケジューラとグリッド ノードとともに新しい VPC が配置されます。複数のグリッドを並行して実行することもできます。主な要件は以下の通りです。
グリッドインスタンスは、処理するデータを取得するためにAmazon S3と通信する必要があります。グリッドインスタンスは、中間データを保管するためにAmazon DynamoDBと通信する必要があり、ジョブスケジューラは、新しいグリッドノードを開始するためにAmazon EC2 APIと通信する必要があります。重要な要件は、直接、またはオンプレミスのプロキシを経由してインターネットにアクセスできない環境であることです。ただし、アプリケーションがAmazon S3、Amazon DynamoDB、Amazon EC2 APIとシームレスに通信でき、新しいデプロイのたびに再設定しないようにする必要があります。この目標とするアーキテクチャを実現するために、ソリューションアーキテクトは次のうちどれを行うべきでしょうか?(2つ選びなさい)

A. Amazon S3とDynamoDB用にVPCエンドポイントを設定する
B. プライベートDNSの設定を無効にする
C. グリッドインスタンスのアプリケーションはS3のプライベートDNSのエンドポイントを使うように設定する
D. EC2用にインターフェス型のVPCエンドポイントを設定する

問題9

ある企業では、AWS上で動作するアプリケーションのバックアップソリューションのアーキテクチャを最終決定しています。すべてのアプリケーションはAWS上で実行され、各層で少なくとも2つのAZを使用しています。会社のポリシーでは、IT部門は、少なくとも本番環境とディザスタリカバリ(DR)の2つの場所にすべてのデータを毎晩のバックアップし、永続的に保存することを要件としています。これらの場所は、地理的に異なる場所にある必要があります。また、本番用データセンターではすぐに、ディザスタリカバリ用の場所では24時間以内にバックアップを復元できるようにする必要があります。すべてのバックアッププロセスは完全に自動化されていなければなりません。すべての要件を満たすもっともコストパフォーマンスの高いバックアップソリューションはどれでしょう?

A. 本番用リージョンのバックアップメディアサーバーに接続された大容量のAmazon EBSボリュームにすべてのデータをバックアップします。自動スクリプトを実行して毎晩これらのボリュームのスナップショットを取得し、これらのスナップショットをDR用リージョンにコピーします。

B. DR用リージョンのAmazon S3に全データをバックアップします。ライフサイクル ポリシーを使用して、このデータを直ちに本番用リージョンの Amazon Glacier に移動します。データのみが複製されるので、DR用リージョンの S3 バケットからデータを削除します。

C. 本番用リージョンのAmazon Glacierに全データをバックアップします。このデータを災害復旧リージョンのAmazon Glacierにクロスリージョンでレプリケーションするように設定します。ライフサイクルポリシーを設定して、60日以上前のデータを削除します。

D. 本番用リージョンのAmazon S3に全データをバックアップします。このS3バケットをDR用リージョンにクロスリージョンでレプリケーションし、DR用リージョンでライフサイクルポリシーを設定して、このデータを即座にAmazon Glacierに移動させます。

問題10

あなたは社員に社外秘の研修動画を配信するシステムを構築しております。が考えられますか?CloudFrontを使って、S3に保存したコンテンツは直接公開されないように配信するには、どのような方法が考えられますか?

A. CloudFront用のOAI(Origin Access Identity)を作成し、そのOAIにS3バケット内のオブジェクトへのアクセスを許可する。

B. CloudFrontのセキュリティグループ「amazon-cu/amazon-cf-sg」を適切なS3バケットポリシーに追加する。

C. CloudFront用のIAMユーザーを作成し、そのIAMユーザーにS3バケット内のオブジェクトへのアクセスを許可する。

D. CloudFrontのディストリビューションIDをPrincipal、ターゲットバケットをARNとするS3バケットポリシーを作成する。

問題11

あなたの会社では、何百万もの機密情報を含むトランザクションを何千もの100GBのファイルに保存していますが、これらのファイルは通信中と保管時に暗号化されている必要があります。並行して、アナリストはビジネス上の意思決定に使用するシミュレーションを生成するために、最大5TBのスペースを消費するファイルのサブセットを必要としています。長期保存や転送中のデータのサブセットにコスト効率よく対応できるAWSソリューションを設計する必要があります。

A. サーバサイド暗号化を設定したS3を使用し、EC2上のエフェメラルディスクのサブセットでシミュレーションを実行する

B. サーバサイド暗号化を設定したS3を使用し、EC2上のインメモリのサブセットでシミュレーションを実行する

C. EMRでHDFSを使用し、EC2上のエフェメラルディスクのサブセットでシミュレーションを実行する

D. EMRでHDFSを使用し、EC2上のインメモリのサブセットでシミュレーションを実行する

E. 暗号化されたEBSボリュームにフルデータセットを保存し、EC2にリストアできるスナップショットを定期的にキャプチャする。

問題12

写真共有および出版サービスを運営している会社は、毎日10,000〜150,000枚の画像を受け取ります。写真は複数のサプライヤーおよびサービスに登録しているユーザーから提供されます。この会社のインフラはAWSに移行中で、Amazon Rekognitionを使用してデータを追加することにより、既存のメタデータを充実させたいと考えています。以下に、メタデータの例を示します。
 有名人 - [個人の名前]
 衣類 - [色]
 見た目 - [幸せ、悲しい]
クラウド移行プログラムの一環として、同社は既存の画像データをAmazon S3にアップロードし、サプライヤーやユーザーは画像を直接AWSにアップロードするようにしました。これらの要件をサポートするには、ソリューションアーキテクチャは何をする必要がありますか?

A. S3のイベント通知に基づいてAWS Lambdaをトリガーし、Amazon Rekognitionを使って追加メタデータを作成する メタデータの格納にAmazon DynamoDBを使用し、インデックスの作成にAmazon ESを使用する。Webフロントエンドを利用してAmazon ESを使った検索機能を提供する。

B. S3イベントに基づいて、Amazon Kinesisを使用しデータをストリーミングする。Amazon EC2で動作するアプリケーションを使用して、画像からメタデータを抽出する。その後、データをAmazon DynamoDBとAmazon CloudSearchに保存し、インデックスを作成する。CloudSearchをバックエンドに備えたWEBを構築する。

C. S3のイベント通知に基づいてAmazon SQSキューを開始する。そして、SQSからメタデータ情報をDynamoDBに送信させる。EC2上のアプリケーションは、APIを使用してAmazon Rekognitionからデータを取得し、DynamoDBとAmazon ESにデータを追加します。Webを利用して、Amazon ESをバックエンドに備えた検索機能を提供する。

D. S3のイベント通知に基づいてAWS Lambdaをトリガーし、Amazon Rekognitionを使って追加メタデータを作成する。Amazon RDS MySQL Multi-AZにメタデータ情報を格納し、Lambdaを使用してインデックスを作成する。Lambdaによる検索機能を持つWebを構築する。

問題13

グローバルにコンテンツを配信するため、CloudFrontを活用したメディアサイトを運営していますね。未成年が閲覧できないようにブロックしなければならないコンテンツがあり、それをエッジで確実に行いたいと考えています。ユーザーの年齢はアプリケーションプロファイルに保存されており、開発者は、必要に応じてクッキーに追加することで、アーキテクチャの変更をサポートすることができると言っています。AWSの技術を使って、どのようにしてこれを実現するのでしょうか?

A. アプリケーションが生成したクッキー(ユーザーの年齢を含む)を通過させるようにCloudFrontを設定し、年齢が18歳未満の場合はアダルトコンテンツをブロックするようにエッジルーティングルールを定義する。

B. CloudFront ディストリビューション上のすべてのBehaviorsに信頼された署名者を追加します。アプリケーションが署名付き URL を生成するようにする。

C. WAF を使用し、アプリケーションとの直接通信を可能にするために websockets オプションを有効にします。その後、WebACLはユーザープロファイルフィールドに基づいてコンテンツをブロックすることができる。

D. ユーザーの年齢が18歳未満の場合、画像を表示しないようにアプリケーションを修正する。

問題14

IVR(Interactive Voice Response)システムの通話アクティビティを追跡するために、永続的で耐久性のあるストレージが必要です。通話時間はほとんどが2~3分で終わります。トレースされた各コールは、通話中(アクティブ)または終了したものがあります。外部アプリケーションは、現在アクティブなコールのリストを毎分知る必要があります。このアクティブなコールのリストは通常数コール/秒です。月に一度は数時間にわたり、1000コール/秒までの周期的なピークがあります。システムは24時間/週7日稼働しており、システム停止は許容されていません。過去のデータは定期的にファイルにアーカイブされます。コスト削減はこのプロジェクトの優先事項です。可能な限りコストを抑えながら、このシナリオに適したデータベースの実装はどうしますか?

A. マルチAZのRDSを使用し「Active Calls」、と「Terminated Calls」用の2つのテーブルを作成する。このようにし、「アクティブなコール」は常に小さく、効果的にアクセスすることができる。

B. DynamoDBを「Calls」テーブルと、アクティブな呼び出しにのみ存在する「IsActive」アトリビュートのグローバルセカンダリインデックスを使用する。この方法では、グローバルセカンダリインデックスがスパースで、より効果的である。

C. DynamoDBの「Calls」テーブルとグローバルセカンダリインデックスを 「State」アトリビュートの「active」または「terminated」に設定して使用する。このように、グローバルセカンダリインデックスをテーブル内のすべてのアイテムに使用することができます。

D. マルチAZのRDSを使用して「CALLS」テーブルを作成する。テーブルにはインデックス付きの「STATE」フィールドを持ち、「ACTIVE」または「TERMINATED」を検索することができる。このようにして、SQLクエリはインデックスの使用によって最適にアクセスができる。

問題15

ある企業では、オンプレミスのクラウドを利用したハイブリッド・クラウド・アーキテクチャを採用しています。データセンターとVPCを複数のAWS Direct Connectで接続し、ポートを単一のリンク・アグリゲーション・グループ(LAG)内に配置しています。オンプレミスには自動的に適用されるパッチ管理システムがあり、サーバやファイルシステムのオペレーティング・システムにパッチを適用します。あなたは、VPCのすべてのEC2インスタンスへ適用されるパッチのベースラインおよびパッチ適用のスケジュールをオンプレミスのものと同期させるタスクが与えられました。これらの要件を満たすため、以下の方法のうち、どれがもっとも少ない労力で実装できるでしょうか。

A. AWS Systems Manager Session Managerを使用して、オンプレミスデータセンターからのパッチベースラインに基づいてEC2インスタンスのセキュリティパッチを管理・展開する。AWS Systems Manager Maintenance Windowsを使用して、パッチ適用のスケジュールを自動化する。

B. AWS Systems Manager Patch Managerを使用して、オンプレミスデータセンターからのパッチベースラインに基づいてEC2インスタンスのセキュリティパッチを管理・展開します。AWS LambdaとAWS Systems Manager Run Commandを使ってスケジュールされたジョブを設定することで、パッチ適用のスケジュールを自動化する。

C. AWS Systems Manager State Managerを利用して、Amazon EC2やハイブリッドインフラを定義した状態に維持するプロセスを自動化し、各EC2インスタンスで適用すべきOSパッチも含めて自動化する。AWS Systems Manager Distributorを利用して、必要なパッチをパッケージ化してインスタンスに配布することで、パッチ適用スケジュールを自動化する。

D. AWS Systems Manager Patch Managerを使用して、オンプレミスデータセンターからのパッチベースラインに基づいてEC2インスタンスのセキュリティパッチを管理・展開する。すべてのインスタンスにSSMエージェントをインストールし、AWS Systems Manager Maintenance Windowsを利用してパッチ適用スケジュールを自動化する。

問題16

あなたの会社ではコスト削減施策に取り組んでおり、あなたは既存のいくつかのリソースを別のリージョンへマイグレーションするように言われています。最初に与えられたタスクは、アジア太平洋(シドニー)から米国西部(オレゴン)にAmazon Machine Imagesをすべてコピーすることです。その際に、AMIの PEM キーを移行する必要があるのか、またどのように移行するのかを検討する必要があります。AMIがリージョン間で移行されたときにPEMキーがどのように影響を受けるかについて、次のうち最も適切なものはどれでしょうか?正しい答えを選択してください。

A. PEM キーも認証キー(authorized key)もコピーされないため、新しいインスタンスを起動する際に新しいキーを作成する必要がある。

B. PEM キーは新しいリージョンにコピーされないが、認証キーは AMIのOS上に残っている。新しいAMIを起動する際には、同じPEMキー名で起動するようにする必要がある。

C. PEMキーもまたコピーされるが、古いリージョンで既にアクセスしたユーザーに対してのみ機能する。新しいユーザーがインスタンスにアクセスする必要がある場合は、新しいキーを生成する必要がある。

D. PEM キーもコピーされるので、新しいインスタンスを起動する以外には何もする必要はない。

問題17

あなたのチームはスマートホーム用のアプリケーションを開発しています。エンドユーザーは、ベビーモニター、ウェブカメラ、家庭用監視システムなど、あなたの会社のカメラ付き家庭用機器を使用することになります。動画はAWSへアップロードされます。ユーザーは、モバイルアプリケーションを介して、HTTPライブストリーミング(HLS)のフォーマットを使用してオンデマンドまたはライブビデオを再生することができます。このソリューションを設計するために使用すべきステップの組み合わせはどれですか?(2つ選択してください)

A. Kinesis Data Firehoseを作成して、ユーザーのホームデバイスからのライブ動画を取り込み、永続的に保存し、暗号化する。

B. Kinesis Video Streamsを作成して、カメラを搭載したホームデバイスからのビデオをキャプチャ、保存、インデックス化する。

C. Kinesis Data AnalyticsまたはEC2/Lambda上で作成したコードを使用して、ストリームデータをHLS対応データに変換する。そして、モバイルアプリケーションで、変換したHLSストリーミングデータを利用して、HLSプロトコルを利用して動画を表示する。

D. モバイルアプリケーションでは、HLS を使用して、HLSストリーミングセッションURLを使用して動画ストリームを表示する。

問題18

ソリューションアーキテクトは、Blue/Greenデプロイを使用してAWS Elastic Beanstalk内のアプリケーション環境を更新する必要があります。ソリューションアーキテクトは、既存のアプリケーション環境と同じ環境を作成し、新しい環境にアプリケーションをデプロイします。アップデートを完了させるために、次にやるべきことは何でしょうか?

A. Amazon Route53を使い、新しい環境へリダイレクトする
B. Swap Environment URLを選択する
C. Auto Scaling起動設定を修正する
D. DNSレコードをGreenの環境へ向けるように更新する

問題19

ある企業では、毎日10万のデバイス(ソース)から1,000万件のデータレコードを定常的に収集しています。これらのレコードはAmazon RDS MySQL DBに書き込まれます。クエリは、過去30日間のデータソースの1日平均を生成する必要があります。読み取り数は書き込み数の2倍です。収集したデータに対するクエリは、一度に1つのソースIDに対して行われます。ソリューションアーキテクトは、どのようにしてこのソリューションの信頼性と費用対効果を向上させることができますか?

A. マルチAZのAmazon Aurora MySQLを使用し、リードレプリカを追加する。

B. ソースIDをパーティションキーに、タイムスタンプをソートキーに持つAmazon DynamoDBを使用する。TTLを使用し30日後にデータを削除する。

C. ソースIDをパーティションキーに持つAmazon DynamoDBを使用する。日毎にテーブルを作成する。

D. 30日の間保管するようにし、Amazon Kinesisにデータを取り込む。AWS Lambdaを使用して、データレコードをAmazon ElastiCacheに書き込み、ここからデータを読み込む。

問題20

ある会社では、Amazon DynamoDBのテーブルに販売のトランザクションデータを格納しています。異常な動作を検知して迅速に対応するために、DynamoDBのテーブルに格納されている項目のすべての変更を30分以内にログに記録する必要があります。この要件を満たすためのソリューションはどれでしょうか?

A. DynamoDBのテーブルを1時間ごとにAmazon EMRのApache Hiveテーブルにコピーし、異常な挙動がないか分析する。異常行動を検知した際にAmazon SNSで通知を送信する。

B. AWS CloudTrailを利用して、DynamoDBのテーブルを変更するAPIをすべてキャプチャする。CloudTrailのイベントフィルタリングを利用して異常行動を検知した場合にSNS通知を送信する。

C. Amazon DynamoDB Streamsを使用して、更新情報をキャプチャしてAWS Lambdaに送信する。Amazon Kinesisのデータストリームにレコードを出力するLambda関数を作成します。Amazon Kinesis Data Analyticsであらゆる異常を分析する。異常な動作を検知した際にSNSで通知を送信する。

D. Amazon CloudWatch Eventsのイベントパターンを利用して、AWS Lambda関数をターゲットにDynamoDB APIコールイベントをキャプチャして挙動を分析する。異常動作を検知した際にSNSで通知を送信する。

問題21

ある企業は、規制やセキュリティに影響を受けやすい事業をAWSに移行する計画を立てています。セキュリティチームは、AWSのベストプラクティスと業界で認知されているコンプライアンス基準の採用を検証するためのフレームワークを開発しています。ソリューションアーキテクトは、ビジネス要件を満たし、AWSリソースの構成を継続的に評価、監査、監視するために、どのような戦略を使用すべきでしょうか?(2つ選択してください)

A. AWS Configルールを使用して、定期的にAWSリソースへの変更と設定内容のコンプライアンスを監視する。AWS Lambdaを使用してAWS Configのカスタムルールを開発し、テスト駆動型の開発アプローチを確立し、必要なコントロールに対する設定変更の評価をさらに自動化する。

B. Amazon CloudWatch Logsエージェントを使用して、AWS SDKのログをすべて収集する。変更系のAPIコールを自動で検知できる事前に定義されたフィルタパターンのセットを使用してログデータを検索する。意図しない変更が行われた場合にAmazon CloudWatchのアラームを使用して通知を送信する。batchのエクスポートを使用してAmazon S3にログデータをアーカイブし、その後Amazon Glacierにエクスポートすることで、長期的な保持と監査可能性を実現する。

C. AWS CloudTrailイベントを使用して、すべてのAWSアカウントの管理アクティビティを評価する。すべてのアカウントと利用可能なAWSサービスでCloudTrailが有効になっていることを確認する。CloudTrailを有効にし、AWS KMSキーでCloudTrailイベントログファイルを暗号化し、CloudWatch Logsで記録されたアクティビティを監視する。

D. リアルタイムに近いAmazon CloudWatch Eventsの機能を使用して、システムのイベントパターンを監視し、AWS Lambda関数をトリガーして、AWSリソースの承認されていない変更を自動的に戻すことができる。また、Amazon SNSのトピックをターゲットにして通知を可能にし、インシデント対応の応答速度を向上させる。

E. Amazon SNSとCloudTrailの連携を利用して、不正なAPIの活動を自動的に通知する。すべてのアカウントと利用可能なAWSサービスでCloudTrailが有効になっていることを確認する。AWSリソースの非承認変更を自動的に元に戻すためのLambda関数の使い方を評価する。

問題22

ある企業では、WebサイトをオンプレミスのデータセンターからAWSに移行したいと考えています。同時に、可用性とコスト効率を向上させるために、Webサイトをコンテナ化されたマイクロサービスベースのアーキテクチャに移行したいと考えています。同社のセキュリティポリシーでは、特権とネットワーク権限はベストプラクティスに従って、最小の特権を使用して設定する必要があるとしています。ソリューションアーキテクトは、セキュリティ要件を満たすコンテナ型アーキテクチャを作成し、そのアプリケーションをAmazon ECSクラスタにデプロイしなければなりません。この要件を満たすためにデプロイ後にどのようなステップが必要ですか?(2つ選択してください。)

A. bridgeネットワークモードを使ってタスクを作成する。
B. awsvpcネットワークモードを使ってタスクを作成する。
C. EC2インスタンスにセキュリティグループを適用し、EC2インスタンスが別のリソースへアクセスするためにIAMロールを使用する。
D. タスクにセキュリティグループを提供し、他のリソースにアクセスするために起動時にコンテナにIAM認証情報を渡す。
E. タスクにセキュリティグループを提供し、他のリソースにアクセスするためにタスク用のIAMロールを使用する。

問題23

ある企業ではサードパーティ製のSaaS製品を使いたいと考えております。そのSaaSアプリケーションは企業アカウント内で稼働しているEC2リソースを検出するために、いくつかのAPIコマンドを発行するアクセス権を持つ必要があります。この企業では社内セキュリティポリシーを持っており、外部からの環境へのアクセスはすべて最小権限のprincipleにする必要があり、SaaSベンダーが使用した資格情報が他の第三者に使用されないように管理されていなければなりません。これらの条件をすべて満たすのは次のうちどれでしょうか?

A. AWSマネジメントコンソールからSecurity Credentialsページに移動し、アカウントのアクセスキーとシークレットキーを取得する。

B. 企業アカウント内にIAMユーザーを作成し、SaaSアプリケーションが必要とするアクションのみを許可するユーザーポリシーをIAMユーザーに割り当てる。IAMユーザーの新しいアクセスキーとシークレットキーを作成し、これらのクレデンシャルをSaaSプロバイダーに提供する。

C. クロスアカウントアクセスのためのIAMロールを作成することで、SaaSプロバイダーのアカウントがロールを引き受けることができ、SaaSアプリケーションが必要とするアクションのみを許可するポリシーを割り当てることができる。

D. EC2インスタンス用のIAMロールを作成し、SaaSアプリケーションに必要なアクションのみを許可するポリシーを割り当てる。アプリケーションインスタンスを起動する際に使用するSaaSプロバイダーにロールのARNを提供します。

問題24

ある企業は、実行するAmazon EC2インスタンスは、情報セキュリティ部門が事前に承認したAMIから起動したものに限定したいと考えています。開発チームは、ソリューションによるアジャイルな継続的インテグレーションとデプロイメントプロセスを持っています。開発プロセスへの影響が最も少ない方法で、必要なコントロールを強制するのはどれでしょうか。(2つ選びなさい)

A. IAMポリシーを使用して、ユーザーやその他の自動化されたエンティティが、情報セキュリティ部門によって特定のタグをつけるなど、事前に承認されたAMIからEC2インスタンスを起動するようにする。

B. カスタム評価テンプレートを使用したAmazon Inspector内の定期的なスキャンを使用して、Amazon Inspectorエージェントが実行しているEC2インスタンスが、事前に承認されたAMIに基づいているかどうかを判断する。そうでない場合は、インスタンスをシャットダウンし、その旨を電子メールで情報セキュリティ部門に通知する。

C. 集中管理されたDevOpsチームでのみEC2インスタンスを起動することのみを許可し、内部のチケットシステムからの通知を介して作業パッケージを与えます。ユーザーはこのチケットシステムを使用してリソースへのリクエストを行いますが、EC2インスタンスが承認されたAMIからのみ起動されるようにするための手動の情報セキュリティ部門の承認ステップがある。

D. AWS Configルールを利用して、承認されていないAMIに基づくEC2インスタンスの起動を検知し、AWS Lambda関数をトリガーする。Lambdaでインスタンスを自動的に終了させ、Amazon SNSトピックにメッセージを発行し、情報セキュリティ部門に発生した事象を通知する。

E. スケジュールされたAWS Lambda機能を使用して、VPC内で稼働しているインスタンスのリストをスキャンし、その中に未承認のAMIに基づいているものがないかどうかを判断する。SNSのトピックにメッセージを発行して、情報セキュリティ部門にこの事象が発生したことを通知し、インスタンスをシャットダウンする。

問題25

監査人は、ある企業のAWS上のすべてのAPIイベントを記録したログへのアクセスを必要とします。監査人が必要とするのはログファイルへの読み取り専用のアクセスのみであり、各AWSアカウントへのアクセスは必要ありません。企業は複数のAWSアカウントを保有しており、監査人は全てのアカウントのログへのアクセスを必要としています。監査人がすべてのアカウントからイベントログを閲覧できるようにアクセスを設定するための最適な方法はどれか。以下の選択肢から正解を選択してください。

A. 各AWSアカウントにCloudTrailサービスを設定し、各アカウントのS3バケットにログを配信します。セカンダリのAWSアカウントで読み取り専用のロールを委任し1つのプライマリIAMユーザを介してバケットへの監査権限を付与します。

B. プライマリのAWSアカウントにCloudTrailサービスを設定し、すべてのセカンダリアカウントに一括請求を設定する。次に、CloudTrailのログファイルを受け取るS3バケットへのアクセスを監査人に許可する。

C. AWSアカウントごとにCloudTrailサービスを設定し、CloudTrail内でconsolidated loggingを有効にする。

D. 各AWSアカウントにCloudTrailサービスを設定し、プライマリアカウント内の単一のS3バケットにログを配信し、プライマリアカウント内の単一のバケットへのアクセス権を監査人に付与する。

問題26

あなたはAWSのVPCと複数のEC2インスタンスを設定し、10.0.2.1のIPアドレスのEC2インスタンスではMongoDBが稼働しています。インスタンスのフェイルオーバーと接続性を簡単にするために、mongodb.example.comというDNS名のRoute 53のAレコードを作製しました。オンプレミスからVPCにVPN接続し、オンプレミスのVMWare上のインスタンスからmongodb.example.comに接続しようとしていますが、DNSが解決しません。現在の設計を考えると、なぜオンプレミスで内部DNSレコードが解決しないのでしょうか?正しい答えを選択してください。

A. VPNはBGPダイナミックルーティングを使用するように設定されておらず、オンプレミスサブネットからVPCサブネットへのスタティックルートもMongoDBサーバーで設定されていない。

B. Route 53 の内部DNSレコードは、DNSのリクエストがVPC内から発信された場合にのみ機能する。

C. パブリックなRoute 53リソースレコードは、内部 DNS レコードではなくプライベートIPアドレスを使用して作成されたため。

D. オンプレミスの VM インスタンスには、Route53 内部 DNS サーバーを指す /etc/resolv.confレコードを設定する必要がある。

問題27

あるアジャイルチームがAWSを使い始めたばかりですが、チームリーダーは2週間以内にレガシーなJavaベースのソフトウェアをAWSプラットフォームに移行させたいと考えています。要件としては、新しい環境は可用性が高く、インフラストラクチャはコード化およびバージョン管理されている必要があります。また、チームはChefの経験が豊富なので、移行中にその知識を使いたいと考えています。要件を満たすために、チームはどのようなアクションを実行すべきでしょうか?(2つ選択してください)

A. VPC、NATゲートウェイ、踏み台サーバ、Route 53といったインフラをいくつかのCloudFormationテンプレートを使って構築する。それらをCodeCommitを使ってバージョン管理する。

B. CloudFormationはOpsWorksサービスをサポートしていないので、Chefを使ってEC2上のWEBサービスを構築します。既存のクックブックを利用することができる。適切なAuto Scaling設定でAuto Scalingグループを追加し、高可用性を確保する。

C. ネストしたCloudFormationテンプレートを使用して、OpsWorksスタックを作成する。リソースタイプは「AWS::OpsWorks::Stack」とする。スタックにJavaレイヤーを追加する。Scalingの設定がオンになっていることを確認する。

D. VPC、NATゲートウェイ、踏み台サーバ、セキュリティグループ、EC2インスタンスなどのインフラを設定するには、様々なCloudFormationテンプレートを使用する。GitHubを使ってバージョン管理する。

E. OpsWorksを使用してJavaのWebサービスを構築する。既存のクックブックを利用することができる。ただし、CloudFormationがサポートしていないため、OpsWorksをCloudFormationのテンプレートに入れることはできない。

問題28

ある企業ではAmazon API Gateway、AWS Lambda、Amazon DynamoDBを使ったサーバレスアプリケーションを構築したいと考えています。企業はPoC(概念実証)をデプロイしましたが、平均レスポンス時間はその上流システムが許容できるものではありませんでした。CloudWatchのメトリクスを確認したところDynamoDBについては、特に問題はありませんでしたが、いくつかのLambda Functionがタイムアウトしていることがわかりました。ソリューションアーキテクトがパフォーマンスを向上させるために検討すべきアクションは次のうちどれでしょうか。(2つ選んでください)

A. コンテナを再利用するようにAWS Lambda関数を作成し、不要な起動時間を回避する。

B. Lambdaの理想的なメモリとタイムアウトの設定を特定するためのパフォーマンステストを実行し、メモリ量を増やし、Lambda関数のタイムアウトを調整する。

C. CPUの量を増やし、Lambda 関数のタイムアウトを調整するパフォーマンステストを実行し、Lambda 関数の理想的なCPUとタイムアウトの設定を特定する。

D. MemcachedエンジンのElasticCacheクラスタを作成し、ElasticCacheクラスタにアクセスしてVPCと統合するためのLambda 関数を構成します。

問題29

あるグローバルなFX企業は、AWS SAMを使用して構築され、AWS Serverless Application Repository上でホストされているサーバーレスなFXアプリケーションを持っています。世界中に数百万人のユーザーがおり、24時間365日オンラインポータルを利用して通貨取引を行っています。しかし、最近、ユーザーがポータルにログインするのに数分かかるという苦情が多く寄せられており、まれにHTTP504エラーが発生することもあるといわれています。ソリューションアーキテクトとして、あなたはシステムを最適化し、ログイン時間を大幅に短縮して顧客の満足度を改善させる必要があります。最小限のコストでアプリケーションのパフォーマンスを向上させるために、次のうちどれを実装すべきでしょうか?(2つ選択してください)

A. アプリケーションを複数のAWSリージョンにデプロイして、世界中のユーザーに対応する。レイテンシベースルーティングポリシーを持つRoute 53レコードを設定して、受信トラフィックをユーザーに最適なレイテンシを提供するリージョンにルーティングする。

B. 複数のVPCを様々なAWSリージョンに地理的に分散して設定し、トランジットVPCを作成して全てのリソースを接続します。Lambda functionをAWS SAMを利用して各リージョンにデプロイすることで、リクエストをより速く処理できるようになる。

C. オリジンでCache-Control max-ageディレクティブをオブジェクトに追加する設定をし、max-ageに実用的な最長の値を指定することで、CloudFrontディストリビューションのキャッシュヒット率を向上させる。

D. Lambda@Edgeを利用することで、Lambda functionを利用してCloudFrontが配信するコンテンツをカスタマイズしたり、ユーザーにより近いAWSの拠点で認証処理を実行する。

E. 2つのオリジンを持つオリジングループを作成して、オリジンフェイルオーバーを設定します。1つをプライマリオリジン、もう1つをセカンダリオリジンとして指定し、プライマリオリジンが特定のHTTPステータスコードの失敗応答を返したときに、CloudFrontが自動的に切り替えるようにします。

問題30

開発チームが社内でサーバーレスアプリケーションとして新しいAPIをデプロイしています。このチームは現在、AWSマネジメントコンソールを使用して、Amazon API Gateway、AWS Lambda、Amazon DynamoDBリソースのプロビジョニングを行っています。ソリューションアーキテクトは、今後これらのサーバーレスアーキテクチャのデプロイを制御された方法で自動化したいと考えております。どのようにこれを実現するでしょうか?

A. CloudFormationを使用して、カスタムリソースのLambdaをバックエンドに持つAPI Gatewayのプロビジョニングを行う。AWS::DynamoDB::TableとAWS::Lambda::Functionリソースを使用して、DynamoDBのテーブルとLambda functionを作成する。CloudFormationテンプレートでデプロイを自動化するスクリプトを書く。

B. AWS Serverless Application Modelを使用してリソースを定義する。コードリポジトリにYAMLテンプレートとアプリケーションファイルをアップロードする。CodePipelineを使用してコードリポジトリに接続し、CodeBuildを使用してビルドするアクションを作成する。CodePipelineでCloudFormationをデプロイメントプロバイダに指定し、ソリューションをデプロイします。

C. CloudFormationを使用してサーバーレスアプリケーションを定義する。Lambda関数にバージョニングを実装し、バージョンを指すエイリアスを作成する。デプロイ時には、トラフィックを最新のバージョンに移行させるためのウェイトを設定し、トラフィックの移行に合わせて徐々にウェイトを更新していく。

D. アプリケーションのコードをCodeCommitのコードリポジトリにコミットする。CodePipelineを使用し、CodeCommitコードリポジトリに接続する。CodeBuildとCodeDeployを使用してLambda functionをビルドしてデプロイする。CodeDeployでデプロイのプリファレンスタイプを指定して、トラフィックを徐々に新しいバージョンに移行させます。

問題1回答

ECSとALBの組み合わせでコンテナ化した複数のアプリケーションを1つのホストに載せることができます。これによりEC2インスタンス数を減らすことができるようになります。ECSとALBでは以下の機能があります。

・ALBでは動的ポートマッピングにより、ECSのタスク(コンテナ)の実行時に開いているホストの空いているポートへ動的に割り当てることができます。
・ALBのパスベースルーティングでは、URLのパスに応じてコンテナへ振り分けることが可能です。

A、B、D:これらは、アプリケーション毎にEC2インスタンスが必要になるため、103個のインスタンスを消費します。Elastc BeanstalkについてはALBをつけることでECSとALBの組み合わせのようにEC2インスタンスの数をへらすことができるようになります。

回答:C

問題2回答

KMSではデータの暗号化と復号をするための鍵を管理するサービスです。KMSはS3と統合されたサービスのため、S3の暗号化オプションによりデータのアップロードや取得するときにKMSの鍵を使って自動で暗号化・復号することができます。S3の暗号化オプションでは以下の3つの方法があります。

・SSE-S3:S3側で管理される鍵を使いサーバサイドで暗号化される
・SSE-KMS:利用者がKMSで管理する鍵(CMK)を使いサーバサイドで暗号化される
・SSE-C:利用者が提供した鍵を使いサーバサイドで暗号化される、鍵の管理はAWSでは行わない

OAIを設定することでS3バケットへはCloudFront経由でないとアクセスできないようにすることができます。これによりS3へ直接アクセスできなくなり、想定外の公開を防ぐことができます。

A:CloudHSMはFIPS 140-2というアメリカ連邦標準規格に準拠した暗号鍵管理サービスです。CloudHSMでは暗号鍵を専用のハードウェアで管理されます。ここではCloudHSMを使うだけの要件がないのでコストに見合いません。
B:データの暗号化だけでなく、S3バケットのコンテンツをアップロード直後に公開してしまうということを防ぐ必要があります。
D:CloudFrontでは鍵を管理することができません。

回答:C

問題3回答

RDS Aurora PostgreSQL、ALBとAuto Scalingの組み合わせでSLA 99.95%を満たすことができるでしょう。Amazon AppStream 2.0はデスクトップアプリケーションをブラウザ経由でPCなどにストリーミングすることができるサービスです。これによりユーザエクスペリエンス(UX)を改善できます。

A:EC2上のPostgreSQLは高可用性な構成ではありません。Amazon Workspacesは仮想デスクトップサービス(VDI)です。これによってUXを改善することはできますが、比較的コストがかかります。
C:ElastiCacheはDBの読み込みについてのUXを改善することはできますが、デスクトップアプリケーション全体としては不十分です。
D:RedshiftはDWHサービスですので、このアプリケーションのマイグレーションでは不適切です。

回答:B

問題4回答

外部で認証されたユーザーに対し、AWSのアクセスを許可することをIDフェデレーションといいます。オンプレミスのSAML2.0に準拠したIdP(IDプロバイダ)を使い、フェデレーションするシナリオでは、AWS APIアクセスとAWSマネジメントコンソールアクセスがあります。マネジメントコンソールにアクセスするにはAWS SSO エンドポイントを使用します(C)。
図については以下URLをご参照ください。

参考URL:SAML 2.0 フェデレーティッドユーザーが AWS マネジメントコンソールにアクセス可能にする

フェデレーション系の問題は頻出なので、Webベースのフェデレーションや、オンプレミス側のIDストアがSAML2.0に準拠していない場合のカスタムIDブローカーアプリケーションを作成するシナリオも確認しておくとよいです。

A、B:これらはモバイルやWebアプリケーションのシナリオで使われるものになります。
D:マネジメントコンソールにログインするためには、一時的な認証情報ではなく、IdPによって透過的に処理されなければいけません。

回答:C

問題5回答

この問題ではファイルの保存先、検索アプリケーション、ホスト先として適切なものを検討します。CloudSearchはウェブサイトやアプリケーションに使うことができるフルマネージドの検索サービスです。また、ファイルの保存先として標準クラスのS3に配置することができます。これらとElastic Beanstalkをホスト先とした組み合わせが正解です。

A:低冗長化クラスのS3は不適切です。また、商用検索アプリケーションはコスト効率が悪い可能性があります。
B:EBSに検索インデックスを作成するのはコスト効率が悪いです。
D:RDSに検索インデックスを作成するのはコスト効率が悪いです。また、カスタムアプリケーションは開発に時間とコストが発生するので不適切です。

回答:C

問題6回答

Systems ManagerのPatch Managerを使ってパッチ適用を自動化することができます。これにより運用を効率化することができます。

Patch Managerでは、パッチベースラインパッチ適用の設定があります。

パッチベースラインはOSの種類ごとにあり、どの重要度(Critical、Importantなど)のパッチをパッチのリリースから何日後に適用するか、というルールを決めます。また、パッチベースラインではそのパッチベースラインに紐づくパッチグループを設定することもできます。インスタンスに「Patch Group」というタグをつけることで、パッチグループとインスタンスを紐づけることができます。

パッチ適用の設定はスケジュールと対象のインスタンスを決めます。対象のインスタンスはインスタンスにつけたタグやパッチグループを選択することができます。タグの場合は、タグが付いたインスタンスのOSの種類に従い、そのOS用のパッチベースラインが適用され、パッチグループの場合には、パッチグループに紐づいたパッチベースラインが適用されます。

A:この作業は手間のかかる作業なので、運用を効率化することはできません。
B:CloudFormationとAuto Scalingのローリングアップデートは、アプリケーションのデプロイに使用します。
D:Pythonスクリプトを作成するのは手間がかかる作業になります。

回答:C

問題7回答

動的コンテンツでも一定期間共通のものを使いたい場合に、Query String (URLのパラメータ)を使ってコンテンツをキャッシュすることができます。また、特定のオリジンのTTLを0に設定しても、CloudFront(ディストリビューション)はそのオリジンのコンテンツをキャッシュします。CloudFrontはIf-Modified-Sinceヘッダを付けてGETリクエストを行い、オリジンで変更がなければ、CloudFrontはキャッシュされたコンテンツを使い続けるように動作します。

A:マルチリージョンのアプリケーションにおいて、Route 53を使用しレイテンシが低いロケーションへアクセスさせることでレスポンス時間を減らすことはできますが、要件のキャッシングソリューションではないので不適切です。
B:ElastiCacheを使うことで何度も実行されるクエリをキャッシングし、DBから情報を取得する際のレイテンシを改善することができます。しかし、ここではWEBサーバの前段でキャッシングするソリューションが問われています。
D:動的コンテンツのキャッシングはQuery Stringを使用すべきでしょう。

参考URL:クエリ文字列パラメータに基づくコンテンツのキャッシュ
Amazon CloudFrontを利用したサイト高速化とセキュア配信

回答:C

問題8回答

全体的な構成がつかみにくい設問ですが、インターネットを経由せずにS3、DynamoDB、EC2へアクセスできることが要件として記載されています。インターナル接続で、EC2へアクセスするにはインターフェース型のVPCエンドポイント、S3とDynamoDBへはゲートウェイ型のVPCエンドポイントを使います。

回答:A、D

問題9回答

本番用リージョンでS3にバックアップを取得し、それをDR用リージョンのGlacierに保管するのが、要件に見合った対応内容ですので、Dが正解です。

A:EBSにバックアップを取得するのはコストパフォーマンスがよくありません。また、信頼性の面でも適切ではありません。
B:本番用リージョンではすぐに、DR用リージョンは24時間以内にデータを復旧できるようにする要件があるので不適切です。
C:GlacierからGlacierへのクロスリージョンレプリケーションは可能ですが、本番用リージョンではすぐに復旧できるようにする必要があるので、Glacierにバックアップを取得するとこの要件が満たせません。

回答:D

問題10回答

S3バケットのコンテンツをCloudFrontから配信するときに、直接バケットを参照できないようにするときにはOAI(Origin Access Identity)を使用します。

Amazon S3 バケットから配信するコンテンツへのアクセスを制限するには、次のステップに従います。

1.オリジンアクセスアイデンティティ (OAI) と呼ばれる特別な CloudFront ユーザーを作成し、ディストリビューションに関連付けます。

2.CloudFront が OAI を使用してバケット内のファイルにアクセスし、ユーザーに提供できるように S3 バケットのアクセス許可を設定します。ユーザーが S3 バケットへのダイレクト URL を使用して、そこにあるファイルにアクセスできないようにしてください。

これらのステップを実行すると、ユーザーは S3 バケットから直接ではなく、CloudFront 経由でのみファイルにアクセスできます。

参考URL:OAIを使用してS3コンテンツへのアクセスを制限する

回答:A

問題11回答

S3では、サーバサイド暗号化により保管データを暗号化することができ、また、HTTPSやクライアントサイド暗号化で転送中のデータも暗号化することができます。
エフェメラルディスクとはインスタンスストアのことです。インスタンスストアは安価で使用することができる反面、EC2インスタンスを停止や削除によってインスタンスストアの内容は失われます。また、ディスクサイズはインスタンスタイプによって決まります。よって、この問題のような用途に向いています。

B:コスト効率よく5TBのデータを使いシミュレーションするにはインメモリは不向きです。
C、D:このデータを保管するのに必要なHDFSはコスト効果が悪いです。
E:EBSは長期保管には向いていますが、コストがかかるため不適切です。

参考URL:Amazon EC2 インスタンスストア

回答:A

問題12回答

S3に画像が格納されたタイミングのイベント通知でLambdaをトリガーしRekognitionでメタデータを作成することができます。メタデータはDynamoDBに格納しElasticSearchでインデックスを作成し、検索機能を提供することができます。正解はAです。

B:S3のイベントは、オブジェクトが生成された、オブジェクトが削除された、といったタイミングで発生するので、Kinesisでストリーミングデータを受けることはできません。
C:S3は直接SQSと統合されていないので、S3のイベント通知をLambdaなどで受けてSQSにキューイングする必要があります。同様にキューを直接DynamoDBへ格納できないので、Lambdaなどで処理する必要があります。また、S3に格納した画像データをRekgnitionでメタデータを作成するプロセスが不明瞭なので不適切です。
D:実現可能なアーキテクチャではありますが、インデックスの作成やWebによる検索機能の提供はLambdaでやるよりもElasticSearchを使うべきでしょう。

SAPの試験でAI系のサービスではRekognitionが比較的多く出題されるように感じられます。また、他のサービス(Polly、Lexなど)も選択肢に出てくることがあります。サービスの細かい点が問われることはないですがサービスの概要は押さえておくべきでしょう。

参考URL:Black Belt Amazon AI Service

回答:A

問題13回答

特定の人にのみS3にあるコンテンツを参照できるように、署名付きURLを発行してアクセス制御を行います。署名付きURLは、CloudFrontのBehaviorsで「Trusted signer(信頼された署名者)」の設定をしたのちに発行することができます。なお、「信頼された署名者」はAWSアカウントになり、AWSアカウントでパブリックキーとプライベートキーを作成し、これを使いURLやCookieを署名することで、CloudFrontはURL、Cookieが改ざんされていないことを確認します。
CloudFrontは設定できる内容が多岐に渡るため実際に触ってみるのがよいですね。クラメソさんのブログが非常にわかりやすかったので参考URLにしておきます。

参考URL:
 署名付き URL と署名付き Cookieの作成が可能な AWS アカウントの指定
 CloudFront+S3で署名付きURLでプライベートコンテンツを配信する

A:CloudFrontにはこのような機能はありません。
C:WAFにはこのような機能はありません。
D:画像へのアクセス制御はエッジで行う必要があるので不適切です。

回答:B

問題14回答

月に一度のスパイクが発生するということで、スケーラビリティと弾力性のあるDynamoDBが適しています。アクティブなコールのみを効率よくクエリするために、アクティブな項目(item)のみにアトリビュートをもたせこれをグローバルセカンダリインデックスにします。すべての項目が「IsActive」アトリビュートを持っているわけではない(スパース)ので効果的にクエリすることができ、コスト効果もよいです。
実際に設計~運用などをやってみない方は(私もない・・・)DynamoDBの特徴やキー・インデックスについてなかなかイメージしづらいかもしれませんので、参考URLを読んでみてください。

参考URL:スパースなインデックスの利用
 パーティションとデータ分散
 DynamoDB のグローバルセカンダリインデックスの使用

A、D:このシステムは月に数時間のスパイクが発生します。RDSはこの負荷に応じた弾力性がないため、ピークに合わせてリソースを用意する必要がありコストが高くなるため不適切です。
C:すべてのコールは「ACTIVE」か「TERMINATED」のため、すべての項目に「state」アトリビュートを持たせる必要があります。これはBと比べコスト効率がよくないです。

回答:B

問題15回答

AWS Systems Manager Patch Managerでは主にセキュリティ関連のパッチの適用をOSごとに自動化することができます。オンプレミスのサーバでもSSMエージェントをインストールすることでパッチを適用することができます。また、Systems Manager Maintenance Windowsでパッチ適用のスケジュールを設定することができます。よって正解はDです。
「AWS 認定ソリューションアーキテクトプロフェッショナル問題集1」でも説明させていただきましたが、Patch Managerの、パッチベースラインパッチ適用の設定について説明します。

パッチベースラインはOSの種類ごとにあり、どの重要度(Critical、Importantなど)のパッチをパッチのリリースから何日後に適用するか、というルールを決めます。また、パッチベースラインではそのパッチベースラインに紐づくパッチグループを設定することもできます。インスタンスに「Patch Group」というタグキーのタグをつけることで、パッチグループとインスタンスを紐づけることができます。
パッチ適用の設定はスケジュールと対象のインスタンスを決めます。対象のインスタンスはインスタンスにつけたタグやパッチグループを選択することができます。タグの場合は、タグが付いたインスタンスのOSの種類に従い、そのOS用のパッチベースラインが適用され、パッチグループの場合には、パッチグループに紐づいたパッチベースラインが適用されます。

なお、設問にはLAGについて記載されていますが、こちらはDirect Connectで使われるConnectionを集約する技術です。問題で問われる内容には一切関係のないダミーになりますが、概要を知っておくと惑わされることもなくなります。参考URLをご参照ください。

参考URL:Black Belt Direct Connect

A:Session Managerは、主にインスタンスへのアクセス制御、厳格なセキュリティ対策、インスタンスアクセスの詳細を含む完全に監査可能なログを必要とする企業ポリシーに準拠するために使用されますが、OSパッチの適用には使用されていないため、間違っています。
B:Patch Managerのパッチ適用にLambdaやRun Commandは使用しません。
C:AWS Systems Manager ステートマネージャは、主にセキュアでスケーラブルな構成管理サービスとして利用されており、Amazon EC2やハイブリッドインフラストラクチャを定義した状態に保つプロセスを自動化ので、間違っています。

回答:D

問題16回答

この問題では、EC2インスタンス(Linux)のログインに使われるキーペアについて問われています。パブリックキーはAWSで管理されますが、プライベートキーは自分で管理する必要があります。また、パブリックキーはリージョン間でコピーも同期もできません。パブリックキーはインスタンスの「~/.ssh/authorized_keys」に保存されており、AMIを別リージョンにコピーしたらこのキーも残っているため、新しいリージョンでは同じキーペア名で起動する必要があります。新しいリージョンでは、インスタンスに保存されているパブリックキーや自分で管理しているプライベートキーから生成し、インポートします。よって正解はBです。
なお、WindowsについてはAdministratorの暗号化した初期パスワードをAWSで管理しており、AWSマネージメントコンソール上でプライベートキーを使いAdministratorのパスワードを復号することができますが、パスワードを変更していると復号化したパスワードを使ってログインすることができません。

参考URL:新しいリージョンへの AWS リソースの移行

回答:B

問題17回答

Kinesis Video Streams は、動画のストリーミング、保存に使用することができ、これらの動画は API を使用してアクセスすることができます。HLSを使ったストリーミングも可能です。

Amazon Kinesis Video Streams を使用すると、分析、機械学習 (ML)、再生、およびその他の処理のために、接続されたデバイスから AWS へ動画を簡単かつ安全にストリーミングできるようになります。Kinesis Video Streams は、数百万ものデバイスからの動画のストリーミングデータを取り込むために必要なすべてのインフラストラクチャを、自動的にプロビジョンして、伸縮自在にスケールします。ストリーム内の動画データの耐久性に優れた保存、暗号化、インデックス作成を行い、使い勝手のよい API を介したデータへのアクセスも可能にします。Kinesis Video Streams を使用すると、ライブやオンデマンド視聴用の動画を再生したり、Amazon Rekognition Video との統合、および Apache MxNet、TensorFlow、OpenCV といった ML フレームワーク向けライブラリとの統合により、コンピュータビジョンと動画分析を活用するアプリケーションを迅速に構築することができます。また、Kinesis Video Streams がサポートするオープンソースプロジェクトの WebRTC は、リアルタイムのメディアストリーミング、ウェブブラウザ間のインタラクション、モバイルアプリケーション、シンプルな API によるコネクテッドデバイスを可能にします。 用途としては、ビデオチャットやピアツーピアのメディアストリーミングが一般的です。

参考URL:Amazon Kinesis Video Streams

A:Kinesis Data Firehoseはビデオストリーミングではなく、ストリーミングデータの配信に使われるので不適切です。
C:Kinesis Video StreamでHLSへ変換できるため、この選択肢は不適切です。

回答:B、D

問題18回答

Blue/Greenデプロイとは、稼働している環境とまったく同じ構成の環境を用意し、新しい資源を配置します。新しい資源のテスト・動作確認を実施後、リクエストの向き先をこの新しい資源が配置されている環境へ変えることで新しい資源を公開するデプロイ手法です(クラウドでは古い資源が搭載された環境は削除します)。
Elastic Beanstalkでは「環境URLのSwap」という機能を使い、Elastic BeanstalkのエンドポイントURLの向き先をBlueからGreenに切り替えることが可能です。
デプロイパターンについては、Elastic BeanstalkのBlack Beltに図解(P.31~)されておりますので、こちらもご確認いただければと思います。

参考URL:Black Belt Elastic Beanstalk
 Elastic Beanstalk を使用した Blue/Green デプロイ

A:Route 53のAliasレコードを書き換えることでBlue/Greenデプロイを実施することもできますが、Elastic Beanstalkのマネージドな手法のほうが安全だと思われます。

回答:B

問題19回答

ソースIDとタイムスタンプを複合キーとしてテーブルを作成することで、クエリの高速化に役立ちます。また、データを永続化する必要があるとは書いていないので、TTLを設定することで30日以上のデータが自動的に削除されるようにすることができます。このように、DynamoDBを使い過去30日間のデータのクエリに関して費用対効果の高いソリューションを提供することができるので、正解はBです。
DynamoDB TTLの説明は以下のとおりです。

Amazon DynamoDB 有効期限 (TTL) では、アイテムごとのタイムスタンプを定義して、アイテムが不要になった時期を決定できます。指定されたタイムスタンプの日付と時刻の直後に、DynamoDB は書き込みスループットを消費することなく、テーブルから項目を削除します。TTL は、ワークロードのニーズに合わせて最新の状態に保たれている項目のみを保持することで、保存されたデータボリュームを削減する手段として、追加料金なしで提供されます。

参考URL:Expiring Items By Using DynamoDB 有効期限 (TTL)

A:Auroraで実現はできますが、コスト効果がよくありません。
C:日毎にテーブルを作成すると、集計するのに30テーブルにアクセスする必要があるため非常に効率が悪いです。また、データの削除の言及もありません。
D:Kinesisはデータの最大保管期間は7日までです。

問題20回答

DynamoDB Streamsはitemの追加や変更、削除をリアルタイムストリームとして提供が可能です。このストリームをKinesisやKinesis Data Analyticsに連携して異常検知を行い、SNSで通知を行うことができます。

A:このアーキテクチャで異常な挙動がないかの分析はできるかもしれませんが、30分以内にすべての変更をロギングできていません。
B:CloudTrailでDynamoDBのAPIをキャプチャすることはできますが、DynamoDBのデータは追跡することができません。
D:CloudWatch Eventsではデータの変更はキャプチャできません。

回答:C

問題21回答

AWS Configを使うと継続的にAWSの設定のモニタリングや変更の記録をすることができます。また、Configのコンプライアンス・ステータスが変わるときのイベントをCloudWatch Eventsでフックし非承認な設定変更をもとに戻すLambdaを実行したり、SNSで通知を出すことができます。

B:CloudWatch LogsエージェントはEC2インスタンスのログをCloudWatch Logsに送信するソフトウェアです。AWSリソースの評価、監査、監視には使えません。
C:CloudTrailはイベントを発生させることができないため、不適切です。
E:CloudTrail自体には非承認変更を検知する機能はないため、不適切です。

回答:A、D

問題22回答

awsvpcネットワークモードでは、タスクごとにENIを直接アタッチできます。そのため、セキュリティグループもタスクごとに設定することができ、設問にあるネットワーク権限の最小化を満たすことができます。なお、コンテナ実行基盤がFargateの場合にはawsvpcしか選択できません。
他のAWSリソースにアクセスするために、タスクにIAMロールをアタッチするのがベストプラクティスになります(EC2インスタンスにIAMロールをアタッチするのと同じですね)。

画像2

A:bridgeモードではよりよいアクセス制御を行うことができません。
C:IAMロールとSGをタスクに関連付けられていないので不適切です。
D:IAMの認証情報を使うのはベストプラクティスではありません。

回答:B、E

問題23回答

IAMロールを使いクロスアカウントアクセスをすることで、最小権限でSaaSアプリケーションによるアクセスにすることができます。

参考URL:ロールを使用したアクセス許可の委任

A、B:クレデンシャル(アクセスキーとシークレットキー)を使ったアクセス権限の制御はベストプラクティスではありません。クレデンシャルの漏洩により第三者によって使用されてしまうリスクがあります。
D:EC2用のIAMロールはEC2によってのみ引き受けられるので不適切です。

回答:C

問題24回答

タグをつけた事前承認されたAMIからしかインスタンスを起動できないようにIAMポリシーで制御することができます(A)。また、AWS Configでは起動したAMIが事前承認されたものかどうかをチェックするマネージドルールがあります。このルールの発動に伴い通知やLambdaをトリガーしインスタンスの終了を行うことができます(D)。

B:Amazon InspectorはEC2インスタンスに対する外部への公開範囲、脆弱性を自動でチェックするサービスです。AMIが事前に承認されたものかどうかをチェックすることはできません。
C:すべてのリクエストをDevOpsチーム経由にすると、デプロイメントプロセスに影響が出ることが予想されます。
E:Lambdaを使ったやり方でも実現可能だと思われますが、AWS Configのマネージドルールを使えばLambdaの実装をする必要がありません。

回答:A、D

問題25回答

企業が複数のAWSアカウントを持っており、その企業の監査人がどうやって各AWSアカウントのAPIイベントを監査するかという問題です。
複数の AWS アカウントのログファイルを 1 つの Amazon S3 バケットに配信するように CloudTrail を設定することができます。一元管理することで監査人のアクセス権限管理を容易にすることができます。

A:この設定でも実現可能ですが、設定や監査作業が煩雑になり、適切ではありません。
B:一括請求の設定では一切アクセス権限の付与はされないので不適切です。
C:CloudTrailにはconsolidated logging(ログ連結?)のような機能はありません(consolidated billingでOrganizationの一括請求ですね)。

回答:D

問題26回答

Route 53プライベートホストゾーンではVPC内からのクエリのみ名前解決します。
なお、オンプレミスネットワークから解決するにはRoute 53 Resolverを設定し、オンプレミス側のDNSからフォワードするようにします。

参考URL:VPC とネットワークの間における DNS クエリの解決

回答:B

問題27回答

CloudFormationではテンプレートを使って各AWSリソースをコード化することができます(Infrastructure As Code)。コードをCodeCommitで管理すればバージョン管理することができます(A)。
OpsWorksではChefのcockbooksやrecipesを再利用しアプリケーションのデプロイに使うことができます。また、CloudFormationでOpsWorksスタックを定義し、Auto Scaling構成にすることで高可用性にすることができます(C)。

B、E:CloudFormationでOpsWorksをサポートしているため誤りです。
D:Aと迷うところですが、EC2インスタンスはOpsWorksで設定すべきですのでDは不適切です。

回答:A、C

問題28回答

コンテナを再利用する前提で関数を書くことで、初期化時間を短縮し、パフォーマンスを向上させることができます(A)。例えば、DB接続についてシングルトン(DB接続を接続のたびに毎回作成するのではなく、既存のものがあればそれを使い回すようにコーディングする方法)を作成しておくことで既存のセッションを利用できる可能性があります。

関数のハンドラーメソッドの外部で宣言されたオブジェクトは、初期化されたままとなり、関数が再度呼び出されると追加の最適化を提供します。たとえば、Lambda 関数がデータベース接続を確立する場合、連続した呼び出しでは接続を再確立する代わりに元の接続が使用されます。接続を作成する前に接続が存在するかどうかを確認するロジックをコードに追加することをお勧めします。

参考URL:AWS Lambda 実行コンテキスト
 AWS Lambda 関数を使用する際のベストプラクティス

また、Lambdaは関数に割り当てたメモリに比例してCPUを割り当てます。そのため、メモリを多く割り当てて関数を高速に実行することで、コストを削減できる可能性があります。実行時間とメモリの割り当てをパフォーマンステストで計測し、コスト効果が一番よいところがどこにあるのかを判断しチューニングします(B)。

C:CPUは明示的に設定できないので、メモリで調整する必要があります。
D:DynamoDBにはボトルネックがないのでElastiCacheを作成する必要はありません。

回答:A、B

問題29回答

この設問では、アプリケーションの中で、ログインに時間がかかっていることと、時々HTTPエラーを返すことがあると記載があります。CloudFrontのオリジンフェイルオーバーはオリジンがHTTPステータスが504などを返したときに、セカンダリオリジンへリクエストをルーティングすることができる機能です。ログイン時間の短縮にはなりませんが、エラーを返却してしまう可能性を大きく下げることができます(E)。Lambda@Edgeを使うことで下図のように利用者に近い地域のCloudFrontディストリビューション前後でLambda functionを実行することができます。ビューワーリクエストをトリガーとした認証用のLambda functionを実装すればパフォーマンスを向上させることができます。

画像1

A:この方法でアプリケーション全体のパフォーマンスが改善するかもしれませんが、アプリケーションを複数のリージョンにデプロイしなくてはいけないため、実装コストが大きくなります。最小限のコストで問題を解決する必要があるため不適切です。
B:トランジットVPCで複数のVPCを様々な地域にまたがって設定することはパフォーマンス面で有効ではありますが、セットアップやメンテナンスのコストが高くなります。
C:キャッシュヒット率を向上させてもログイン時間の改善にはつながらないので不適切です。

回答:D

問題30回答

CodeDeployを使用することでLambda関数を制御されたCanaryリリースデプロイすることができます。例えば、トラフィックの10%を新しいバージョンのアプリケーションに移行し、30分経過後すべてのトラフィックを新しいアプリケーションに移行させることができます。また、この間、あらかじめ設定しておいたアプリケーションのテストに失敗したり、CloudWatchアラームがトリガーされるとロールバックするように制御することもできます。

参考URL:サーバーレスアプリケーションを段階的にデプロイする
(怪しい日本語です、、)

A:サーバレスアプリケーションのデプロイの自動化が要件にあるため、不適切です。
B:CloudFormationとSAMでサーバレスアプリケーションの定義はできますが、「制御されたデプロイ」について検討する必要があります。
C:Lambdaではエイリアスに2つの関数のバージョンを指定し、各トラフィックをルーティングする割合を設定することができますが、段階的なデプロイはサポートされていません。

回答:D

この記事が気に入ったらサポートをしてみませんか?