デジタル庁で生成AI利活用基盤「源内Web」を公表していたのでいじってみました。
事前準備
公式の「事前準備」の項は、シンプルかつ玄人好みのするつくりで、「そんなこと知っていて当たり前だよね」という清々しさがあり、要はなかなか先に進めません。そこで、少しくどく書き直してみました。
環境はUbuntu24.04.4LTSを想定しています。ほぼCLIの作業なので、「端末」を開き、コマンドを入力していきます。背面が黒い文字列があったら、それをコピーして端末に貼り付けて[Enter]を押せば何とかなります。
リポジトリからデータを持ってくる
まずはgitなどをインストールします。
sudo apt install git gh
適当なディレクトリで以下のコマンドを実行します。そのディレクトリの下にgenai-webというサブディレクトリができます。ここが主戦場ですので、端末でこのディレクトリに移動しておいてください。
gh repo clone digital-go-jp/genai-web
Node.jsのインストール
以下のファイルから、必要なnode.jsのバージョンを調べます。
執筆時点では、v24.18.0とありました。
それに対応するバージョンをnode.jsの公式サイトからダウンロードします。が、脆弱性があっても怖いので、日和ってLTSのv24.21.0を使用しました。
AWSのアカウント作成とユーザーの設定
AWSのアカウントを作成する
源内WebはAmazon Web Serviceの利用を前提としています。次のサイトからアカウントを作成しましょう。
最初の6ヶ月は無料らしいですが、制限を超えると費用が発生してしまうようです。
AWSでユーザーを作り、権限を設定する
アカウントができたら、ユーザを作ります。AWSの最初の画面であるコンソールの左上のbento menuから「セキュリティ、ID、およびコンプライアンス」の中にあるIAMを選択します。
ユーザーの作成で、適当なユーザ名を入力してユーザを作成します。ユーザの管理画面のアクセスキーの作成を行います。ユースケースでコマンドライン・インタフェース(CLI)を選択し上記のレコメンデーションを理解し、アクセスキーを作成します。にチェックを入れて次へを押します。次の画面で説明タグを入力する欄がありますが、お好みで。入れなくてもいいみたいですが、今回は「genai」としました。
次の画面で、アクセスキーをとシークレットアクセスキー取得できます。シークレットアクセスキーは、この画面を離れると二度と取得できません。csvファイルをダウンロードというボタンもありますが、ダウンロードしたファイルの取り扱いには十分注意してください。
更に、権限を付与するため、グループを作成して権限を付与します。左側のIAM ユーザーグループを選択し、グループの作成を押します。任意のグループ名を指定して、先ほど作成したユーザにチェックを入れます。許可ポリシーを添付でAdministratorAccessにチェックを入れてユーザーグループを作成ボタンを押します。
今はroot権限で入っているので、このまま作業を続けるのは好ましくありません。そこで、一度サインアウトします。右上のアカウント名が書いてあるところをクリックしてサインアウトしてください。
AWS-CLIとAWS CDK CLIのインストール
AWS-CLIをインストールする
以下のコマンドでAWS-CLIをインストールします。
curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash
AWS-CLIの設定をする
インストールしたAWS-CLIで、AWSの設定を行います。
aws configure
AWS Access Key ID [None]:とAWS Secret Access Keyには先ほど作成したものを入力します。Default region name [None]:は、ap-northeast-1(東京)かap-northeast-3(大阪)を選んでおくのが良いかと思われます。Default output format [None]:はそのままにして、デフォルトのjsonでよろしいかと思います。
最後に以下のコマンドでAWSに入れるか試してみます。
aws sts get-caller-identity
ユーザーIDなどが表示されれば成功です。
AWS CDK CLIをインストールする。
以下のコマンドでインストールします。
sudo npm install -g aws-cdk
こちらはこれだけで終わりです。
ライブラリのインストール
以下のコマンドを入力することで、package.jsonファイルにあるライブラリをインストールしてくれます。
npm ci
ここで公式の事前準備の文書ではbootstrapを行っているのですが、次項で扱うparameter.tsの更新を行わないとエラーが出てしまうので、ここでは飛ばします。
次にjqをインストールします。
sudo apt-get install jq
でインストールできます。
デプロイ手順
パラメータ設定ファイルの準備
テンプレートからファイルの作成
まず、パラメータ設定ファイルのテンプレートをコピーします。
ファイルのある場所に移動して
cd packages/cdk/env-parameters
そして、テンプレートをコピーする。
cp self-hosting-template.ts self-hosting-dev.ts
コピーしたファイルを編集します。テキストエディタでもVSCodeでもvimでもedでも構いません。
最低限必要なのはappEnvの項だけです。your-environment-nameとあるのを、まあ、このままでもいいのですが、何かに書き換えてください。仮にGenAI_testとしておきます。
parameter.tsの更新
いま作ったファイルをパラメータ設定ファイルに読み込ませて、設定を反映させます。やはり何かのエディタで、いま作業したひとつ上のディレクトリのparameter.tsを開いて、2行書きたします。書きたすのは、以下のファイルの行頭に「+」がついてハイライトされているところです。なお、「+」は入力しないでください。
import * as cdk from 'aws-cdk-lib';
import { preprocessContextValues, StackInput, stackInputSchema } from './lib/stack-input';
+ import { selfHostingDevParams } from "./env-parameters/self-hosting-dev";
// CDK Context からパラメータを取得する場合
const getContext = (app: cdk.App): StackInput => {
const rawContext = app.node.getAllContext();
// コンテキスト値を適切な型にparseしてからvalidation
const preprocessedContext = preprocessContextValues(rawContext);
const params = stackInputSchema.parse(preprocessedContext);
return params;
};
// デプロイ先環境ごとのパラメータを定義する
const deploy_envs: Record<string, Partial<StackInput>> = {
+ '-selfHostingDev': selfHostingTemplateParams,
// 開発環境のサンプルパラメータ
//(略)
};
AWS CDKのBootstrapを走らせる
ここで、さっき行わなかったBootstrapを実行するのですが、ここでも罠があります。公式のとおりに行うと、先ほどのパラメータを読んでくれず、appEnvが空になってしまい、エラーで中断してしまいます。以下のように入力してください。
npm -w packages/cdk run cdk -- bootstrap -c env=-selfHostingDev
-c以下の部分が重要です。上で入力した-selfHostingDevがちゃんと入っているかが鍵になります。
次にいよいよデプロイです。
npm -w packages/cdk run cdk -- deploy --all --require-approval never -c env=-selfHostingDev
ここでも-c以降が入っているかどうか確認しましょう。
デプロイには結構な時間がかかります。その間にお湯を沸かして紅茶を淹れてケーキを食べて、たぶんそれでも時間は余るでしょう。
結果を確認する
AWSのコンソールを開いて、bento menuから管理とガバナンスの中のCloudFormationを開きます。スタックが3つできていますが、このうちのGenerativeAiUseCasesStack-selfHostingDevを開いてください。右側のメニューの出力を選んで、一番下のWebUrlにあるのが、いま作成したGenai-Webの殻になります。
「ここにロゴが入る」などと、未了感きわまる表示が出てきました。
とりあえず前半はここまでで力尽きてしまったので、続きはまたの機会ということで。
