yuj1osm's tech blog

クラウド、セキュリティ、AIなど

Amazon Q CLIを使ってAWSセキュリティを楽しく学べるアクションゲームを作ってみた

Amazon Q CLIをに関する面白いキャンペーンがありました。
Amazon Q CLIでゲームを作って、ブログか動画を公開すると限定Tシャツがもらえるようなので、さっそく試してみました。

AWS | Community | Build Games with Amazon Q CLI and score a T shirt 🏆👕

Discordで他のビルダーとの交流やサポートを受けることができるので、こちらも興味があれば参加してみましょう。

discord.gg

環境準備

AWS Builder IDを作成します。

community.aws

Amazon Q CLIをインストールします。
OSに応じた手順があるので参考にしましょう。

Linux

community.aws

Windows

community.aws

今回はWindowsのWSL環境を使いました。
手順を進めていくと、インストーラーの実行ができます。

./install.sh

インストーラーの実行時、途中で質問があるので以下のように答えましょう。

  • シェル変数に追加してよいか → Yes
  • ログイン方法まどうするか → Use for Free with Builder ID
? Do you want q to modify your shell config (you will have to manually do this otherwise)? ›
❯ Yes
  No

? Select login method ›
❯ Use for Free with Builder ID
  Use with Pro license

Confirm the following code in the browser
Code: XXXX-XXXX

Open this URL: https://view.awsapps.com/start/#/device?user_code=XXXX-XXXX
▰▰▰▰▰▱▱ Logging in...

Device authorized
Logged in successfully

すると認証コード付きのURLが発行されるので、ブラウザで開き続行します。

Amazon Q Developer for command lineがデータにアクセスしてよいか聞かれるので、アクセスを許可します。

リクエストが承認されました。

WSLから以下のコマンドを実行すると、q cliが正常に起動することが確認できます。

q chat

続いて、ゲーム開発に必要なライブラリであるPyGameをインストールします。

www.pygame.org

sudo apt-get install python3-pygame

依存関係などでうまくいかないときは、Qに実施してもらうのも手です。

Amazon Q CLIでゲームを開発してみる

何を作ろうか迷ったときには、Qに考えてもらうとよいでしょう。

> pygameでゲームを作ります。AWSセキュリティを学べる簡単なゲーム案を考えてください。
AWSセキュリティを学べるPygameゲームの案を考えてみましょう。以下は「AWS Security Defender」というゲーム案です:

## AWS Security Defender

プレイヤーはAWSクラウド環境のセキュリティ担当者となり、様々なセキュリティ脅威からリソースを守るゲームです。

### ゲームコンセプト
• 2Dサイドビューまたはトップダウン視点のアクションゲーム
• プレイヤーはAWSセキュリティエンジニアとして、クラウド環境を守る
• 様々なセキュリティ脅威(マルウェア、不正アクセス、設定ミスなど)が攻撃してくる
• 正しいセキュリティ対策を選んで脅威を撃退する

### ゲーム要素
1. ステージ構成:
   • EC2、S3、RDS、Lambdaなど異なるAWSサービスをテーマにしたレベル
   • 各レベルで特有のセキュリティ脅威と対策が登場

2. プレイメカニック:
   • プレイヤーは「セキュリティツール」を収集・使用して脅威を撃退
   • 例: IAMポリシー(アクセス制御)、WAF(Webアタック防御)、GuardDuty(異常検知)など
   • 正しいツールを正しい脅威に対して使うことでポイント獲得

3. 教育要素:
   • 各脅威とツールには実際のAWSセキュリティ概念の説明が付く
   • クイズ形式の「セキュリティチェックポイント」でAWSセキュリティの知識をテスト
   • ゲームオーバー時に「セキュリティベストプラクティス」のヒントを表示

4. ゲームの進行:
   • スコアはセキュリティ対策の適切さと速さで決まる
   • 高難度になるほど複雑なセキュリティシナリオが登場
   • 最終的にはマルチレイヤーのセキュリティ対策が必要になる

### 技術的な実装ポイント
• Pygameで2Dグラフィックスとアニメーションを実装
• シンプルな物理エンジンでキャラクター移動とアイテム収集を実現
• JSONファイルでセキュリティシナリオとクイズデータを管理
• スコアとプレイヤーの進捗を保存する機能

このゲームは楽しみながらAWSセキュリティの基本概念(最小権限の原則、多層防御、暗号化、監視など)を学べる教育ツールとして
機能します。プラットフォーマーゲームの要素を取り入れつつ、セキュリティの知識を実践的に身につけられる内容になっています。

よさそうなので、この案で作るようQに依頼してみました。

> pygameを使ってその案のゲームを作ってください。
それでは、AWS Security Defenderゲームをpygameで実装していきましょう。まずは基本的なゲーム構造を作成します。

すると、あっという間にゲームを作成してくれました。

AWS Security Defenderゲームの実装が完了しました!以下のファイルを作成しました:

1. main.py - メインゲームループとゲームロジック
2. player.py - プレイヤーキャラクターのクラス
3. threats.py - セキュリティ脅威のクラス
4. tools.py - セキュリティツールのクラス
5. levels.py - ゲームレベルの定義
6. README.md - ゲームの説明書

## ゲームの実行方法

ゲームを実行するには、以下のコマンドを使用します:

bash
python main.py


## ゲームの特徴

1. 教育的要素:
   • AWSセキュリティの基本概念を学べる
   • 各レベルで異なるセキュリティシナリオを体験
   • セキュリティクイズでAWSの知識をテスト

2. ゲームプレイ:
   • 左右矢印キーでプレイヤーを移動
   • スペースキーで攻撃
   • タブキーでセキュリティツールを切り替え
   • 正しいツールで脅威を撃退するとスコア獲得

3. レベル構成:
   • レベル1: EC2セキュリティ(基本的な脅威)
   • レベル2: S3データ保護(データ漏洩対策)
   • レベル3: ネットワーク防御(複合的な脅威)

## 拡張アイデア

このゲームは基本的な実装ですが、以下のように拡張できます:

1. グラフィック改善:
   • 単純な四角形の代わりに、AWSサービスのアイコンを使用
   • アニメーションの追加
   • 背景にAWSクラウド環境の視覚的表現

2. ゲームプレイの拡張:
   • より多くのレベルとシナリオ
   • 難易度設定
   • ハイスコアの保存
   • より多くのセキュリティツールと脅威タイプ

3. 教育コンテンツの充実:
   • より詳細なAWSセキュリティの説明
   • 実際のAWSコンソールに似たUI要素
   • より多くのクイズと学習コンテンツ

このゲームを通じて、プレイヤーはAWSセキュリティの基本概念を楽しく学ぶことができます。

あとは、実際に動かしてみて、細かい修正を入れて完成です。

完成したゲーム

AWS Security Defender Game」というゲームです。

プレイヤーはAWSクラウド環境のセキュリティ担当者となり、様々なセキュリティ脅威からリソースを守ります。
正しいセキュリティツールを使って脅威を撃退し、スコアを獲得します。

各レベルでは異なる脅威が登場し、適切なセキュリティツールで対処する必要があります。
脅威を正しく撃退すると100ポイント獲得でき、見逃すと50ポイント減点されます。

こちらが動いている様子です。

コードはGitHubで公開しています。

github.com

まとめ

Amazon Q CLIを使って簡単にゲームを開発することができました。
コーディングは全く行っておらず、Qと対話的をするだけで動くものが作れるのは驚きです。
プロンプトの工夫次第ではもっとすごいゲームが作れるかもしれません。
ぜひ、このキャンペーンを機に、Amazon Q CLIを体験してみてください。