AWS SysOpsアドミニストレータアソシエイト と デベロッパーアソシエイト を受けてきました＆勉強法

AWS認定試験の SysOpsアドミニストレータアソシエイト（SOA）、デベロッパーアソシエイト (DVA)を一日で取ってきました。今回はあまり勉強しませんでしたが、やったことをメモします。

# 📝 まとめ
- 試験概要を読んだ
- 模擬試験をやった
- わからなかったところを調べた
- よくある質問を読んだ
- 受けた
- 受かった
- 渋谷の試験センターはやめておけ

# 📝 勉強法
## 👀 試験の概要を一応確認
### [AWS 認定 SysOps アドミニストレーター – アソシエイト](https://aws.amazon.com/jp/certification/certified-sysops-admin-associate/)

> AWS 認定システムオペレーション（SysOps）アドミニストレーター – アソシエイト試験は、AWS プラットフォームでのデプロイ、管理および運用における技術的な専門知識を認定します。この試験では以下について理解していることが求められます。
> ・AWS におけるスケーラビリティ、高可用性および高耐障害性システムのデプロイ、管理および運用
> ・既存のオンプレミスアプリケーションの AWS への移行
> ・AWS との間のデータフローの導入と制御
> ・コンピューティング、データまたはセキュリティ要件に基づく適切な AWS の各種サービスの選択
> ・AWS 運用のベストプラクティスの適切な使用の識別
> ・AWS の使用コストの予測と運用コストコントロールメカニズムの識別

### [AWS 認定デベロッパー – アソシエイト](https://aws.amazon.com/jp/certification/certified-developer-associate/)
> AWS 認定デベロッパー – アソシエイト試験は AWS プラットフォームでのアプリケーションの開発と保守についての技術的な専門知識を認定します。この試験では以下について理解していることが求められます。
> ・アプリケーションについて適切な AWS サービスを選択する
> ・アプリケーションと AWS サービスが相互にやり取りするための AWS SDK を取得する
> ・アプリケーションによって使用される AWS サービスのパフォーマンスを最適化するためのコードを記述する
> ・コードレベルのアプリケーションのセキュリティ（IAM ロール、認証情報、暗号化など）

## 💪 サンプル問題を実施
### SysOps
ほとんど正解できました。ソリューションアーキテクト・アソシエイトと範囲が重複している感じがしましたが、方向性的には セキュリティ／コンプラ／ガバナンス／モニタリング の色味が強い感覚です。
サービスとしては S3/EC2/ELB/VPC/ELB/Route53/IAM 等が出てくるようです。

### Developer
SQS/SES/SNS/CouudFormation/DynamoDB など、開発系のサービスが多く出てきて、個人的に使ったことがないものが多かったため覚えることが多そうだと思いました。
SQSの配信順序や[ロングポーリング](https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html) のユースケースを覚えたり、DynamoDBは、[条件付き書き込み](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.ConditionalUpdate) による一貫性担保など、一般的な NoSQL の特徴等を抑えておけばいけそうだと感じました。

## 💪 模擬試験を実施
### SysOps
8 割くらい正解できました。回答は出てきませんが、わからなかった問題と解法は調べて以下にメモします。

