IT・ビジネススキル・人材育成の情報を掲載 | 人材育成のトレノケート【公式ブログ】

【徹底解説】AWS 認定ソリューションアーキテクト - アソシエイト資格のサンプル問題を解いてみよう

こんにちはラーニングサービス本部 テクニカルトレーニング第1部でAWS認定トレーニングコースを担当しております山下です。

最近は来月2019年4月19日に発売の書籍「AWS認定試験対策 AWS クラウドプラクティショナー(外部リンク)」の最終校正が完了し、一息つきましたところです。

さて、今回は2018年2月に更新された「AWS 認定ソリューションアーキテクト - アソシエイト」SAA-C01試験のサンプル問題の解説を書いてみました。
※情報は2019年3月24日時点のものです。

SAA-C01試験は合格スコアが1000が満点のうち720です。私はスコア954で合格しております。それをエビデンスとして読んでいただけましたら幸いです。

 

「AWS 認定ソリューションアーキテクト - アソシエイト」とは

AWS認定のアソシエイトレベルには、役割別に3つの試験があります。オペレーションや管理を担当する方向けの「SysOpsアドミニストレーター」、開発担当者向けの「デベロッパー」、そしてこの「ソリューションアーキテクト」は、設計や提案をされる方向けの認定です。AWS上で要件や課題に基づいてベストプラクティスに沿った設計構築を行えることを証明できます。

たびたび「人気の認定資格」や「稼げる認定資格」として取り上げられている認定資格です。

2018年2月に試験問題の改訂と試験時間・問題数など、制度の変更が行われました。これから受験を予定している方は、試験の概要を見直しておきましょう。

 

受験者に推奨されるスキルや経験

  • AWS 上で可用性、優れたコスト効率、耐障害性を備え、スケーラブルな分散システムを設計した 1 年間の実務経験
  • AWS のコンピューティング、ネットワーキング、ストレージ、データベースサービスの実践的な使用経験
  • AWS のデプロイおよび管理サービスに関する実践経験
  • AWS ベースのアプリケーションに関する技術的要件を特定、定義する能力
  • 提示された技術的要件を満たす AWS のサービスを特定する能力
  • AWS プラットフォームで安全性と信頼性の高いアプリケーションを構築するために推奨されるベストプラクティスに関する知識
  • AWS クラウドでのソリューション構築における基本的なアーキテクチャの原則に関する理解
  • AWS のグローバルインフラストラクチャに関する理解
  • AWS に関連するネットワーク技術の理解
  • AWS で利用できるセキュリティ関連の機能およびツールと従来型サービスとの連携に関する理解

出題範囲

  • 回復性の高いアーキテクチャを設計する 34%
  • パフォーマンスに優れたアーキテクチャを定義する 24%
  • セキュアなアプリケーションおよびアーキテクチャを規定する 26%
  • コスト最適化アーキテクチャを設計する 10%
  • オペレーショナルエクセレンスを備えたアーキテクチャを定義する 6%

サンプル問題

Amazon Web Services, Inc.のサイトからPDFをダウンロードできます。→

【回答と解説】AWS 認定ソリューションアーキテクト - アソシエイト (2018 年 2 月開始) SAA-C01 サンプル問題

 

1) ある企業が、カスタム AMI 上のテキストファイルにアクセスキー (アクセスキーID およびシークレットアクセスキー) を格納しようとしています。その企業は、アクセスキーを使用して、AMI から作成されたインスタンスから DynamoDB テーブルにアクセスします。セキュリティチームは、よりセキュアなソリューションを要求しています。セキュリティチームの要求に応えるソリューションはどれですか。

A. アクセスキーをAmazonS3バケットに格納し、起動時にインスタンスからアクセスキーを取得する。
B. インスタンスユーザーデータを介してアクセスキーをインスタンスに渡す。
C. プライベートサブネット内で起動されたキーサーバーからアクセスキーを取得する
D. そのテーブルにアクセスする権限を持つIAMロールを作成し、そのロールを使用してすべてのインスタンスを起動する。

回答: D

【解説】

この問題では、EC2上のテキストファイルにアクセスキー情報を書きこんで、そのインスタンスを元にAMIを作成しようとしている人たちに対して、セキュリティチームがちょっと待ったをかけてます。
セキュリティチームの要求に応えて、セキュアな設計にしなければなりません。
それぞれの選択肢を見てみます。

A. はS3にアクセスキー情報を格納してEC2のユーザーデータなどで起動時に取得する、としています。
「これならAMIにはキー情報を持たないから安心!」とはなりません。
そもそもEC2がS3にアクセスするための権限はどのように設定するつもりでしょうか。
B. もA.と同じようにEC2の外部にあるアクセスキー情報をEC2外に置いてユーザーデータで取得する方法です。
どこから渡すつもりでしょうか。
C. はプライベートサブネットでEC2を起動する、としてもやっぱりアクセスキーを使います。
アクセスキーID、シークレットアクセスキーを使うということは、漏れると不正アクセスのリスクがあるということです。
そして人が管理する静的な文字列情報は漏れます。

