AWS認定ソリューションアーキテクト-プロフェッショナル受験を終えて(2020.11)

# はじめに
2020/11/14に念願のAWS認定ソリューションアーキテクト-プロフェッショナル（以下SAP）に合格しました。
受験体験記や勉強法に関する記事も多いですが、私自身、今回の受験を通していくつかの気づきを得ましたので、これから受験する方の参考になればと思い、まとめることにしました。

# 筆者について
前提として、受験時の筆者について書いておきます。SAP試験は出題範囲が広く、AWS以外のインフラ知識も必要となるため、その人のバックグラウンドによって当然勉強すべきポイントも違ってくると思うからです。

## キャリア
- Web系事業会社のインフラエンジニア
- AWS歴は5年程度
- AWS認定ソリューションアーキテクト-アソシエイト（以下SAA）は取得済み
- 自社Webサービス基盤としてAWSを毎日業務利用
    - 利用サービス： EC2,RDS,S3,Route53,Lambda,ElastiCache,API Gateway,ECS,CodeDeploy,IAMなど、Webサービスで利用する一般的なもの
- オンプレ経験あり
- サーバはLinux中心だがWindowsサーバ経験もあり
- ネットワーク知識はCCNPレベル

## 準備期間
1.5ヶ月程度

## 受験回数
1回

# 私の勉強方法
まとめると下記です。

- 対策本での問題演習を通して自分の苦手項目を洗い出す
- 上記について、Web上のリソースを活用して補強

Web上では、よくAWSが提供するホワイトペーパーや、各サービスのBlackbeltを読みまくるという勉強方法が散見されます。もちろん公式情報がもっとも正確だし大切だとは思いますが、SAPは出題範囲が広いため、読むべき量が膨大になります。
私は公式情報の参照は最低限にとどめ、他の情報も積極的に活用しました。

また、情報をインプットするだけだと理解した気になるので、あくまでも問題演習を中心にした方が効率的だと思います。

## 対策本でひたすら問題演習
これまでSAP試験については対策本がなかったのですが、ついに登場しました。
[『AWS認定ソリューションアーキテクト-プロフェッショナル ~試験特性から導き出した演習問題と詳細解説』](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88-%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB-%E8%A9%A6%E9%A8%93%E7%89%B9%E6%80%A7%E3%81%8B%E3%82%89%E5%B0%8E%E3%81%8D%E5%87%BA%E3%81%97%E3%81%9F%E6%BC%94%E7%BF%92%E5%95%8F%E9%A1%8C%E3%81%A8%E8%A9%B3%E7%B4%B0%E8%A7%A3%E8%AA%AC-%E5%B9%B3%E5%B1%B1-%E6%AF%85/dp/4865942483/ref=asc_df_4865942483/?tag=jpgo-22&linkCode=df0&hvadid=342428724851&hvpos=&hvnetw=g&hvrand=17253666351252475668&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009342&hvtargid=pla-919621259218&psc=1&th=1&psc=1)です。

これは私にとってまさに救世主のような本でした。
私自身、資格試験の勉強は参考書をやりこむという昔ながらのスタイルだったので、参考書の存在しないSAPの受験については、膨大すぎるWeb上のリソースを前に、二の足を踏んでいたのです。

