見出し画像

AWS Certified Solution Architect Professional 一発合格記(AWS業務未経験)

相変わらず休職中のSIerマンです。
タイトル通り、ついにAWS資格内の最難関であるSAPに合格しました。
なかなか一発合格は難しいと巷で噂されている本試験ですが、奇跡的に一発合格することが出来ました。

※筆者が受験したSAP-C01試験は2022年11月14日でVerが変わる様なので、受験希望の方は早めの受験対策と受験をお勧めします。

ちなみに上記記事の約2週間後である2022/4/12にSolution Architect -Associate(SAA)も取得しています。

改めての筆者前提

・業務経験としてはオンプレミスのレガシークライアントサーバ型基幹システムのみ
・HW系の構築/DB関連(データ移行)/軽微な改修 等は経験あり。
・NW系はほぼノータッチ。
・Webシステムの構築・運用経験&AWS業務経験はほぼ無し。
 (※PoCでAWSマネジメントコンソール・EC2インスタンス・S3を少し触っただけ。)

勉強内容について

DVA/SAAを取り終えた後、もう一ステップ踏みたいなと安易な気持ちで踏み込んでしまいましたが、結果オーライとなったSAPの私の勉強内容はこちらです。

勉強期間:2022/4/18~7/21 計3か月
子育ての兼ね合いもあり、1日2~3時間確保出来ればラッキーかなという感じの中でやりくりして勉強を進めていました。
日によってまばらで、全くやらない日もあればそこそこやったという日もあったので、まぁ無理のないペースで行うのが一番だと思います。

資格取得のために重点的な勉強をしたというよりは、後々汎用的な知識として使えるようにという形で勉強を進めたので少しスローペースではあります。

ちなみに私は、書店に売られている書籍での学習やAWS無料利用枠を使用した構築の練習などは一切行っておりません

その代わりに利用したのが、基本的におそらくSAPを志した皆さんであれば、様々なサイトを参考に一度は訪れたのではないだろうかというサイト・ツール達です。


Jayendra's Cloud Certification Blog

各AWS試験対策に向けた、ホワイトペーパー類を主に列挙したサイトです。
ここでまず主となるサービス・概念・AWS推奨のベストプラクティスについて学習していきました。
正直ちんぷんかんぷんでまだこれを読み始めたころはさっと流し読みしていた内容が多々あっただろうなと思います。


AWS WEB問題集で学習しよう (通称:黒本)

こちらも有名なサイトではないでしょうか。
有料ですが、模擬問題を1回7問ずつで68セクションの計455問用意されています。
こちらのサイトで正解率100%になるまで繰り返し&正解しても理解の曖昧な内容について、本問題集の解説とGoogle先生を駆使して理解を深めていきました。
100%になった後にもう1週しておけばさらに安心だったかな・・と感じています。


UdemyAWS 認定ソリューションアーキテクト プロフェッショナル模擬試験問題集(全5回分375問)

https://www.udemy.com/course/aws-53225/

こちらも有料となりますが、日本語教材で英語が苦手な方はオススメです。
私は初期に1週、上記①、②を経て試験直前で各問題をもう1週しました。
5回分中3回が80%程度の点数を取得出来る様になったので、受験するに至ったという感じです。


AWS公式 BlackBelt

AWSバイブルです。
知らないサービスやあまり理解の深くないサービスはとりあえずここを見て学習する様な感じです。


AWS公式 よくある質問
AWS公式のドキュメントを読んで理解し、記憶しておけば後は文章読解力次第で受かるといわれている本試験です。

正直初期の頃に公式ドキュメントを読みましたが英語苦手故、変な日本語翻訳サイトだ・・・と思いながらほとんど手を出していませんでした。

申し込み後~受験前夜にかけていくつかのサービスの"よくある質問"ページを見ましたがいつのまにか内容が理解できるように・・・・・・
上記している2つの模擬試験シリーズはもっぱらこちらのよくある質問の内容がベースになっている気がしました。
模擬試験集を終えて、まだ不安要素がある際は穴埋めにこちらのドキュメントを参照しつつ勉強するのも非常に有用かと思います。


