AWS認定ソリューションアーキテクト - プロフェッショナル更新時の記録

## この記事の概要

2024/01/07
**AWS認定ソリューションアーキテクト - プロフェッショナル**
(AWS Certified Solution Architect - Professional (SAP-C02))
を受験したので、その時の記録です。

**SAP-C01**の取得から約3年が経過したため、更新のために再受験しました。
https://qiita.com/aminosan000/items/f172b7add8303926bddc

2022/11/15にバージョンがC01からC02に上がったようです。

## 試験の概要

![aws_sap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/bf1a17ea-445d-cc49-5dd0-3470e691d1c7.png)

AWS認定の中で一番スタンダードな「ソリューションアーキテクト」の上位資格です。

AWSの公式ガイドには
- 「この試験では、AWS WellArchitected フレームワークに基づいて AWS ソリューションを設計し、最適化することを課題とし、受験者の高度な技術スキルと経験を検証します。」
- 「クラウドアプリケーションの要件を評価し、アプリケーションのデプロイについてアーキテクチャに関する提案を行う能力が求められます。また、複雑な組織内で複数のアプリケーションやプロジェクトにまたがるアーキテクチャを設計する際に、専門家としてガイダンスを提供できる能力も必要です。」

とあります。※AWS公式より引用：[引用元](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Exam-Guide.pdf)

システムに求められる要件に応じて、AWSを活用した、より良い設計や運用の提案、構築ができる「アーキテクト」に必要な知識を問われる試験です。

※今回の試験には関係ないですが「Data Analytics - Specialty(DAS)」はなくなって「Data Engineer - Associate」ができるみたいです。将来データエンジニア系のプロフェッショナル試験も増えるのかもしれません。

**◼︎ 試験要項**

問題数　　：75問 (うち10問は採点対象外)
試験時間　：180分
受験料　　：¥30,000 (税別)
合格ライン：100~1000点中750点 (約72%)
受験資格　：なし
有効期限　：3年

https://aws.amazon.com/jp/certification/policies/before-testing/

受験のための条件はないため、アソシエイトを飛ばしてプロフェッショナルの取得もできます。
ただ、下位資格を先に取得し、有効期間内に上位資格を取得すると下位資格も更新扱いになるため、資格を集めたい人は下から順に取得するとお得です。

:arrow_down: SAPに合格するとCLFとSAAも「再認定」になって

![update_aws_certification_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/5d242cb7-da4f-0982-28b3-9edb44904741.png)

:arrow_down: 3つとも期限が延びる！

![active_aws_certification.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/a7774840-d29b-5c69-bb93-bd5903648f92.png)


**◼︎ 出題範囲**

| 分野 | 出題割合 |
|:--|:--:|
| 第 1 分野: 複雑な組織に対応するソリューションの設計 | 26% |
| 第 2 分野: 新しいソリューションのための設計 | 29% |
| 第 3 分野: 既存のソリューションの継続的な改善 | 25% |
| 第 4 分野: ワークロードの移行とモダナイゼーションの加速 | 20% |

C01との大きな変更点として、第４分野だった「コスト管理」がなくなり、代わりに「複雑な組織に対応するソリューションの設計」の割合が上がっています。その他も分野の呼び方が変わったり少しずつ割合が変更されたりしています。

※**2024/01時点の最新バージョン**(Ver.1.1)のものです。
バージョンアップで範囲等は変更されるので、受験時は公式サイトで確認してください。
[AWS Certified Solutions Architect - Professional 認定](https://aws.amazon.com/jp/certification/certified-solutions-architect-professional/)

## 勉強開始前の状態

AWSで動いているアプリの開発/運用の業務を6年程度、現在も継続中。
AWS認定は昨年までに12個取得済み。前回のSAP(C01)受験から約3年。

- [AWS認定ソリューションアーキテクトを受験した時の話](https://qiita.com/aminosan000/items/24c6dff9532658a5c4d5)
- [AWS認定デベロッパーアソシエイトを受験した時の話](https://qiita.com/aminosan000/items/89bc76f77626314f3182)
- [AWS認定SysOpsアドミニストレーターアソシエイトを受験した時の話](https://qiita.com/aminosan000/items/b1765260e8ad1435a366)
- [AWS認定ソリューションアーキテクトプロフェッショナルを受験した時の話](https://qiita.com/aminosan000/items/f172b7add8303926bddc)
- [AWS認定DevOpsエンジニアプロフェッショナルを受験した時の話](https://qiita.com/aminosan000/items/ee2fe130bfca1164f4a5)
- [AWS認定セキュリティ - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/435fc411a4d10cf6ba43)
- [AWS認定データベース - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/1f2a8d5b7611a3d31247)
- [AWS認定アドバンストネットワーキング - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/dfea62d2c6cc2763d15c)
- [AWS認定データ分析 - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/307933b51494756386e8)
- [AWS認定機械学習 - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/7cd2059b8b731d030b99)
- [AWS認定SAP on AWS - 専門知識を受験した時の話](https://qiita.com/aminosan000/items/5d0abe5815a927406c62)

※CLFはあとから取得したので特に書くこともなく記事にしていません。

## 勉強に使ったもの

### 1. WEB問題集(非公式)

今回は更新なので、比較のためにもこれまでとは違う問題集を利用してみることにしました。

日本語のサイトの中で比較的評判が良さそうだったのと、無料テスト5問を試してみて解説の内容がわかりやすかったので「**CloudTech**」のサブスクに登録、「資格会員(問題集のみのプラン)」に割引クーポン適用で **4,680円/90日** でした。

https://kws-cloud-tech.com/

SAPの問題は**300問**

10問ずつの問題集が30個で、その300問の中から75問ランダム出題される**模擬試験モード**もあります。
ユーザごとの回答履歴を保持する機能はない(10問終わるたびに消える)のですが、代わりに会員ページに履歴を書き出すためのGoogleスプレッドシートのDLリンクがあります。


### 2. AWS公式模擬試験

**AWS Skill Builder**で**無料**で提供されている20問の模擬試験。**実試験に近い**内容が出題されるので今回も実施しておきます。

https://explore.skillbuilder.aws/learn/course/internal/view/elearning/13272/aws-certified-solutions-architect-professional-official-practice-question-set-sap-c02-japanese

[Exam Readiness(公式E-Leaning)](https://explore.skillbuilder.aws/learn/course/11229/Exam%2520Readiness%253A%2520AWS%2520Certified%2520Solutions%2520Architect%2520%25E2%2580%2593%2520Professional%2520%28Japanese%29%2520%28Na%29%2520%25E6%2597%25A5%25E6%259C%25AC%25E8%25AA%259E%25E5%25AE%259F%25E5%2586%2599%25E7%2589%2588)も受講しようかと思ったんですが、内容が**C01から変わっていなさそう**(分野がC01のままだった)ので今回は受講しませんでした。
※大まかな範囲は変わっていないので初めて受験する方はこちらも受講することをおすすめします。


### 3. AWSアカウント

触れたことがないサービスはとりあえず一度**実際にマネコンやCLIで触って**おきます。
SAPは特に範囲が広いので、すべての対象サービスを完全に理解するのは難しいですが、頻出系のメジャーサービスは**マネコンで管理画面やリソース作成画面を一度見ておく**だけでも回答のためのイメージをしやすくなったり、記憶から引き出しやすくなります。


## 勉強(試験準備)の流れ
### 1. 試験ガイドを読む

はじめに、公式サイトの[「**試験ガイド**」](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Exam-Guide.pdf)を読みます。今回は更新なので、ざっくり各分野の概要を確認。

C01と大きく変わっていないような？分野からなくなった「コスト管理」はいくつかの分野に散りばめられた感じですね。
今回もあまり実務で触ることのないハイブリッドアーキテクチャやクラウド移行、マルチリージョン、マルチアカウント、DR対策などをメインに勉強していきます。

「範囲内のサービス」にはたくさんのサービスが書かれていますが、実際はIoTやAIなどの**マイナーサービスの出題率は低い**です。「対象知識」に書かれているサービスを集中して理解しておけば十分でしょう。

### 2. サンプル問題と模試を実施する
次に、公式の[サンプル問題](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Sample-Questions.pdf)と[模擬試験](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/13272/aws-certified-solutions-architect-professional-official-practice-question-set-sap-c02-japanese)をやってみます。
**無料**なので気軽に実施できます。

今回はサンプル問題も模擬試験も70%の正解率でした。合格ラインに少し足りない…
例え実務でバリバリAWSを使っていても、3年前に一度合格していても、いきなり受けるとこれぐらいです。**試験対策**は必須ですね。

### 3. 問題集を解く
あとは問題をどんどん解いて

- 解答/解説でわからなかった部分を**調べる**。
- 覚えたほうが良さそうな部分は**ノートに書き出す**。

を繰り返します。

今回は300問を2周ずつのあとに模擬試験モード(ランダム出題75問)を実施しました。

### 4. 復習
最後に間違えやすかった問題の再確認と、気になったところのマネコンや公式ドキュメントでの確認をしました。

## 勉強時間
およそ**30時間**程度

## 受験後
結果はスコア**822**で合格。

問題を解き終わるまで120分程度、その後全問しっかり見直しして残り10分程で終了。
結構手応えはあったので900以上いくかなと思いましたが、思ったより伸びず。

![score_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/e03ee11b-4595-4313-40b6-ea376ad80cb2.png)

まぁ、前回の798より少し上がって、分野もバランスよく取れたので3年前よりは成長しているはず…！

![score_performance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/cd6ad979-8a90-ace6-5384-e7349e88f187.png)

※今回はその場で合否の表示はなく、帰宅後にCertMetricsを見たら反映されていました。

比較のためにWizlabsの問題も見てみましたが、CloudTechのほうが本番試験に近い内容に感じました。
少し割高ですが、次回からこっちを使うかもしれません。


## 勉強になったことメモ

試験のために勉強しながらまとめたノート
※ここに書いてあることは、あくまで私が理解が足りないと感じ、覚えたかったことだけです。試験範囲を網羅はしていません。
 
### AWS Transfer for Family
S3またはEFSとの間でファイル転送に使用できるフルマネージドサービス
以下の4つのプロトコルに対応している。

- セキュアシェル (SSH) ファイル転送プロトコル (SFTP): バージョン 3
- File Transfer Protocol Secure (FTPS)
- File Transfer Protocol (FTP)
- 適用性ステートメント 2 (AS2)

https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/how-aws-transfer-works.html

https://dev.classmethod.jp/articles/trasfer-for-sftp-endpoint-types-202004/

https://dev.classmethod.jp/articles/summary-point-aws-transfer-family-202307/

### Amazon FSx for Lustre

Lustre(ラスター)はオープンソースの分散ファイルシステム
EC2などから高速なストレージを必要とするアプリケーション向けのLustreを利用できるようにしてくれるフルマネージドサービス。
利用料は高価だが、HPC(ハイパフォーマンスクラスタ)などストレージI/Oにハイパフォーマンスを求められる場合に活用できる。

https://dev.classmethod.jp/articles/getting-started-with-amazon-fsx-for-lustre/

### VPCエンドポイントとPrivateLink

VPCエンドポイント、VPCエンドポイントサービス、PrivateLinkなど紛らわしいので覚える。
:arrow_down: のサイトでわかりやすくまとめてくれている。

https://dev.classmethod.jp/articles/aws-vpcendpoint-privatelink-beginner/

例えば、S3でPrivateLinkを使うことでClient VPNでVPCに接続している状態でのみアクセスできる内部HTTPS静的Webサイトを公開する事もできる。

https://aws.amazon.com/jp/blogs/news/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/

### VPCエンドポイントの種類

- ゲートウェイエンドポイント
- インターフェイスエンドポイント
- GetwayLoadBalancer

それぞれの特徴も紛らわしいので覚える。

| 種類 | 特徴 |
|:-|:-|
| ゲートウェイエンドポイント | ・S3,DynamoDBのみサポート<br>・VPN等からはアクセスできない<br>・PrivateLinkには利用できない |
| インターフェイスエンドポイント | ・DynamoDBは非対応、その他ほとんど対応<br>・VPNやDXからアクセスできる、 |
| GatewayLoadBalancer | リージョンをまたいでエンドポイントを提供する |

https://qiita.com/cloud-solution/items/bbeaa9a3cc9b958a24a7

https://talkeyboid.com/entry/2023/09/16/234901

### Cognito認証

Cognito認証を利用する場合、Cognitoのサービスプロバイダが生成したトークンをAPIが検証する必要がある。
トークンは**JWT形式**で渡される。

![Cognito_verify_token01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/2d1a7f2c-44b3-da53-f985-0ea228ae7848.png)

トークン検証はALBやAPI Gatewayに移譲することもできる。

![Cognito_verify_token02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/2e7ba2fe-c552-b2cb-d352-e18bfe54dc4f.png)

https://d1.awsstatic.com/webinars/jp/pdf/services/20200630_AWS_BlackBelt_Amazon%20Cognito.pdf

ALBのリスナーで検証を行った場合、配下のターゲットに対し**HTTPヘッダー**として**属性情報**が渡される。

https://dev.classmethod.jp/articles/http-headers-added-by-alb-and-cognito-are-explained/

### AWS WAFのレートベースルール

API Gatewayなどの公開APIに対して、ボットネットなどから大量リクエストが発生している場合には、WAFの**レートベースルール**で一定のレートを超過した**リクエストを制限**できる。

https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-rule-statement-type-rate-based.html

特定の条件に一致する場合のみカウントや、地理的一致との組み合わせもできる。
たとえば、国外からのアクセスで100/秒を超えたら制限する、など。

https://dev.classmethod.jp/articles/waf-rate-based-rules-request-headers/

### バーストパフォーマンスとクレジットバランス

**EC2/EBS/RDS**では一部のインスタンスタイプ/ストレージタイプで**バーストパフォーマンス**(ベースラインを超えた性能を出せる状態)に対応している。
バーストパフォーマンスは**クレジットバランス**(残高)を消費しきると終了し、ベースライン以下の状態が続くとクレジットバランスが回復していく。

インスタンスとストレージでそれぞれバースト機能がある。

- EC2/RDSインスタンスの場合は **CPU** 性能のバースト
- EBS/RDSストレージの場合は **I/O** 性能のバースト
- 
対象のインスタンスタイプ/ストレージタイプは以下

| タイプ | 対象 |
|:-:|:-:|
| EC2 | Tインスタンスファミリー<br>(T2, T3, T3a, T4g) |
| RDSインスタンス | Tインスタンスファミリー<br>(T2, T3, T4g) |
| EBS | 汎用SSD/スループット最適化HDD/Cold HDD<br>(gp2, gp3, st1, sc1) |
| RDSストレージ | 旧汎用SSD<br>(gp2) |

### S3 Intelligent-Tiering

S3 Intelligent-Tieringは**オブジェクト単位**でアクセス頻度をモニタリングし、アクセス頻度に応じた階層(3+2階層)に移動する。
※128KB未満のオブジェクトは移動されない。

一つのバケットの中でもオブジェクトごとにアクセス頻度が異なり、どのオブジェクトのアクセス頻度が高いか予想ができない場合などに利用するとコスト削減になる。

![スクリーンショット 2024-01-05 1.21.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/0cf11af1-98b3-c2a2-29dd-604624c4d514.png)

下に行くほど低コストになる

| 階層 | 説明 |
|:-:|:-:|
| 高頻度アクセス階層 | デフォルト |
| 低頻度アクセス階層 | 30日間アクセスのないオブジェクト |
| アーカイブインスタントアクセス階層 | 90日間アクセスのないオブジェクト<br>ここまではアクセス速度低下なし |
| アーカイブアクセス階層<br>（オプション） | 90~730日の間で設定した期間アクセスのないオブジェクト<br>この階層から下は有効/無効の設定ができる<br>S3 Glacier Flexible Retrieval相当のパフォーマンス |
| ディープアーカイブアクセス階層<br>（オプション） | 180~730日の間で設定した期間アクセスのないオブジェクト<br>S3 Glacier Deep Archive相当のパフォーマンス |

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/intelligent-tiering-overview.html

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-S3-CostOptimization_0602_v1.pdf

#### コスト最適化

モニタリングの追加コストにより、アクセス頻度によっては標準クラスより利用料が上がってしまうため、ある程度アクセスパターンの予測をして判断する。

https://zenn.dev/chonan_kai/articles/28911c85e05cfc

はじめの30日間は標準クラスのほうが利用料が安いため、30日後にIntelligent-Tieringに移行させるライフサイクルポリシーを定義するとより、コスト効率が上がる。
さらに、ファイルサイズ128KB以下は対象とならないため、除外するフィルタルールも設定してもいい。※モニタリング対象にもならない=料金も発生しないので気にしなくてもいいかも

https://techblog.locoguide.co.jp/entry/2023/05/15/153931

https://blog.serverworks.co.jp/s3-intelligent-tiering-for-cur

#### 耐久性と可用性

耐久性はストレージクラスによって変わることはない、イレブンナイン(99.9999999%)
可用性のSLAは標準クラス99.9%なのに対し、Intelligent-Tieringは99%となる。

https://zenn.dev/k_tana/articles/2023-07_aws-s3-storage-class

### Compute Savings Plans

1年または3年の期間で、一貫したコンピューティング使用量 (USD/時間で測定) を契約する代わりに、Amazon EC2、AWS Lambda、AWS Fargateの利用料金を削減できる。
RI(リザーブドインスタンス)と違いインスタンスタイプでの指定ができ、Lambda、Fargateにも適用される。

https://aws.amazon.com/jp/savingsplans/compute-pricing/

https://www.farend.co.jp/blog/2023/05/savingsplans/

### S3アクセスポイント

「S3アクセスポイント」は1つのバケットに複数作成できるオブジェクトへのアクセス専用のエンドポイント
エンドポイント単位でアクセス制限ができるため、利用者毎のアクセスポイントを作ることで単一のバケットポリシーよりも管理がしやすくなる。

https://dev.classmethod.jp/articles/explain-the-good-point-of-s3-access-points/

作成時にはVPC向けとインターネット向けのいずれかを選択する。

https://dev.classmethod.jp/articles/s3-access-restrict-2/

### Aurora ServerlessのData API

Aurora ServerlessにはDBコネクションを必要とせず、直接単一のクエリ結果を取得するAPIが用意されている。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/data-api.html

https://dev.classmethod.jp/articles/aurora_serverless_now_supportsdataapi/

### AWS Compute Optimizer

EC2やASGのコスト削減やパフォーマンス向上に関する推奨事項を生成できる。
有効化し、一定時間インスタンスやASGからのデータが集まると分析結果が表示される。
対象のサービスは以下。

- EC2
- ASG
- EBS
- ECS(Fargate)
- Lambda

EC2の場合、CloudWatchエージェントのインストールが必要。

https://dev.classmethod.jp/articles/aws-compute-optimizer-tokyo/

### AWS Compute Optimizer + Lambda
Compute Optimizerを有効化することで、Lambdaのメモリの過不足のレコメンデーションが見られる。

https://docs.aws.amazon.com/ja_jp/compute-optimizer/latest/ug/view-lambda-recommendations.html

https://dev.classmethod.jp/articles/aws-compute-optimizer-delivers-recommendations-aws-lambda-functions/

レコメンデーション対象の条件を満たした場合のみ表示される

- 設定されているメモリが 1,792 MB 以下であること
- 過去 14 日間に少なくとも 50 回呼び出されていること

https://docs.aws.amazon.com/ja_jp/compute-optimizer/latest/ug/requirements.html#requirements-lambda-functions

料金はほとんどかからない

https://aws.amazon.com/jp/compute-optimizer/pricing/

### AWS Strage Gatewayのタイプ

紛らわしいので一覧にする

| タイプ | プロトコル | 保存先 |
|:-:|:-:|:-:|
| S3ファイルゲートウェイ | NFS or SMB| S3 |
| FSxファイルゲートウェイ | SMB | Amazon FSx |
| テープゲートウェイ | iSCSIベース仮想テープライブラリ(VTL) | S3 |
| ボリュームゲートウェイ | iSCSI | EBSスナップショット |

https://aws.amazon.com/jp/storagegateway/features/?nc=sn&loc=2&dn=1

### AWS Cloud Adoption Readiness Tool(CART)

AWSが提供しているクラウド移行用ツール
質問に答えることで、クラウド導入の進捗状況と推奨事項のレポートが作成される。

https://cloudreadiness.amazonaws.com/#/cart

### AWS Elastic Disaster Recovery(DRS)

サーバのディスクイメージ全体をレプリケーションしておき、災害時に復元することでフェイルオーバーに利用できる。

https://blog.serverworks.co.jp/2023/10/12/104232