この本の存在を知って、SAP試験に改めてチャレンジしようという気になりました。
この本の素晴らしさについてはクラスメソッドさんによる[書評](https://dev.classmethod.jp/articles/book_review_certification_sap/)をどうぞ。

### 1.まず1周
何はともあれ愚直に冒頭から通読していきます。
本書では、第2章で出題範囲のAWSサービスについて網羅的に説明されているので、ここで各サービスについて復習しておきます。

まったく内容を知らないサービスがあったら、最低限どんなサービスなのか答えられる程度には理解しておきましょう。

その後、各出題分野ごとの問題演習になりますので、問題を解いて解説を熟読します。間違えた問題はもちろん、正解した問題でも、不正解の選択肢についてどこが間違っているのかを確認しておきます。

### 2.専門用語を覚える
専門用語についてまったく知らないと、問題の要件を理解できないので覚える必要があります。
ちなみに、私にとってあまり馴染みがなかったのが以下でした。

- 移行戦略
    - 6つのR（Rehostなど）
    - https://pages.awscloud.com/rs/112-TZM-766/images/Migrating-to-AWS_Best-Practices-and-Strategies_eBook.pdf

- DR
    - パイロットライト
    - RTO(目標復旧時間),RPO(目標復旧時点)

### 3.模擬試験問題を時間を計って一気にやる
ここまで読み進めたら、最終章の模擬試験を一気に解きます。
SAP試験は75問というボリュームに慣れておくことが特に重要だと思います。それぞれの問題文も長いのですが、スキマ時間に数問ずつ解いていると、本番で一気に75問解答するときの負荷について想像できません（思ったより疲れる）。
最低1度は本番さながらに75問を解答し通すのがいいと感じました。

試験時間は180分あるので、時間が足りなくなることはないと思います。時間を計ることで75問を解くのに何分ぐらいかかるのか、1問あたりどれぐらいのペースで解けばいいかの感覚がつかめます。そんなに慌てて解答する必要がないことが分かるでしょう。

### 4.模擬試験問題で間違えた問題を復習
解説を読み、関連情報も検索して理解を深めましょう。

### 5.時間をおいて模擬試験問題に再チャレンジ
ある程度時間をおいてから模擬試験問題に再チャレンジします。もう時間を計る必要はありません。スキマ時間で数問ずつ解答してもいいでしょう。

ここで再度間違えた問題や、1回目は正解だったのに2回目は間違いだった問題は、理解が浅い部分として要チェックです。

### 6.苦手分野について理解を深める
ホワイトペーパーなどの公式情報にこだわらず、Web上の豊富なリソースを活用しましょう。
私の場合、[クラスメソッドさんのブログ](https://dev.classmethod.jp/category/cloud/aws/)が一番役に立ちました。

### 7. 上記5,6を繰り返し
本書はサンプル問題も豊富なので、あれこれ手を出すより繰り返しやりこむ方がいいと思います。

## 馴染み深いサービスについてもアップデートを中心にキャッチアップしておく
EC2やS3など、普段の業務で馴染みのあるサービスについては当然理解度は深いのですが、すべての機能を業務で活用しているとは限りません。代表的なサービスのアップデート情報や、あまり利用したことのない機能についてはキャッチアップしておきましょう。

私の場合、下記などでした。

- VPC
    - IPアドレス範囲の拡張
    - Egress-Onlyインターネットゲートウェイ
- S3
    - 各ストレージクラスの特徴、コスト
- EC2
    - Dedicated Hosts,Dedicated Instanceの違い
    - プレイスメントグループ
- Route53
    - Route53 Resolver

## AWS以外のインフラ知識も必要
特にネットワークの基礎知識は必須だと思います。ルーティングなどの基本は押さえておきましょう。
オンプレの経験があれば活かせるでしょう。

## AWS公式の模擬試験について
Web上では必須という意見が大半ですが、私のように対策本中心で勉強するなら、個人的には必須とは思いません。
私の場合、以前取得したSAAの特典の無料クーポンがあったので受験しましたが、本番まで時間がなかったので復習に十分な時間が取れず、活用できませんでした。

受験する場合、解答しつつ問題と選択肢を保存しておき、あとで復習できるようにしましょう。
結果は分野ごとの正答率しか出ないので、あまり参考にならないのですが。。。

# 試験当日のポイント
## 試験開始までの流れについては理解しておく
テストセンターでの受験が初めての場合、事前に調べておきましょう。用意すべき身分証明書など。
https://app.getpocket.com/read/2811015490

## 問題や選択肢が怪しい日本語だったら英語の原文を確認する
AWS試験について、日本語訳が怪しいというのはよく言われますが（typoもあります）、個人的にはIAMに関する問題については英語の原文も合わせて確認した方がいいと思います（確認できるボタンがある）。
`Role`が `役割`と訳されていた場合、そのユーザの職務上の`役割`なのか`IAMロール`のことなのか分かりづらいケースがありました。

## 消去法で選択肢を絞り込む
AWSの試験なので、基本的にAWSのサービスを活用するのがベストプラクティスのはずです。サードパーティのソリューションなどの選択肢は除外できる場合がほとんどだと思います。

## 複数選択の問題
複数の選択肢を選ぶ必要がある問題については、類似の選択肢をグルーピングできる場合、それらから一つずつ正しい選択肢を選ぶようにすればいいはずです（選択すべき数にもよりますが）。

## 見直しは必ずやる
ちょっとでも選択に迷う問題は見直しフラグをつけておいて後で見直しましょう。
私の場合、どんどん解いていくと30分以上余りましたので、その時間を使って見直しをしました。選択肢を選びなおして正解になったケースもあったと思います。

# 受験してみての所感

- 業務でのAWS利用経験がないとつらい
    - すべてのサービスについて利用経験がある必要はないですし、無理だと思いますが、AWSの利用経験がまったくないと、問題で問われているアーキテクチャをイメージしづらいと思います。また、トラブルシューティング的な問題もあるので、AWS経験は必須と言えます。
- AWS以外のインフラ知識は必要
    - 特にネットワークの知識は必要だと感じました。ルーティングやVPNなど。Direct Connectなどの問題に絡んできます。
- ホワイトペーパー読むより問題演習が重要
    - 知識のインプットより、長い問題文などの出題パターンに慣れておく方が重要だと感じました。
- 主要サービスのアップデートはキャッチアップしておく
    - 最新のアップデートは出題されないと思いますが、改めて主要サービスのBlackbeltなどを確認しておきましょう。ここでもクラスメソッドさんのアップデート系の記事が参考になります。


# 参考にしたリソース
## AWS公式トレーニング
https://www.aws.training/Details/eLearning?id=42403
無料なので、レベル感を掴むためにもやっておいたほうがいいです。

## AWSサービス別資料
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/

## AWS エバンジェリストシリーズ　AWSの基礎を学ぼう(connpass)
https://awsbasics.connpass.com/
AWSの方が、45分で各サービスの概要を解説しているセミナーです。受験に関係なく大変参考になります。

## ブログなど
### AWS Organizations
https://dev.classmethod.jp/articles/organizations-gettingstarted/
https://blog.serverworks.co.jp/tech/2020/02/29/organizations_cloudtrail/

### S3
https://dev.classmethod.jp/articles/introduction-to-new-s3-storage-class-standard-ia/

### EC2
https://dev.classmethod.jp/articles/ec2-spot-block/
https://dev.classmethod.jp/articles/ec2-placement-group-strategy/

### AutoScaling
https://stay-ko.be/aws/solutionarchitect-pro-aws-autoscaling
http://blog.father.gedow.net/2019/02/05/aws-auto-scaling-2019/

### Amazon DynamoDB
https://dev.classmethod.jp/articles/amazon-dynamodb-auto-scaling/

### AWS Snowファミリー
https://aws.amazon.com/jp/snow/

### VPC
https://dev.classmethod.jp/articles/vpc-endpoint-gateway-type/
https://dev.classmethod.jp/articles/expanding-vpc-cidr/
https://dev.classmethod.jp/articles/use-both-eigw-and-igw-on-vpc/
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/egress-only-internet-gateway.html
http://yamaneko927.hatenablog.com/entry/2019/11/14/194338
https://aws.amazon.com/jp/blogs/news/new-vpc-traffic-mirroring/

### AWS Direct Connect
https://dev.classmethod.jp/articles/direct-connect-gateway/
https://blog.serverworks.co.jp/tech/2018/12/11/concepts-of-direct-connect/
https://qiita.com/fjisdahgaiuerua/items/17a2a7355497565b0478

### AWS Service Catalog
https://dev.classmethod.jp/articles/aws-service-catalog/

### AWS CloudFormation
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/best-practices.html

### Amazon ElastiCache
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/mem-ug/SelectEngine.html

### AD連携
https://aws.amazon.com/jp/premiumsupport/knowledge-center/enable-active-directory-console-access/

### Amazon API Gateway
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html
https://qiita.com/nh321/items/013cfac2a85548766601

### CodeDeployによるLambdaデプロイ
https://docs.aws.amazon.com/ja_jp/codestar/latest/userguide/how-to-modify-serverless-project.html

### Amazon RDS on VMware
https://www.acrovision.jp/service/aws/?p=2301

### AWS Config
https://dev.classmethod.jp/articles/automate-aws-config-remediation-action/
https://dev.classmethod.jp/articles/aws-config-start/

### AWS CloudTrail
https://dev.classmethod.jp/articles/cloudtrail-insights-unusual-activity-alert/
https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/creating-trail-organization.html