ノートにまとめた内容

以下のサービスに関して、問題を解いたりBlackBelt参照したりしつつ私はノートにまとめています。
じっくり理解して最終的に図と説明を紙に書くというのが私の性分的には合っている様な気がしてこの方法を取っています。
従来までのDVA/SAAでまとめた内容からの引き続きの様な形なので、
本当に重要だと思ったサービスについては太字で記載しています。

<まとめた内容ざっくり分類>

  • VPC関連
    →VPCの概念について(VPC・サブネット・ルートテーブル・ACL・セキュリティーグループ・エンドポイント)など、1つ1つの配置関係や役割などきっちり分けて理解しておく必要があります。

  • IAM
    →AWSサービスを利用する上ではキホンのキ ですが、ユーザー/ロール/ポリシーについてはしっかりと抑えておくべきです。

  • Cognito・AWS SSO
    以下のIDフェデレーションと一緒にしっかりと概念やユースケースを理解する必要があります。

  • IDフェデレーション関連
    →筆者が特に苦手だった分野です。前提知識ゼロだったので。
    模擬問題でもかなりの問題数出題されミスを繰り返しました。
    そもそもWebIDフェデレーションとは?SSOとは?SAMLとは?LDAPとは?という1つ1つ理解が出来ていなかったのですが、終盤に一からしっかりと勉強しユースケースごとの図を書いて理解を深めていきました。
    IAMと深く関係しますが、
    AssumeRoleやSTS、APIコールについてはキチンと理解する必要があります。
    (GetSessionTokenAPI,Get FederationTokenAPI,AssumeRole,AssumeRoleWithWebIdentityなど、それぞれのコールはどういった場面で使用されるかをしっかり理解しないと点数が取れない)

  • Systems Manager
    →最初は軽視してましたが抑えておくべきです。AutomationやPatch Managerなどの機能について理解しておくと点に繋がります。

  • Secrets Manager
    →ローテーション周りとパラメータストアの使い方を抑えておくとよいかも。

  • Certificate Manager
    →証明書周りもイマイチ筆者には馴染みがなく苦戦した部分です。
    クライアント証明書を使う際の配置パターンなどを抑えておくとよいでしょう。
    プロトコル周りのエンジニアとしてそもそも基本の部分が無い場合、まずそこから理解する必要があります。(筆者がそうでした)

  • KMS
    →使用場面やサーバーサイド暗号化(SSE-KMS,SSE-S3,SSE-C)の内容の違いを抑えておけばOKかと思います。


  • CloudFront
    →必修です。
    受験後にもまだ知識が足りないと感じました。
    ビューア/オリジンプロトコルポリシーの種類、
    署名付きURL/Cookie, 信頼された署名者, ビヘイビア
    Lambda@Edge, Cloud Front Fnctions
    OAI
    AWS Sheild/WAFとの統合
    キャッシュヒット向上のための施策等々盛りだくさんです。


  • EBS/EFS/S3
    EBSについてはボリュームタイプのまとめ、
    EBS/EFSの使用パターンの違い(AZ毎 とか)
    スナップショットの利用方法、暗号化方式
    →S3についてはAWSサービスを利用する中ではまぁだいたい使うものかと思いますので基本的な知識は習得必須
    リクエスタ支払い、クロスリージョンレプリケーション、S3タイプの選別(S3-IA, S3-1zone, Glacier, Glacier Deep Archive),OAI, 署名付きURL, CORS, S3アクセスポイント, Transfer Accelerator, バケットポリシー、所有権絡み等々盛りだくさんです。
    分からない点やちょっとあいまいな点があればつぶしておくのが吉。
    EBS/EFS/S3それぞれの用途をしっかり区別しておきましょう。

  • StorageGateway

  • FSx
    →上記2つはちょくちょく出てきますが、どこに何を設定してどういう時に使うかを抑えておけばOKです。
    たまにマニアックな内容の質問が出るのでもしかすると点を落としがちになる部分かもしれません。


  • RDS
    当たり前の様に出てくるので、しっかりおさえておく必要があります。
    リードレプリカ、クロスリージョンリードレプリカ、フェイルオーバー形式、暗号化形式、スナップショット、OracleRAC関連(その他DBのAWS移行に関して)、各DBタイプのベストプラクティス、RDS on VMwareの使用方法と制限
    などなどは抑えておかないといけません。

  • Aurora
    RDS同様しっかり学習が必要です。
    MySQL, PostgresSQLのみ対応、グローバルデータベース機能、Aurora Serverlessなどなど。
    基本的にオンプレ→AWS移行でのアーキテクチャに採用される場面で出てくるパターンがほとんどですが、Aurora Serverlessのユースケースなどはしっかりと覚えておきましょう。

  • DynamoDB
    →必修中の必修です。
    NoSQL型のDB移行が絡むときはもっぱらDynamoDBを使用しています。
    構成要素(キャパシティーモード、RCU/WCU、ローカルセカンダリインデックスとグローバルセカンダリインデックスの違い、DynamoDBStreamの使用ケース、グローバルテーブル、DAX、トランザクション処理、TTL、FGAC)等々細かい要素がたくさんありますが、
    他サービスとの連携で度々出てくるので必ず押さえておく必要があります。

  • Redshift
    →こちらも同様に必修です。
    構成要素(AZ単位・クラスタ構成・列志向データモデル、DWH)等々把握しておく必要あります。
    Redshiftに備わっている機能を利用して何が出来るのかという部分が結構大事になってくるので、BlackBeltの参照を推奨します。
    DR関連や暗号化、実行ノードの選別もちょくちょく問われます。

  • ElastiCache
    またしても必修です。
    RedisとMemcachedのユースケースはしっかりと分けて覚えておきましょう。
    筆者の業務経験上、キャッシュ処理の概念が全然なかったため、最初はイメージに苦労しました。
    どういうときに使うものなのかを抑えておけばだいたいOKです。


  • Lambda
    →サーバーレスといえばまぁ出てくるLambda。必修です。
    筆者には当然なじみなしですが意外とすんなり覚えられました。
    SQS+Lambda+DynamoDBの組み合わせは頻繁に出てきます。
    同時実行数の制約やAPI Gatewayその他サービスとの連携部分についてはしっかり把握しておきましょう。
    RDS ProxyやLambdaの配置関連なども頻出です。

  • API Gateway
    →こちらも必修。
    またまた筆者になじみのないAPI連携で苦戦した部分です。
    結局受験後もまだ勉強が足りなかったと感じました。
    Lambdaとの統合方式(Lambdaオーソライザーなど、マッピング、APIエンドポイント)等々、APIとはなんぞやから改めて勉強しなおすべきだと痛感しました。
    なじみがなくて苦戦する方はおそらく簡易的なプログラムを作って学習したほうが良いです。

  • ECS
    またまたなじみのないコンテナサービス。
    ECRとEKSについても少しは触れておきましょう。
    EC2起動タイプとFargate起動タイプのユースケースは抑えておかないと受験時にやられます。
    タスク配置戦略、スケーリング、タスク定義については念入りに抑えておきましょう。


  • SQS
    →Developperで培った知識がかなり役立ちました。
    SAAの次にSAPをチャレンジしようとしているだけの人はしっかり細かい内容を見た方が良いです。
    標準キューとFIFOキューの違いと疎結合アーキテクチャの際のユースケースを複数パターン頭に入れておくと問題文を読んでいる際にスムーズに図がイメージ出来るのでは無いでしょうか。
    可視性タイムアウトとデッドレターキュー、優先度付きキューやメッセージ重複排除ID、AutoScalingのトリガー時に必要な情報については抑えておくべきです。

  • SNS
    →通知が必要であればもっぱらSNSです。大規模メールはSES ぐらいで覚えておけば大体対応できるはず。


  • CloudWatch
    →言わずと知れたモニタリングサービスですが、
    バックエンドとの応答改善関連でよく出てきます。
    API GatewayとLambdaの主要なメトリクスを抑えておくと良いでしょう。

  • VPCフローログ

  • X-Ray
    →上記2サービスについては、どこでどういう風に使って何を見ることが出来るのか という違いを抑えておけばSAPは大丈夫だと思います


  • Route53
    →私にとっては鬼門中の鬼門でした。前提知識がない上にDNS系はそもそもググっても専門要素みが強いので勉強し辛い部分でした
    しかしながら絶対に抑えておかないといけません。
    おそらく今回のテスト時の点数減の原因はこやつです。
    DR用のアーキテクチャでも、低レイテンシー向けアーキテクチャでも様々な用途で使用されます。
    ・ルーティング方式の種類、★特にレイテンシールーティングについて
    ・フェイルオーバールーティング
    ・アクティブ/パッシブor アクティブ/アクティブ構成の違い
    ・加重ルーティング
    ・パブリック/プライベートホストゾーン
    ・Aレコード、AAAAレコード、Cレコード、ALIASレコードの各サービス関連付け時の選択
    ・ヘルスチェック方式
    等々間違いの無いように覚えておく必要があります。

  • Direct Connect
    →広帯域の専用線接続といえばコレです。
    オンプレ⇔AWSのハイブリットアーキテクチャを採用のパターンでだいたい使用します。
    VPNを使うか、DirectConnectを使用するかのケースについては覚えておきましょう。
    移行時にSnowballを使うかどうかという点も大事です。
    パブリックIF、LAG(Link Aggregation Group)と、VPC絡みになりますがTransitGatewayあたりは抑えておかないと、大規模海外含有組織系アーキテクチャ時にどういう対応をすれば良いか選択が出来ません。

  • Snowball
    →移行時に使用するサービスと覚えておけばだいたいいけます。
    基本的にSnowball Edgeを使うパターンだと思いますが、その他パターンの容量とユースケースを覚えておくとベストです。

  • ALB/ELB(ロードバランサー)
    続いて筆者にまた馴染みのないロードバランサーです。
    主にALBとNLBの違いについて比較表を作りました。
    対応レイヤーの違いについて覚えておく必要があります。
    バックエンドの応答エラーコードや対応ポート、証明書利用時のポート構成、負荷テスト方法、配置場所など図を描いてイメージしておきましょう。
    こちらもおそらく勉強不足。

  • Global Accelerator
    →テスト前夜にそういえば と思い出して、"よくある質問"ページを見返しました。
    ある程度のユースケースは記載されているのでそちらの内容を把握しておけばだいたい大丈夫です。

  • AutoScaling関連
    →必修です。
    様々なアーキテクチャ例を見て、覚えるのが一番の近道だと思います。
    SQSと連携したAutoScaling方式などに関する問題はたまにひっかけ問題の様な内容があるので、問題文をしっかり見たほうが良いです。


  • AWS Sheild

  • WAF

  • Cloud HSM
    →確実に安定した点数を取りたいのであれば、上記3つは抑えておく必要があります。
    AWS SheildとWAFがどういう対策に有効なのか、どういう使い方をするのかという点はしっかりと学習しておきましょう。
    CroudFrontと組み合わせてSheild & WAFを使用する際のケースはひっかけ問題チックなので注意。
    AWS公式の"よくある質問"ページとBlackBeltが役に立ちます。
    黒本の問題集でよく利用したアーキテクチャが出てきたので図を描いて覚えていきました。


  • 移行関連
    →AWS公式推奨の6Rはしっかり覚えておきましょう。
    テストで絶対出ます。
    その他、問題集で出た移行アーキテクチャを図に描いて覚えていったので実際の受験時にはイメージがすんなりできました。
    以下に記載している各サービスの使い分けについて理解を深めておかないと点数を落とします。

  • Application Discovery Service
    →移行計画時に利用サービスといえば、コレ。
    使い方はしっかりBlackBeltで学習しておきましょう。

  • MGN(Application Migration Service)
    →オンプレからの移行時に採用するケースがあります。
    使い方を把握しておきましょう。
    移行できるパターンと出来ないパターン、使用しないパターンでどう移行するかも押さえておくと○です。

  • Licence Manager
    →おまけで学習。ライセンス管理に使用します。

  • VM Import/Export
    →タイトル通りのサービスです。

  • DMS(Database Migration Service)
    →MGNと使い分けを把握しておかないとケアレスミスで点数減につながります。
    データベース移行サポートするシステムです。
    BlackBeltで使用方法等しっかり学習しましょう。
    対応しているDBとしていないDBの移行方法の違いもポイントになります。


  • セキュリティ関連・監視系

  • Service Catalog

  • Control Tower
    →上記2点はどういうサービスかBlackBeltで学習しておく必要ありです。
    知らないといざという時に選択肢に確証が持てなくなる レベルなのでそこまでBlackBelt以上の深追いはしなくても大丈夫かと思います。

  • Cloud Trail

  • AWS Config
    上記2つの違いは明確に理解しておきましょう。
    AWS Organaizations絡みで頻出です。
    CloudTrailログの配信タイミングなどCloudWatchと比較してどうなのか等もポイントになってきます。
    AWS Configは"何に対してやったか記録"
    Cloud Trailは"誰がやったか記録"
    で覚えられます。

  • AWS Organizations・コスト最適化
    SAPといえばもはやコレ絡みです。
    BlackBeltを見てまずサービス概要を把握、次に問題集に出てくる内容からユースケースを把握し理解を深めていくのがベストです。
    SCPとIAMポリシーの関連性をしっかり把握しておく必要があります。
    一括請求/すべての機能、ユーザー管理、タグ付けポリシー戦略、CloudTrailとの統合性についても理解しておきましょう。
    SCP絡みでは、デフォルトで割り当てられている「Full AWS Access」権限の存在には要注意です。テストでも問われます。
    Trusted Access, AWS Resource Access Managerとの関連性も少し頭に入れておくと○です。


  • Code Commit

  • Code Build

  • Code Deploy

  • Code Pileline

  • Code Star
    →上記のCodeシリーズはDeveloperの名残です。
    知識が役に立ちましたがサラッとサービスの紹介を見て理解するぐらいでSAPは大丈夫では無いでしょうか。
    ただし、Codepipelieを使用したCI/CD改善でCodeDeployとCodeBuildは頻出です。
    デプロイ方式の種類とそれぞれで出来ること/出来ないことは抑えておいた方が良いです。


  • Cloud Formation

  • Ops Works

  • Elastic Beanstalk
    上記3点はインフラストラクチャ管理自動化絡みで出てくる重要サービスですので必修です。
    →Cloud Formationは特にDevelopperチックな内容が多いので一つ一つの要素を暗記するのが苦手だと少し不利かもしれません。
    構成要素を理解し、各セクションで何を記載するのかをまず理解する必要があります。
    ヘルパースクリプトや、Lambda関数の組み込み方式、スタックセット、変更セットの使用方法、テンプレート作成の方法、展開時の注意点、マッピング、クロススタック参照、デプロイ方式等々細かく抑えておきましょう。実務でも役立つかと思います。

    →OpsWorksに関してはCloud Formationと何が違うのか、何に対しての互換性があるサービスなのかという点を把握しておくとよいでしょう。
    デプロイ・展開方式をCloud Formationの勉強の際に頭に一緒に入れておくとよいと思います。

    →Elastic Beanstalkに関しては正直未だにちゃんと理解できていない感じ満載なので詳細は割愛。
    受験時の問題でおそらく本サービスについて問われた内容は無かったかも?という感じ。

    上記3サービスについては筆者正直まだ弱点分野だと感じています。
    かなりの時間をサイト参照して勉強したりしましたが、これに関しては実際に作ってみるのが一番手っ取り早いと思います。

  • SAM
    →存在とCloud Formation記載時の方式は把握しておきましょう。


  • データ処理関連
    →大量データ処理に絡む内容です。
    基本的に以下のサービス等のユースケースが問われるので、サービスに応じた適切なシーンを選択出来るように分けて理解を深めておく必要があります。
    DWH, ETL等現代のハイパフォーマンスコンピュータを使用したデータ処理に関する基本的な用語も抑えておくと良いでしょう。

  • Kinesis
    →ストリームデータ処理系で頻出です。
    BlackBelt参照の上、Data Stream, Firehose, Analysticそれぞれの役割をしっかりと押さえておきましょう。
    IoTデータ系のKinesisを使用した複雑な大量データ処理系アーキテクチャ等を参考に図を描いてみるとデータの流れ・入口出口が分かりやすくて後々役に立つと思います。
    その他細々した機能がありますが、KCLを使用するケースやニッチな部分も公式ドキュメントから掬い上げて穴を埋めておいた方が良いと感じます。

  • Step Functions

  • SWF
    →上記2サービスについては、使い分けをしっかりと把握しておく必要があります。
    StepFunctionはSWFの後継でよりシンプルに使いやすくという考えから生まれたサービスですので、AWSの推奨に則り基本的にはこちらの内容をメインで覚えておきましょう。
    SWFに関しては、SWFを使わなければならないケース(子プロセス結果応答、電文系)を抑えておけばOKかと思います。

  • EMR
    →ビッグデータ処理系アーキテクチャに使用されるサービスその①です。
    たまに出てくるので後付けで勉強しました。
    Apache Spark/Hive/HBase/Flink/PrestoのOSSツールとの互換性があるサービスですが、上記サービスについてはいまだにちゃんと把握していません。
    コスト削減絡みのノード別でのスポットインスタンスの使い分けパターンなどを覚えておきましょう。

  • AWS Batch
    →ビッグデータ処理系アーキテクチャに使用されるサービスその②です。
    スパコンを使用した大規模計算、CGレンダリング、AI、ゲノム関連に使用されるサービスで、定時夜間実行ジョブに使用するジョブスケジューラ的なものとは少し異なります。
    知らないとついつい選択肢で選択してしまいそうになるので注意です。
    (だいたいSystems ManagerのPatch Mangaerと対になって選択肢に挙げられているようなイメージ。)

  • Data pipeline
    →サーバやDBからのデータ改修、ETL処理、Redshiftへのデータのロードなど、データ利用の前処理で利用されるサービスです。
    定義したスケジュールに基づいて処理アクティビティを定期実行するのはこちらなのでAWS Batchと混同しないように注意しましょう。

  • AWS Glue

  • Athena
    →ETL&分析の上記2サービスの組み合わせパターンがたまにあります。
    BlackBeltで中途半端に学習したのみなのでイマイチまだ理解は及んでいませんが、何が出来るサービスなのかは把握しておきましょう。

  • OpenSearch
    →別名、Elastic Searchです。勉強不足なので割愛。

    長くなりましたが、上記がノートにまとめた主要なサービスです。


