top of page

【爆速5分で社内AI展開!?】Gemini CLI × AWSで始めるAI時代のDevOps


こんにちは、AICU代表のしらいはかせです。

今回のYouTubeでは、Googleがリリースした強力なコマンドラインツール「Gemini CLI」を使って、AWS CloudFormation/CDKプロジェクトを一発でデプロイするという、夢のような体験をお届けします。


前回はGoogle公式のGoogle Cloudでの爆速[AI DevOps]動画を紹介しました。



関連:開発にも運用にも使える「Gemini CLI」が便利すぎてやばい

「窓の杜生成AIストリーム」(しらいはかせ 2025年7月3日 16:41)



なにそれ、Gemini CLI?

Google Gemini CLIとは、AIアシスタントと自然言語で対話しながら、コード検索・分析・実行ができる革新的なCLIツールです。しかも日本語対応。



Nodeがインストールされている環境なら、このコマンドだけでインストール完了です。


npm install -g @google/gemini-cli


今回の主役は「AWS Samples」が公開しているジェネレーティブAIユースケース集。このOSSプロジェクトは、実は日本のAWS Japanチームも積極参加している注目のオープンソースプロジェクトです。




デプロイ手順「このプロジェクトをデプロイして」で…たったの5分!

動画では、以下の流れでCloudFormation/CDKスタックを展開:


  1. GitHubからユースケースプロジェクトをクローン


  2. Visual Studio CodeでREADME確認


  3. ターミナルで gemini コマンドを起動


  4. 「日本語でお願いします」と入力 → Geminiが自然言語で対応開始


  5. deploy.sh を解析 → 実行許可→デプロイ実行


  6. CDKでスタック起動、URL発行


  7. Cognitoログインからの動作確認


驚くべきことに、たった1行「このプロジェクトをデプロイして」という指示だけで約5分で完了しました。いや、本当にやばい。Gemini、すごすぎ。


でも…AIに任せきりで大丈夫?

本編では、AIを使う際のセキュリティ視点も徹底カバーしました。


デプロイ作業で5分待っている間のその並列作業で、もうひとつシェルを開いて別のGemini CLIに「セキュリティホール探して」と聞いています。


  • deploy.sh の中身をGeminiにハッカー目線でレビューさせる


  • .envやパスワードの埋め込み確認


  • XSS・インジェクション・ルートキット対策の検証


  • CDKの過剰権限チェック(例:AmazonPollyFullAccess問題)


AIがインフラを張る時代だからこそ、人間が責任を持つ=「Allow Once」精神が重要です。指差し確認していきましょう!


あれ?画像生成モデルはどこに!?

デプロイ後は、すかさず可愛い猫画像生成タイム…と言いたいところだったのですが、実はAWS Bedrockで使えるStability AIなどのモデルの多くはSDXLをはじめエンドオブライフが宣言されています。



モデルのライフサイクル、各リージョンで若干異なりますがこちらで確認できます。



この手の設定もGemini CLIから選択・実行できます。

Claude4なども利用できます。ライセンスは商用可能なEULA(エンドユーザーライセンス)「Anthropic on Bedrock - Commercial Terms

of Service」という形でPDFでAWSダッシュボード→Amazon Bedrock

→モデルアクセスで入手できます。ライセンスチェックは忘れずに!


ドキュメント生成も…!

これまでの作業を「devops.ja.mdにまとめて」とお願いしてみるといい感じのセキュリティ監査ファイルが生成されました。文末に引用しておきますね。ちなみに実用的なところでは、修正したコードを本家のオープンソースプロジェクトにプルリクエストする作業なんかも進められます。ぜひ責任あるAIを使って、オープンソースに貢献していきましょう!


後片付けもAIに任せろ

  • cdk destroy の実行と確認


  • 残ったDynamoDBやS3の削除タイミングを可視化


  • CDKスタックの依存関係解消


  • 最後は「Delete in Progress」を眺めながらエンディング


動画はこちら!

デプロイ編までの動画をYouTubeで公開しておきます。

「いいね」&「購読」よろしくお願いいたします!



AICU編集部より「AI DevOpsの未来」!

AIは便利。でも、「全部やってくれるAI」ではなく「自分と一緒に考えてくれるAI」の方が、はるかにクリエイティブです。

Gemini CLIはその仲間として、クリエイターにも、オープンソースプロジェクトを活用するインフラエンジニアにも優しく寄り添ってくれる[AI DevOps] の存在。明らかに早く終われる、さらにセキュリティも高まります。

こういうAI DevOpsの仕事に興味がある方、ぜひAICUでにご相談いただけませんか?受注も発注もご相談に乗るのがAIクリエイターユニオンです!




リンク集



付録:セキュリティ監査(Gemini生成)

このドキュメントでは、本プロジェクト「generative-ai-use-cases」のセキュリティ監査結果の概要と、主要なインストールおよびデプロイオプションについて説明します。


1. セキュリティ監査結果の概要

これまでのセキュリティ監査で特定された主な脆弱性と対策、および継続的な懸念事項は以下の通りです。


