AWS Cloud Quest: Solutions Architect　をクリアしました



## AWS Cloud Quest とは

AWS Cloud Quest の公式ページから引用します。[1]

> AWS Cloud Quest は、実用的な AWS Cloud スキルを身につけるための唯一の3D ロールプレイングゲームです。ロール (クラウドプラクティショナー、サーバーレスデベロッパー、ソリューションアーキテクト、機械学習スペシャリスト、セキュリティスペシャリスト、またはデータ分析スペシャリスト) を選択し、クラウドスキルを学習して応用し、仮想都市の市民を助けましょう。


AWS Cloud Quest には、「クラウドプラクティショナー」「ソリューションアーキテクト」「サーバーレスデベロッパー」「機械学習」「セキュリティ」「データ分析」「ネットワーク」の 7 つのロールがありますが、現時点 (2024/04/17) で日本語化されているのは以下の 2 つです。
- クラウドプラクティショナー
- ソリューションアーキテクト

「ソリューションアーキテクト」ロールは 2024 年 3 月に日本語化されました！ [2]


## 無料トライアル期間あり
「クラウドプラクティショナー」以外のロールは有料です。AWS Skill Builder のサブスクリプションに申し込む必要があります。 [3] 
ただ、現時点 (2024/04/17) では`7 日間の無料トライアル`を実施しています。その期間内でのクリアを目指すのもアリですね。
サブスクリプションは申し込み直後に解約しても期間内は利用可能な様です。


## デジタルバッジを取得できる

ロール内のすべての課題をクリアすると、AWS 認定試験と同様にデジタルバッジを取得することが出来ます。

![badge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3309107/e941e97d-c266-5ab3-d2a7-b37bb0bc26d9.png)


## 課題リスト

- 「ソリューションアーキテクト」ロールでは 13 の課題が用意されています
- 「プラクティショナー」ロールを未実施の方は、別途、12 の課題をクリアする必要があります [4]
- 一部が未翻訳な部分もありますが、そのまま記載しました
- 下記の順番でクリアする必要はありません