- ELBは[メトリクス](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/classic/elb-cloudwatch-metrics.html#loadbalancing-metrics-clb)で `平均レイテンシ` を取得可能
- ディスクスペースの使用状況 は[カスタムメトリクス](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html)として収集
- [プライベートホストゾーン](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/hosted-zones-private.html) でVPC内に Route53 サービスを展開可能
- セキュリティ、IAM、暗号化 あたりは大丈夫でした

### Developer
7 割くらい正解できました。回答は出てきませんが、わからなかった問題と解法は調べて以下にメモします。

- [OpsWorks](https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/welcome.html) は Chef/Puppet による構成管理をマネージド化する構成管理サービス
- DynamoDB　の[容量ユニット計算](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html) は読込=4KB/1秒/2回、書込=1KB/1秒/1回 で計算
- [SWF](https://docs.aws.amazon.com/ja_jp/sdk-for-java/v1/developer-guide/swf-hello.html) の構成要素は、ドメイン、ワークフロー、ワークフローワーカー、アクティビティ、アクティビティ・ワーカー、タスクリスト、ワークフロースターター
- DynamoDB は[マネジメントコンソールからクエリを投げ](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SampleData.Query.html)ることができる
- Dynamo、SWF、SQSあたりで苦戦しました

## 💪よくある質問をよく読む
AWS試験は、よくある質問をよく読めば、よく受かります。

### SysOps
ElasticBeanstalkやCloudFormation等、ソリューションアーキテクトで出てこないも勉強の必要がありました。

- [よくある質問 - AWS Elastic Beanstalk | AWS](https://aws.amazon.com/jp/elasticbeanstalk/faqs/)
- [よくある質問 - AWS CloudFormation | AWS](https://aws.amazon.com/jp/cloudformation/faqs/)
- [よくある質問 - AWS OpsWorks for Chef Automate | AWS](https://aws.amazon.com/jp/opsworks/chefautomate/faqs/)
- [AWS Systems Manager のよくある質問 – アマゾン ウェブ サービス (AWS)](https://aws.amazon.com/jp/systems-manager/faq/)

### Developer
開発系サービスは利用したものがないことが多く、読むべきものがたくさん有りました。

- [よくある質問 - Amazon Simple Queue Service（SQS） | AWS](https://aws.amazon.com/jp/sqs/faqs/)
- [よくある質問 - Amazon DynamoDB（NoSQLデータベース）｜AWS](https://aws.amazon.com/jp/dynamodb/faqs/)
- [よくある質問 - Amazon SES（Amazon Simple Email Service）| AWS](https://aws.amazon.com/jp/ses/faqs/)
- [よくある質問 - AWS CodeDeploy | AWS](https://aws.amazon.com/jp/codedeploy/faqs/)
- [よくある質問 - AWS CodeBuild | AWS](https://aws.amazon.com/jp/codebuild/faqs/)
- [よくある質問 - Amazon CodeCommit | AWS](https://aws.amazon.com/jp/codecommit/faqs/)


# 🎉 本試験結果
同日に2つ受験し、無事合格しました。

## SysOps
> 総合評点： 83%
> トピックレベルスコアリング：
> 1.0  Monitoring and Metrics: 62%
> 2.0  High Availability: 87%
> 3.0  Analysis: 88%
> 4.0  Deployment and Provisioning: 75%
> 5.0  Data Management: 100%
> 6.0  Security: 87%
> 7.0  Networking: 85%

## Developer
> 総合評点： 74%
> トピックレベルスコアリング：
> 1.0  AWS Fundamentals: 66%
> 2.0  Designing and Developing: 72%
> 3.0  Deployment and Security: 68%
> 4.0  Debugging: 90%


# 📝 勉強が足りなかったところ
以下、頭に入れておけばよかったな、と思ったところをメモしておきます。

## SysOps
- [S3もキーバリューストア](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingObjects.html) の一種
- [Beanstalkでデプロイできる](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/php-ha-tutorial.html#php-hawrds-tutorial-create) のはEC2,AutoScaling,RDS,S3,CloudwatchAlerm くらいで、CloudFrontとかDynamoDBは[統合できてない](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.html) 、言語は `Java/PHP/.NET/Node.js/Python/Ruby` が使える
- [CloudFormationの文法の細かいところ](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html) まで覚えておく
- バケットの[S3エンドポイント名](https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/vpc-endpoints-s3.html) は`mybucket.s3-us-west-2.amazonaws.com（例）` になる
- Ajaxとかでクロスドメインなアクセス許可をS3に与える場合、[S3 CORS設定](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/cors.html) が必要
- 静的Webのホスティング時には [S3 インデックスドキュメント](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/HostingWebsiteOnS3Setup.html) の設定で `index.html` を別のオブジェクト名に設定可能

## Developer
- [DynamoDBのユニット計算](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html) はやっぱり覚えれられない
- [DynamoDBの制限事項](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Limits.html) の一部、アカウントあたりのテーブル数や最大書き込みキャパシティーは制限緩和申請できる
- [DynamoDBのコンポーネント](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html) にはにはプライマリキー（パーティションキー/複合プライマリキー）とセカンダリインデックス があり、それぞれの特性を覚えておく
- [SNS](https://aws.amazon.com/jp/sns/faqs/) 配信プロトコルは `HTTP/HTTPS/Email/Email-JSON/SQS/SMS` が使える

# 💧 PSIの試験システムはひどかった
ウワサ通り、PSIになってから酷いです。なんかPSIのテストを受けてるのか、デバッグに付き合ってるのかよくわからない気持ちになりつつ、だいぶ無駄な時間を過ごしました。

- 免許証をスキャンするデバイスがあるが、動作せず、サポートが対応（15分)
- クレジットカード両面をWebカメラに提示する必要があるが、動作せず、サポートが対応（15分)
- ネットワーク不調のせいか、問題が読み込まれず、サポートが対応×4回（15分×4回)
- ネットワーク不調のせいか、問題が中断され、サポートが対応（OS再起動）（30分)
- そんなこんなしてる間に、次の予約した方が来て（私はまだテストしてるので）玉突き事故
- お隣のブースでもおんなじ事態で2時間押し

こんなんで勝手に当日キャンセルされ、再度受けてね、っていう謎メールが届くのが日常茶飯事なようです。せめて免許書スキャンが必要なところ（SUCCESS SPACE渋谷とか）は避けて、ないところ（歌舞伎座タワーとか）を選びましょう。

# 🌈 感想
あとはDevOpsエンジニアPro、Security-Specialityが残っています、がんばります。
渋谷はもう行かない。