1.1. 依存関係の管理

  • 発見: `package.json` にて、`typescript`、`@aws-sdk/*`、`vite` など、一部のライブラリが最新バージョンではないことが確認されました。


  • 対策: 直接的なセキュリティホールではありませんが、最新の状態に保つことがセキュリティのベストプラクティスです。定期的な依存関係の更新を推奨します。


1.2. 機密情報の管理

  • 発見: `.env` ファイルを確認した結果、ハードコードされた認証情報や機密情報は発見されませんでした。環境変数としてプレースホルダーが設定されており、これは適切なプラクティスです。


  • 対策: 環境変数の実際の値は、CI/CDパイプラインやデプロイプロセスで安全に管理されていることを確認してください。


1.3. 認証・認可ロジック

  • 利用技術: AWS Amplify と Cognito User Pool/Identity Pool を利用しており、一般的なクラウドネイティブな認証方法が採用されています。


  • 懸念事項:


  • Amplify のバージョン: 使用されている Amplify のバージョンに既知の脆弱性がないか、定期的に確認し、必要に応じて更新してください。


  • Cognito の設定: Cognito User Pool および Identity Pool の詳細設定(パスワードポリシーの強度、多要素認証の強制、不適切な IAM ロールの割り当てなど)は、AWS コンソールで確認し、セキュリティベストプラクティスに従っていることを確認してください。


  • Lambda (`checkEmailDomain.ts`): サインアップ時のメールアドレスのドメイン検証を行う Lambda 関数です。基本的なメール形式の検証は行われていますが、より厳密な検証が必要な場合は、Cognito の設定と合わせて検討してください。また、`ALLOWED_SIGN_UP_EMAIL_DOMAINS` が空の場合、すべてのドメインからのサインアップが許可されるため、デプロイ時の設定ミスに注意してください。


  • IAM ポリシー: `PollyPolicy` など、一部の IAM ポリシーで `resources: ['*']` が使用されている箇所があります。必要最小限の権限の原則に従い、可能な限りリソースを限定することを推奨します。


1.4. 入力検証とサニタイズ (XSS / インジェクション)

  • XSS (Cross-Site Scripting):


  • 利用技術: `react-markdown` ライブラリを使用しており、デフォルトでXSS対策のためのサニタイズ機能が提供されています。カスタムレンダラーも確認しましたが、直接的なXSS脆弱性は低いと考えられます。


  • 対策: `react-markdown` のバージョンを最新に保ち、常にセキュリティアップデートを適用してください。


  • ファイルアップロード/ダウンロード関連のインジェクション:


  • `POST /file/url` (ファイルアップロード用署名付きURL発行):


  • 発見された脆弱性: クライアントから提供されるファイル名をS3のキーに直接使用することによるファイル名インジェクションの可能性、およびファイルタイプ/サイズの検証不足。


  • 適用された対策: S3のキーをUUIDと拡張子のみで構成するように変更し、元のファイル名をS3メタデータとして保存するように修正しました。また、許可されたファイル拡張子のリストに基づいてファイルタイプを検証するロジックを追加しました。


  • `GET /file/url` (ファイルダウンロード用署名付きURL発行):


    • 発見された脆弱性: クライアントから提供される `bucketName` と `filePrefix` を直接使用することによる不正なファイルアクセス(任意のS3バケットやファイルへのアクセス)の可能性、および認可の欠如。


    • 提案された対策: `bucketName` を環境変数から取得した既知のバケット名に限定する修正を提案しましたが、これはユーザーによってキャンセルされました。この脆弱性は未修正です。 ユーザーがアクセスを許可されているファイルのみをダウンロードできるように、サーバーサイドでの厳格なバケット名とファイルパスの検証、および認可ロジックの実装が強く推奨されます。


  • `DELETE /file/{fileName}`: このエンドポイントの詳細はまだ監査されていません。削除対象のファイルが、リクエスト元のユーザーが所有するファイルであることを厳密に検証するロジックが必須です。


  • サーバーサイドでの検証の重要性: クライアントサイドでの検証は容易にバイパスされるため、ファイルアップロード/ダウンロードを含むすべてのユーザー入力に対して、サーバーサイドでの厳格な検証とサニタイズが必須です。


2. インストールとデプロイオプション

本プロジェクトの主要なインストールおよびデプロイオプションは以下の通りです。


2.1. 環境構築

  • 環境変数: `setup-env.sh` スクリプトを使用して、アプリケーションに必要な環境変数を設定します。


2.2. アプリケーションの実行

  • Webアプリケーション (Frontend):

  • ブラウザ拡張機能:

  • CDK (Backend):


2.3. ドキュメント


2.4. その他のスクリプト

  • `deploy.sh`: 全体的なデプロイプロセスを自動化するためのスクリプトです。

  • `.husky/pre-commit`: Gitのpre-commitフックが設定されており、コミット前にリンティングなどのチェックが実行されます。


注意: 上記の情報は、これまでの監査とファイル分析に基づいています。デプロイや運用を行う前に、必ず最新のドキュメントとコードベースを確認してください。


Originally published at note.com/aicu on July 4, 2025.

Comentarios


bottom of page