ですので正解はDのIAMロールを使った安全な権限付与です。
今回の要件では特定のDynamoDBテーブルを操作できる権限のIAMポリシーをアタッチしたIAMロールをEC2に設定します。

 

2) ある企業が、ステートレスWebサーバーを使用する高可用性Webアプリケーションを開発しています。セッション状態データを保持するのに適したサービスはどれですか (2つ選択してください)。

A. CloudWatch
B. DynamoDB
C. Elastic Load Balancing
D. ElastiCache
E. Storage Gateway

回答: B、D

【解説】

ステート(状態)レス(持たない)なWebサーバーです。
セッション状態をWebサーバーに持たない「セッションステートレス」な設計です。
B.のDynamoDBとD.のElastiCacheがセッション情報を保持するのに適しています。
A.のCloudWatchはモニタリングサービス、C.のELBはトラフィックを分散するロードバランサー、E.のStorage GatewayはオンプレミスのデータをAWSに保管するのに適しています。

 

C.のELBにスティッキーセッション(セッションの維持)という機能がありますので、複数のWebサーバーで高可用性を構成したときのセッション情報の解決が出来るという意味で、混同しそうですが、「ステートレス」がポイントです。
スティッキーセッションは、セッションを維持するのみで、Webサーバーにセッション状態データを保持します。
この状態は「ステートフル」といえます。

 

3) ある企業において、販売担当者が売上ドキュメントを毎日アップロードしています。ソリューションアーキテクトは、それらのドキュメントを格納するため、重要ドキュメントの誤削除防止機能を備えた高耐久性ストレージソリューションを必要としています。ユーザーによる誤削除を防ぐには、どうすればよいですか。

A. データをEBSボリュームに格納し、週1回スナップショットを作成する。
B. データをAmazonS3バケットに格納し、バージョニングを有効化する。
C. データを別々のAWSリージョンにある2つのAmazonS3バケットに格納する。
D. データをEC2インスタンスストレージに格納する。

回答: B

【解説】

売上ドキュメントが誤って削除されないようにしたい、そして高耐久性が必要とのことです。
単純に削除させない、であればポリシーで制御できますが、そうではなく「誤った削除」を防止したいのですね。
これは、「誤って削除しても元に戻せればいい」と考えられます。
そして選択肢の中から最も高耐久性を持っている方法を選択します。

A.はEC2経由でEBSに格納します。EBSはアベイラビリティゾーン内にしか存在しないのでアベイラビリティゾーン単位での障害時にデータが失われる可能性があります。最も高耐久性ストレージではありません。
C.はマルチリージョンでS3を使用します。複数リージョンのS3バケットを同期させるクロスリージョンレプリケーションの機能もあります。
ですが、同期であれば誤削除防止にはなりませんし、一方を書き込みだけにしてバックアップとして使用したとしても2つのバケットを管理しなければなりませんのでシンプルではありません。また、削除だけではなく上書きの場合の管理を考えても面倒です。
この場合はバージョニングの方がシンプルで要件を満たせる機能となります。
D.はA.のEBSよりもさらに耐久性の低いEC2インスタンスストレージですので違います。EC2インスタンスストレージはEC2がランニングの間しかデータを保持しません。

という訳でで、B.イレブンナインの耐久性を持っているS3が正解となります。
ですが、「誤削除を防止する」=「誤って削除しても元に戻す」と考えるとデフォルトで使うのではなく、バージョニングを有効にしてロールバックができるようにします。

 

4) あるアプリケーションに対して、初期ストレージ容量が8TBの高可用性リレーショナルデータベースが必要です。データベースのサイズは、毎日8GBずつ増加する見込みです。予想されるトラフィック量に対応するため、読み取り処理用として8個以上のリードレプリカが必要です。これらの要件を満たす手段はどれですか。

A. DynamoDB
B. Amazon S3
C. Amazon Aurora
D. Amazon Redshift

回答: C

【解説】

「高可用性リレーショナルデータベース」というキーワードがあります。
選択肢の中で該当するのは、C.のAmazon Auroraのみです。Amazon AuroraはRDS(リレーショナルデータベースサービス)のデータベースエンジンの1つです。
そして複数のアベイラビリティゾーン上でリードレプリカを作成して、マスターからのフェイルオーバーにも対応しています。
A.DynamoDBはNoSQL(非リレーショナル)です。
B.S3はストレージサービスです。
D.Redshiftは列集計型のデータウェアハウスサービスです。
「毎日8GBづつ増加する」はAuroraのストレージ容量自動増加機能で対応でき、「8個以上のリードレプリカ」もAuroraは対応しています。

 

