こんにちはラーニングサービス本部 テクニカルトレーニング第1部でAWS認定トレーニングコースを担当しております山下です。
最近は来月2019年4月19日に発売の書籍「AWS認定試験対策 AWS クラウドプラクティショナー(外部リンク)」の最終校正が完了し、一息つきましたところです。
さて、今回は2018年2月に更新された「AWS 認定ソリューションアーキテクト - アソシエイト」SAA-C01試験のサンプル問題の解説を書いてみました。
※情報は2019年3月24日時点のものです。
SAA-C01試験は合格スコアが1000が満点のうち720です。私はスコア954で合格しております。それをエビデンスとして読んでいただけましたら幸いです。
AWS認定のアソシエイトレベルには、役割別に3つの試験があります。オペレーションや管理を担当する方向けの「SysOpsアドミニストレーター」、開発担当者向けの「デベロッパー」、そしてこの「ソリューションアーキテクト」は、設計や提案をされる方向けの認定です。AWS上で要件や課題に基づいてベストプラクティスに沿った設計構築を行えることを証明できます。
たびたび「人気の認定資格」や「稼げる認定資格」として取り上げられている認定資格です。
2018年2月に試験問題の改訂と試験時間・問題数など、制度の変更が行われました。これから受験を予定している方は、試験の概要を見直しておきましょう。
Amazon Web Services, Inc.のサイトからPDFをダウンロードできます。→
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に設定します。
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サーバーにセッション状態データを保持します。
この状態は「ステートフル」といえます。
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が正解となります。
ですが、「誤削除を防止する」=「誤って削除しても元に戻す」と考えるとデフォルトで使うのではなく、バージョニングを有効にしてロールバックができるようにします。
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は対応しています。
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/秒以上のスループットを必要とする重要なビジネスアプリケーション
|
低コストで安定した高速スループットを必要とするストリーミングワークロード
|
低いストレージコストが重視されるシナリオ
|
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におきかえる、などが考えられます。
A. AmazonS3バケットに対するバケットポリシーを追加する。
B. AmazonS3バケットに対するライフサイクル構成ルールを構成する。
C. AmazonS3バケットに対するIAMポリシーを作成する。
D. AmazonS3バケットに対してCORSを有効化する。
回答: B
【解説】
A.とC.はS3バケットに対してのセキュリティ設定ですので、ログデータの保存期間についてはコントロールできません。
D.は他のウェブサイトからS3のオブジェクトに対してクロスオリジンリクエストを許可するために設定します。
ログデータの保存期間はB.のライフサイクルによって自動化できます。
「ライフサイクル構成ルール」と問題にはありますが、ドキュメントによっては「ライフサイクルポリシー」と書かれていることもあります。
表記ゆれについては気にしてはいけません。意味としてどれが最も適切に指しているかを考えましょう。
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ゲートウェイ、インターネットゲートウェイを経由します。
A. クラスターを別のVPC内で実行し、VPCピアリング機能を使用して接続する。
B. Amazon Redshiftクラスター内に、特定のネットワーク上のユーザーに対応するデータベースユーザーを作成する。
C. クラスターセキュリティグループを作成し、特定のネットワークからのアクセスを許可する。
D. VPN経由で共有サービスネットワークに接続するネットワークにのみ、アクセスを許可する。
回答: C
【解説】
「Redshiftクラスターにアクセスできるネットワークの制御」なので、VPC内の制御はこの選択肢ではセキュリティグループが正解です。
VPCピアリング、VPN経由の場合でも、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 Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから