AWS Specialty (MLS, SCS, DAS) 受験記

# バックグラウンド
文系プログラマとして3年くらいの経験。応用情報程度の知識あり。
SageMakerを使ってポチポチと少しだけ触るような経験を半年未満程。
AWSをがっつりと触るような機会はありませんでした。
先輩社員に「ログインをした後にロールを切り替える意味が分からないのですが…」と教えを乞うてもちんぷんかんぷん、ヤキモキしたため、いったん自力で勉強するっきゃねえとCLF取得。

https://qiita.com/Kofuji/items/0d91ddb6b41407307d5c

少し調べると、CLFの次はSAAを取る方が多い様子。
しかし一か月ほどSAAの勉強を継続するものの、一向に頭に入らない。
広大な範囲を漠然と覚えるというような印象の勉強にどうにも耐えられない。
「specialtyであれば範囲が狭められ、理解も深まるのでは？」と思い受験を決めました。

# スケジュール

| 開始 | 終了 | 資格 | 合否|スコア|所感|
|:-:|:-:|:-:|:-:|:-:|:-|
| 4/21 | 4/23 | CLF | 合格 |769|easy|
| 5/1  | 5/31 | SAA | 断念 ||
| 6/1  | 6/4  | MLS | 合格 |792|機械学習周りの知識は業務で多少学んでいたということもあり、かつ他資格に比べAWSサービスのことが少なく簡単だった。|
| 6/4  | 6/25 | SCS | 合格 |778|少してこずった。が、AWSがどのように権限付与設定をしてほしいのかを考えたらギリ合格できた。|
| 7/1  | 7/26 | DAS | 合格 |778|試験終了のボタンを押すとき一番不安だった。SCSが少し役立った。いまだにAWSの思考があまりわかっていない…|

決して余裕のある点数ではありませんが、幸運なことに受験したものはすべて1発合格することができました。
SAAは無理だ…と思い断念。いまだに受験したとて落ちてそうな気がします。→無事合格しました

### 「このスケジュールよかったの？」という疑問
個人的には良かったです。
大きく分けて2つの理由があります。

0. 一つ一つの資格はそれぞれ1か月未満の勉強時間であったが、結果として4月後半～7月後半までAWS周りの勉強を集中して取り組めたという点に価値があった
0. koiwaの問題集(後述)の有効期限3か月間をフルに利用できた。
    欲張ってプロフェッショナルコースを契約してしまったがためにspecialtyを勉強したという側面もあります


specialtyを1か月勉強して取得するというのは比較的容易だとは思いますが、各資格の勉強時間というよりAWSという概念を学ぶという視点ではある程度まとまった学習期間を設けて取り組むことをお勧めしたいです。

#### おすすめをしたい層
AWSに熟達している人ではなく、かつ、CLFの次にSAAで挫折した人。
広大な範囲よりテーマが決まっていたほうが学習をしやすい人。

# 学習方法
問題集をひたすら解き、受験前日にExam Readinessを視聴しました。
前提知識がなかろうと問題集を解き始めます。
活用した問題集と進め方は以下の通りです。

### koiwaのWEB問題集

https://aws.koiwaclub.com/

上記のWEB問題集をフル活用しました。
この問題集での学習が9割といっても過言ではありません。
specialtyを含むコースであれば3か月で5480円(2022/7/30現在)

問題集を解く→知らない知識があればA4紙1枚(1資格あたり1枚)にまとめて追記していく
これを全体の正答率が80%になるまで繰り返しました（私の場合は4週実施)

- 問題集の解き方
    - 1週目は何もわからないので、適当に選択して解説を読む
        - 変に悩んで勘で当たると、知識の漏れにつながるので明確な判断基準がなかったらあえて間違ってそうなものを選んだり適当に選択して解説を確認
        - 明確な判断基準は自分基準でOK (例：リアルタイムならKinesis でしょ！)
            - そのうち自分基準で選んでいて合致しないものが出てきたりするので、そのタイミングで知識をアップデートする (例：Kinesis Data Firehoseじゃ間に合わないケースもあるのか…etc)
    - 2週目はある程度自分なりの判断基準をもって選択をする。
        - 正解した場合：不安があれば解説確認
        - 不正解の場合：「自分が選んだ選択肢がなぜ間違っているのか」と「正答が何かとその理由」を確認する。知識不足があればA4紙のメモに追記していく。
    - 3週目以降も8割くらい定着する or 自分が納得するまで正解した問題も含めて解きなおす。
        - 知識が正しく定着していないと、以前の自分基準で選んだ選択肢と現在の自分基準で選んだ選択肢が異なっていたりするため。
        - 何度も繰り返すとある程度正しい形に収束する（感じがする）

- 問題を解くときに気にするワード
    - コストへの言及があるか
    - 手動　⇔　自動　の言及があるか
    - 最速　等の文言が含まれるか
    - 運用コスト・手間とかの視点が必要か


### (DASのみ)Kindle Unlimitedの活用
「1週間で攻略！AWS認定データ分析 – 専門知識 本番用問題集」から100問程度実施
たまたまこの問題集がKindle Unlimitedで読めたから選んだという理由ですが、ある程度知識の補強はできたように思います。

https://www.amazon.co.jp/dp/B09HH9WQ2Q/ref=cm_sw_r_tw_dp_2SK5A34P5Q20YGTGPWBF

### AWS 認定試験 : Exam Readiness（試験準備コース）
私は各試験の受験前日に視聴してました。
が、koiwaの問題集を2週程度終わったら知識の整理として視聴してもよいかもしれません。
いらないという人もいますが、以下の理由で視聴の価値はあるかなと思います。

- (理由は言及しませんが)Exam Readinessの問題は解いておいたほうが良い
- 市販の問題集だと表記が古かったりするケースがあることに気付ける
- ものの考え方としての概念的な部分のフォローができる

# 資格に見合う実力はついたのか
正直なところ分かりませんが、少なくとも新人の人に「ログインをした後にロールを切り替える意味が分からないのですが…」と聞かれたら答えられる程度にはなりました。
その他はざっくり以下のような感想です

- サービス名を聞いて用途をイメージすることができるようになった
- 終始問題集で取り組んでいるため実際の動作イメージ等はつかめていない
    - しかし網羅的に操作の経験があったところで然程活用の場がなさそう
- 自分が触ったことのあるサービスに関しては理解が深まった

# 最後に
今回の学習を通じてほんの少しAWSへの理解も深まったように思います。
AWS構文に少し抵抗が減ったのもよかったです。
なんだか最近AWSではなくGCPを使うような気配がちらつき始めていて複雑な気持ちですが、SAAはどこかでリベンジしたいです。

## 追記
アソシエイトの勉強はじめました。
業務状況等も相まってモチベ維持が難しくだらだら勉強してますが、基本的に上記の学習法通りで合格できています。

| 開始 | 終了 | 資格 | 合否|スコア|所感|
|:-:|:-:|:-:|:-:|:-:|:-|
| 10/29  | 11/6 | SAA| 不合格 |682|飲み会で先輩が簡単といっていたのでとりあえず受けてみたらやっぱり落ちた|
|   | 11/26 | SAA| 合格 |777|とりあえず落ちたままはよくないな～と思い再受験。久しぶりに定価で受験して萎えた|
| 1/6  | 1/28 | DVA | 合格 |771|公式の模擬試験50%くらいしか取れなかったけど、techstockでの正答率が8割超えてたからいけるかな…と思い挑戦。その場で試験結果がわからなくなったのが非常にストレス。|

### おまけ:A4メモに何を書いていたのか
情報として正しくない可能性があるため、こんな感じでメモを取っていた・という理解にとどめていただければ幸いです。
- MLS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409578/a25b3b14-662d-968a-918d-e205d3b0cbd5.png)


- SCS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409578/5a744b0c-8e57-3a43-985c-ac3996a03591.png)


- DAS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409578/0b127265-a6de-596a-613f-56e05b1e6e1d.png)
DASだけ途中でテキストメモも使用していたので参考までに…(迷走していた)

- Athena
   - 閾値を超えるクエリのキャンセル:ワークグループごとに制御制限設定が可能
   - [Top 10 Performance tuning Tips for Athena]( https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/)
      - パーティションを使う
      - バケットの分割
      - 圧縮する(bzip2, snappy)
      - ファイルサイズの最適化：より大きくするもそう。細切れだとよくない。
         - S3DistCP on EMR: 小さいファイルをまとめる
         - Parquetファイルの連結をサポートしていないので、PySparkを使用すること
      - カラムの最適化
      - クエリチューニング
         - 最適化"Orde by"　"JOIN"　"Group by"
         - 近似関数を使用する
         - 必要なカラムに絞る
      - S3 Select > Athenaって感じ（サブセットとか使うならこのほうがコスパ◎）
- Kinesis
   - Kinesis Data __Firehose__ :S3, Redshift, Elasticsearch Service, 一般的 な HTTP エンド ポイントなど。ちょっとだけ遅い(30秒以内とかは無理)
   - Kinesis Data __Streams__ : __Lambda,  Kinesis Data Analytics, Kinesis Client Library(KCL)__ を使用するEC2でホストされるアプリケーションのみ
       - KCLではユーザーに代わってDynamoDBテーブルを作成する
       - Kinesis Data Firehose でデータを取り込んだ後、Amazon Kinesis Data Analytics だとほぼリアルタイム
- Redshift
   - Redshift Spectrumは、Amazon S3を連携し、Redshift側でのスケールアウトが不要になるため、コストを抑制する
   - Amazon Redshiftはキャリッジリターンを行終端記号として認識しない
   - ノード
      - ストレージノード: バックアップアーカイブの専用ストレージとなる場所（管理対象の格納域）を管理
      - コンピュートノード: インスタンスを動作させるためのプロセッシング、メモリ、ネットワーク、ストレージの各リソースを提供。
   - 何かとワークロード管理は出る(WLM)※Athenaにはない!!!!
   - ディメンジョンテーブルとファクトテーブルのDISTKEYが類似している必要がある
   - バキュームパフォーマンスが遅くなるケース:ソートされてない、列数が大きすぎる、DDLなど
   - ファイル数がスライスの倍数だと◎
   - COPYはデータソースからのコピー＝読み込み
   - UNLOADはS3へ保存, 監査ログもS3へ保存
   - 分散
       - KEY 複数の一致する値
       - EVEN 結合に関与してないか、どっちがいいのって時
       - ALL デカいデータ
- App Flow (SalesForce-Redshift)
- Lake Formation
   - S3のパスの場所を指定する
   - Parquetに変換されていたらブループリントはいらない
   - アクセス許可もいける
- QuickSight
   - 機械学習による異常検知も可能
   - 大体何でもつながる
   - が、リアルタイムではない
   - S3でParquet形式のデータソースを直接サポートしていない
   - Enterprise版では、行レベルのセキュリティ設定ができる
   - 別のリージョンでもアクセスできる
- Glue
   - 増分データ処理:ジョブのブックマーク
   - 手動でtableを作成する: Glue API CreateTableを使用して __新規に__ テーブルを作成する
   - コスパ◎
   - 小さいファイルをたくさん処理するときは'groupGiles':'inPaetition'を使う
   - 0.0以上の確実性を返す分類器が見つからないとき[UNKNOWN]を返す
- ES
   - EC2でもできるが、Kibanaとの組み合わせが◎
   - バッファ間隔:60~900秒
- MSK
   - Migration Apache Kafka cluster, もしくはKinesisで扱えない大きいデータ（Kinesisは最大1MBまで）
   - Kafka ACLなるものがあるので、アクセス定義はこちらで。
- EMR or Glue
  - Glue: サーバーレス; 従量課金; クローラーが使える, python or scaraのコードの自動生成
  - EMR: ビッグデータプラットフォーム; EC2クラスタを構成するための管理システム
     - 自動スケーリングによく使われる指標
     - YarnMemoryAvailablePercentage; YARNが使用できる残りのメモリの割合
     - ContainerPendingRatio; 保留中のコンテナと割り当てられたコンテナの比率
     - 「パブリックアクセスをブロックする」という設定がある
     - EMR APIを使用して自動終了を無効にする場合は、クラスタを作成するためにRunJobFlowアクションを使用しているときにKeepJobFlowAliveWhenNoStepsプロパティをtrueに設定する必要があります。
     - 暗号化にはLUKS, SSE-S3
         - EMRで暗号化の情報を保存＆上書きできる
     - [透過的なデータ暗号化]によって、転送中と保存中の暗号化を設定することができる
  - コスト・機能の両面でGlue<EMR