5)  あるソリューションアーキテクトが、EC2インスタンス上で動作する基幹業務アプリケーションを設計しています。このアプリケーションではリレーショナルデータベースが使用され、最大16,000IOPSのEBS ボリュームが1個必要です。このアプリケーションのパフォーマンス要件を満たすAmazon EBSボリュームタイプはどれですか。

A. EBS プロビジョンドIOPS SSD
B. EBS スループット最適化HDD
C. EBS 汎用SSD
D. EBS コールドHDD

回答:A

【解説】

要件として「最大16,000IOPSのEBS ボリュームが1個必要」を満たすボリュームタイプを選択する問題です。
現在、C.の汎用SSDも最大は16,000IOPSの性能がありますが、AWS認定ソリューションアーキテクトアソシエイトは2018年2月現在の内容です。その当時の汎用SSDは10,000IOPSでした。
仮に当時から汎用SSDの最大IOPSが16,000であったとしても、AWS公式のページには以下の記述があります。
ちなみにgp2は汎用SSD、io1がプロビジョンドIOPS SSDです。

「gp2のIOPSより高いIOPSが必要な場合、ワークロードで低レイテンシーが重要である場合、または、パフォーマンスの一貫性を高める必要がある場合は、io1の使用をお勧めします。」

問題には「基幹業務アプリケーションのパフォーマンス要件を満たす」とあるので、一貫性のあるIOPSを提供するA.のプロビジョンドIOPS SSDが選択肢となります。
HDDはSSDよりも性能を低くしてコスト効率をよくする追加のボリュームタイプです。

 

ボリュームタイプ
汎用SSD(gp2)
プロビジョンドIOPS SSD(io1)
スループット最適化HDD(st1)
Cold HDD(sc1)
最大IOPS
16,000
64,000
500
250
ユースケース
ほとんどのワークロードに推奨される
持続的なIOPSパフォーマンス、またはボリュームあたり 16,000 IOPS または 250 MiB/秒以上のスループットを必要とする重要なビジネスアプリケーション
低コストで安定した高速スループットを必要とするストリーミングワークロード
低いストレージコストが重視されるシナリオ

 

 

6) 顧客は、あるWebアプリケーションを使用して、AmazonS3バケットに注文データをアップロードすることができます。すると、AmazonS3イベントが発生し、Lambda関数がトリガされ、メッセージがSQSキューに挿入されます。1つのEC2インスタンスによって、キューからメッセージが読み取られて処理され、一意の注文番号で分割されたDynamoDBテーブルに格納されます。来月のトラフィック量は10倍に増える見込みです。ソリューションアーキテクトは、スケーリングに関する問題がアーキテクチャに発生する可能性を調べています。増加するトラフィックを処理するためにスケーリングできるようにする際、設計の見直しが最も必要であると思われるコンポーネントはどれですか。

 

A. Lambda 関数
B. SQS キュー
C. EC2 インスタンス
D. DynamoDB テーブル

回答: C

【解説】

S3をトリガーにLambda関数が実行され、メッセージをSQSに格納します。
ここまではトラフィックが10倍に増えても、Lambda関数は並列で同時にS3のアップロードイベントを受け付けることができますし、SQSもFIFOキューを指定していなければ制限はありませんので、何の問題もありません。
データが格納されるDynamoDBも書き込みキャパシティユニットを増やすことで問題なく対応できます。
SQSキューからメッセージを受け取って処理をするのが「1つのEC2インスタンス」ですので、ここが問題です。
「1つの」となっているのでスケールしません。また単一障害点(SPOF)にもなっています。

 

ちなみに、設計の見直し方法としては、EC2をオートスケーリングにする、Ec2の処理をLambdaにおきかえる、などが考えられます。

7) アプリケーションによってログが AmazonS3バケットに格納されています。あるユーザーが、トラブルシューティングのため、このログを1か月間保持し、その後消去したいと考えています。この要件を満たすには、どの機能を使用すればよいですか。

A. AmazonS3バケットに対するバケットポリシーを追加する。
B. AmazonS3バケットに対するライフサイクル構成ルールを構成する。
C. AmazonS3バケットに対するIAMポリシーを作成する。
D. AmazonS3バケットに対してCORSを有効化する。

回答: B

【解説】

A.とC.はS3バケットに対してのセキュリティ設定ですので、ログデータの保存期間についてはコントロールできません。
D.は他のウェブサイトからS3のオブジェクトに対してクロスオリジンリクエストを許可するために設定します。
ログデータの保存期間はB.のライフサイクルによって自動化できます。

 

「ライフサイクル構成ルール」と問題にはありますが、ドキュメントによっては「ライフサイクルポリシー」と書かれていることもあります。
表記ゆれについては気にしてはいけません。意味としてどれが最も適切に指しているかを考えましょう。