受験方法について

ピアソンVUE or PSIにて提供されるテストセンター方式 or 自宅受験方式がありますが、今回もやはり本試験は集中できる環境で挑みたかったのでピアソンVUEのテストセンター方式で受験しました。
DVA, SAA合格時の50%割引バウチャーがあったので適用して半額で受験しました。(それでもDVA/SAAと同じ値段になるだけなので、気は抜けませんでした・・)

受験した感想

スコア

筆者合格スコアとしては785/1000でした。
合格ラインは750/1000なのでかなりギリギリ・・・

次回までにRoute53, ELB, AutoScalingあたりの知識をもっと詰めておかないとダメだと「完了」ボタンを押すまでは正直ずっと諦めていました。
ちょっと曖昧だなと思っているものについては、ちゃんと公式ドキュメントの文言を理解出来る様なレベルまで押し上げていないと恐らく落ちるであろう本試験でした。
余談ですが筆者は自信がそこそこあったコスト最適化のジャンルの得点率が低く、改善が必要とスコアレポートに記載されていました。
(問題ごとの正誤は見れないので、何が間違っていたのかわからない・・・)

おわりに

以上が、筆者のSAP合格記です。
ここまで長々と見ていただいた方はありがとうございました。
もしSAP取得を志している方でこの記事にたどり着いた方がいらっしゃれば、少しは助けになる様な内容であれば幸いです。

本当に理解をするなら、無料利用枠から少しはみ出してでも自分でサービスを使って覚えてみるのが一番だと思いました。
百聞は一見に如かず。業務経験に勝るものは無いとつくづく思い知らされました。。。


いいなと思ったら応援しよう!