| |課題|実践ラボの目標|DIY|
|:----|:----|:----|:----|
|1|DNS|・ VPC 内部のドメイン名を提供するようにローカルホストゾーンを設定する|・ database.internal.news.org の CNAME レコードを作成する <br> ・ 新しい CNAME レコードが thewhitepaper.internal.news.org を指すようにする|
|2|RESTful API のデプロイ|・ API Gateway REST API を作成する <br> ・ REST API をデプロイする <br> ・ API Gateway プロキシ統合を使用して AWS Lambda 関数を呼び出す|・ サンプル vehicles_function.py ファイルを使用して、新しい Lambda 関数を作成する <br> ・ 国内用の新しい API Gateway エンドポイントを作成し、それを新しい Lambda 関数と統合する|
|3|CloudFormation による自動化|・ AWS CloudFormation の基本的な YAML テンプレートを読む <br> ・ 基本的な CloudFormation テンプレートを作成してデプロイする|・ CloudFormation テンプレートを変更して、EC2 インスタンスタイプ t2.small を起動する <br> ・ 変更した CloudFormation テンプレートを使用して新しいスタックを作成する|
|4|API とデータベース|・ Amazon DynamoDB テーブルを作成する <br> テーブルスキーマを定義する <br> ・ テーブルへ書き込み、更新、クエリする AWS Lambda 関数を作成する <br> ・ Amazon API Gateway の RESTful API を Lambda 関数に公開する|・ プライマリパーティションキーである id (文字列) を使用して、vehicles という名前の新しい DynamoDB テーブルを作成する <br> ・ vehicles テーブルを参照するように Lambda 関数を変更する <br> ・ vehicles 用の新しい API Gateway リソースを作成する <br> Lambda プロキシ統合を使用して POST メソッドを作成する <br> ・ API をデプロイする|
|5|ネットワークトラフィックの分析|・ Amazon S3 バケットに VPC フローログを設定する <br> ・ フローログを読み込んで分析する <br> ・ ネットワークアクセスコントロールリスト (ACL) のルールを作成し、トラフィックをコントロールする|・ ネットワーク ACL を使用して、アウトバウンドトラフィックを拒否する|
|6|データ取り込み方法|・ Create an Amazon Data Firehose delivery stream. <br> ・ Amazon S3 バケットにクリックストリームデータを取り込んで保存する <br> ・ AWS Lambda 関数を使用して、取り込んだデータを変換する <br> ・ AWS Glue と Amazon Athena を使用して、リアルタイムクエリを作成する|・ Edit the Amazon Data Firehose delivery stream lambda configuration to send real-time analytics to an Amazon DynamoDB table. <br> ・ S3 バケットのクリック変換し、バッファ間隔の設定を 60 秒に変更する|
|7|リソースモニタリング|・ Amazon EC2 インスタンスのデフォルトのモニタリングを調査する <br> ・ Amazon CloudWatch ダッシュボードを作成し、ウィジェットを追加する <br> ・ CPU 使用率に関する CloudWatch アラームを作成する <br> ・ Amazon SNS を使用して E メール通知を送信する CloudWatch アラームを作成する|・ メモリ使用率（mem_used）に関する CloudWatch ダッシュボードを追加する <br> ・ 5 億速超えるメモリ使用率（mem_used）に対して CloudWatch アラームを作成する <br> ・ アラームが触れ出された場合にアクションを設定する|
|8|データをバックアップする|・ カスタムバックアップポリシーを作成する <br> リソース ID を使って Amazon EBS ボリュームのオンデマンドバックアップを設定する <br> ・ タグを使用して、Amazon EC2にアタッチされた Amazon EBSボリュームの自動バックアッププランを作成する|・ デフォルトのバックアップポリシールールを使用して、Amazon Aurora Serverless クラスターの AWS Backup プランを設定する <br> ・ 「"Backup-DIY" = True」というタグを指定して、Amazon Aurora Serverless クラスターをリソースとして割り当てる|
|9|リソースガバナンス|・ S3 KMS 暗号化の AWS Config マネージメントルールを設定する <br> ・ タグ付きリソースの AWS Config マネージメントルールを設定する|・ S3 バケットのバージョニングが有効になっていること (s3-bucket-versioning-enabled) を確認するルールを追加します。 <br> ・ S3 バケット (config-bucket) に対してバージョニングを有効にする|
|10|コンテナサービス|アプリケーションの Docker イメージを作成する <br> ・ Amazon ECR リポジトリを作成し、そのリポジトリに Dockerイメージをプッシュする <br> Amazon ECR のイメージを使用して、Amazon ECS と AWSFargate でアプリケーションをデプロイする|・ Amazon ECR からのイメージを使用して、2 番目のアプリケーション (my_second_app) をFargate にデプロイする <br> ・ 2 番目のアプリケーションへのクセスを検証する|
|11|コンテンツ配信ネットワーク|・ Amazon CloudFront を使用してコンテンツ配信ネットワークを設定する <br> ・ Amazon EC2 インスタンスをCloudFront ディストリビューションのオリジンとして設定する <br> ・ Amazon S3 バケットするウェブサイトを CloudFront ディストリビューションのオリジンとして設定する|・ Amazon S3 のウェブサイトをオリジンとして使用し、index.htmlをメインページとするように、CloudFront ディストリビューションを再設定する|
|12|アプリケーションのデカップリング|・ Amazon SNS トピックを作成する <br> ・ Amazon SQS キューを作成する <br> ・ SQS キューを SNS トピックにサブスクライブする|・ 追加の SQS キューを作成し、既存の SNS トピックにサブスクライブする|
|13|生成 AI でのクラウドインフラストラクチャ|・ AWS CDK と Amazon　CodeWhisperer を使用してさまざまな AWS リソースを作成する <br> ・ AWS CDK と CodeWhisperer を使用してアプリケーションをデプロイする <br> ・ Application Load Balance を使用してアプリケーションをテストする|・ CDK アプリケーションコードを更新して、新しい Amazon EC2インスタンスを作成して割りアロケーションにデプロイする <br> ・ ロードバランサーで新しい EC2インスタンスを監視する <br> ・ アプリケーションをテストする|
|14|シングルページアプリケーション| ・ シングルページアプリケーションをホストするように Amazon S3 を設定する <br> ・ Amazon API Gateway 呼び出し URL を見つける <br> ・ API Gateway からのリソース接続のトラブルシューティングを行う <br> ・ Amazon CloudWatch Logs を使用して AWS Lambda 関数のトラブルシューティングを行う|・ CloudWatch Logs を使用して AWS Lambda 関数のトラブルシューティングを行う <br> ・ 車両アプリの`詳細`ボタンに車両の詳細が表示されることを確認する|


## 参考資料

[1] [AWS Cloud Quest | インタラクティブなロールプレイングゲーム | AWS](https://aws.amazon.com/jp/training/digital/aws-cloud-quest/)

[2] [ゲームベースで学習できる「AWS Cloud Quest: Solutions Architect」が日本語で学習可能になりました | Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/aws-cloud-quest-solutions-architect-jp-is-now-available/)

[3] [Home - Skill Builder](https://skillbuilder.aws/jp)

[4] [ゲームベースで学習できる「AWS Cloud Quest: Cloud Practitioner」が日本語で学習可能になりました | Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/aws-cloud-quest-jp-is-now-available/)