8) EC2インスタンス上で動作するアプリケーションによって、AmazonS3に格納されている機密情報が処理されています。その機密情報は、インターネットからアクセスされるため、セキュリティチームは、AmazonS3に対するインターネット接続におけるセキュリティリスクを懸念しています。このセキュリティ上の懸念を解消するソリューションはどれですか。

A. インターネットゲートウェイ経由でデータにアクセスする。
B. VPN接続を使用してデータにアクセスする。
C. NATゲートウェイ経由でデータにアクセスする。
D. AmazonS3に対するVPCエンドポイントを経由してデータにアクセスする。

回答: D

【解説】

VPC内のEC2インスタンスとS3の接続方法は2通りのルートがあります。

1つはインターネットゲートウェイ経由でEC2インスタンスからS3バケットにアクセスします。
もう1つはS3のVPCエンドポイント経由でEC2インスタンスからS3バケットにアクセスします。

「インターネット接続におけるセキュリティリスクを懸念」しているので後者のVPCエンドポイント経由が正解です。

B.のVPN接続はVPCとオンプレミスを接続するときに使用します。
C.のNATゲートウェイはプライベートサブネット内のEC2インスタンスがインターネットに接続する際に必要です。
プライベートサブネット内のEC2インスタンスがインターネットゲートウェイ経由でS3にアクセスする場合はNATゲートウェイ、インターネットゲートウェイを経由します。

 

9) ある組織が、共有サービスVPC内にAmazon Redshiftクラスターを構築しようとしています。そのクラスター上で機密データがホストされる予定です。そのクラスターにアクセスできるネットワークを制御するには、どうすればよいですか。

A. クラスターを別のVPC内で実行し、VPCピアリング機能を使用して接続する。
B. Amazon Redshiftクラスター内に、特定のネットワーク上のユーザーに対応するデータベースユーザーを作成する。
C. クラスターセキュリティグループを作成し、特定のネットワークからのアクセスを許可する。
D. VPN経由で共有サービスネットワークに接続するネットワークにのみ、アクセスを許可する。

回答: C

【解説】 

「Redshiftクラスターにアクセスできるネットワークの制御」なので、VPC内の制御はこの選択肢ではセキュリティグループが正解です。
VPCピアリング、VPN経由の場合でも、VPC内のクラスターやインスタンスに対するネットワーク制御はセキュリティグループで許可するポートと送信元だけを設定します。

 

10) あるソリューションアーキテクトが、オンラインショッピングアプリケーションを設計しています。このアプリケーションは、ELB Application Load Balancerの内側にあるEC2インスタンス上のVPC内で動作します。EC2 インスタンスは、複数のアベイラビリティーゾーンにまたがるAuto Scalingグループ内で動作します。アプリケーション層では、顧客の管理下にあるデータベースクラスター内のデータに対する読み取りと書き込みを実行する必要があります。インターネットからデータベースにアクセスできないようにする必要がありますが、クラスターはインターネットからソフトウェア更新プログラムを取得できる必要があります。これらの要件を満たす VPC 設計はどれですか。

 

A. アプリケーション層とデータベースクラスターの両方をパブリックサブネット内に配置する。
B. アプリケーション層をパブリックサブネット内に配置し、データベースクラスターをプライベートサブネット内に配置する。
C. アプリケーション層と NAT ゲートウェイをパブリックサブネット内に配置し、データベースクラスターをプライベートサブネット内に配置する。
D. アプリケーション層をパブリックサブネット内に配置し、データベースクラスターとNAT ゲートウェイをプライベートサブネット内に配置する。

回答: C

【解説】

A.はパブリックサブネットにデータベースクラスターを配置しているので、「インターネットからデータベースにアクセスできないようにする」要件を満たしていません。
B.はデータベースクラスターをプライベートサブネットに配置しているので、「インターネットからデータベースにアクセスできないようにする」要件を満たしていますが、「クラスターはインターネットからソフトウェア更新プログラムを取得できる必要があります。」を満たしていません。
C.はパブリックサブネットにNATゲートウェイが配置されているので、データベースクラスターはNATゲートウェイ経由でインターネットからソフトウェア更新プログラムを取得できます。
D.はNATゲートウェイをプライベートサブネットに配置してしまっています。この構成ではデータベースクラスターからNATゲートウェイにルートがあったとしても、その先のインターネットへのルートがありません。

 

ちなみに特別な理由がなければ、アプリケーション層のAuto Scalingグループもプライベートサブネットに配置して、外部の攻撃から保護できます。

 

トレノケートのAWS研修(AWS認定トレーニング)

トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
トレノケートのAWS研修(AWS認定トレーニング)はこちら


▼AWS初心者の方は、AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
AWS Cloud Practitioner Essentials 詳細・日程はこちらから