(たぶん)世界一簡単にGenUをデプロイする方法

## はじめに
皆さんは**GenU**をご存じですか？
GenUとはAWSがOSSとして公開している生成AIアプリを簡単にデプロイ・体験できるサンプルです。
これを使えば裏でAWSシステムが動いているチャットボットや要約、画像生成などを簡単に体験できるだけでなく、プロンプトを入力し自分だけのユースケースを作ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092122/9fe61928-6d51-4fcf-93d4-4b5cd2623eda.png "デプロイ例")
> デプロイ結果

GenUについて詳しくは以下のブログをご参照ください
https://aws.amazon.com/jp/blogs/news/genu-use-cases-builder/

そんなGenUを触る機会があったので備忘録も兼ねて、きっと世界一簡単な方法でデプロイする方法をまとめます。

:::note warn
注意
この記事は2025年4月段階のバージョンや情報を基にしています。
また、推奨されている方法からは一部逸脱しています。
:::

## 目次
1. デプロイ準備
1. 超かんたんデプロイ
1. (おまけ)東京リージョンでデプロイ
1. さいごに

## 1.デプロイ準備
![構成図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092122/b53f3d82-cbc9-4364-8d05-7ee086c6d8a5.png)
> https://github.com/aws-samples/generative-ai-use-cases より

GenUは上記構成図のような構成でデプロイされます。破線で囲まれた部分はデフォルトでは構築されません。

そしてこの構成図からも読み取れる通り、GenUは裏でAmazon Bedrockを走らせています。そのため、Bedrockでモデルの有効化が必要になります。
### モデルの有効化
　GenUで使用するモデルの有効化を行います。
 マネジメントコンソールの[Amazon Bedrockのモデルアクセス画面](https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/modelaccess)(Amazon Bedrock > モデルアクセス)から、**特定のモデルを有効にする**を押してください。
 ※すでにモデルの有効化をしている場合「**モデルアクセスを変更**」と表示されます。
 
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092122/c72fb9e8-2699-4c2e-9084-62e40a49001c.png)

その後、以下のモデルを選択して有効化してください。
```:有効化するモデル
<Amazon>
・Nova Reel
・Nova Pro
・Nova Lite
・Nova Micro
・Nova Canvas

<Anthropic>
・Claude 3.5 Haiku
・Claude 3.5 Sonnet v2
```
有効化されたことが確認できたら事前準備は終わりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092122/5b2c4565-10c0-430d-89d2-eff43bfdf0bc.png)
> 有効化後の画面
## 2.超かんたんデプロイ
　GenUでは基本的に[CDK](https://aws.amazon.com/jp/cdk/)(AWS Cloud Development Kit)でのデプロイが想定されています。しかしながら、CDKでの操作は手元の環境を必要としたり、慣れていない人には初期設定が少し複雑だったりします。そこで、今回はマネジメントコンソール上で全て完結するAWS CloudShellを用いてデプロイをします。
 ### CloudShellでデプロイ
　まずは、バージニア北部リージョンで[CloudShell](https://console.aws.amazon.com/cloudshell/home)を起動します。
 すると、いわゆる端末が立ち上がるので、次のコマンドを入力します。
 ```:入力コマンド
wget https://raw.githubusercontent.com/aws-samples/generative-ai-use-cases/refs/heads/main/deploy.sh -O deploy.sh
chmod +x deploy.sh
```
このコマンドではdeploy.shというファイルをダウンロードし、実行権限を与えています。
このコマンドが入力出来たら次のコマンドを入力します。
 ```:入力コマンド
./deploy.sh
```
なんと以上です。あとはデプロイを10~20分待てばもう完成です。
 ```:
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Welcome to GenU: https://~~~~~~~~~~~~.cloudfront.net
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
```
デプロイ完了時に上のようにCloudFrontのURLが表示されるので、そのURLをブラウザで開けばGenUにアクセスできます。
## 3.(おまけ)東京リージョンでデプロイ
　別リージョンでデプロイする場合、一部設定ファイルを変更しなくてはいけません。
`cdk.json`か`parameter.ts`のどちらかを変更すればよいですが、今回は`cdk.json`を変更する方法を紹介します。
まず、githubのリポジトリから[cdk.json](https://github.com/aws-samples/generative-ai-use-cases/blob/3fd9eb50422a272856f545ae60214d03234b25eb/packages/cdk/cdk.json)をダウンロードして、任意のコードエディタで開いてください。
そして、`"context"` 内の`"modelRegion"` `"modelIds"`を以下のように変更してください。
 ```json:cdk.json
 ……
    "context": {
        ……
        "modelRegion": "ap-northeast-1",
        "modelIds": [
          "apac.anthropic.claude-3-5-sonnet-20241022-v2:0",
          "anthropic.claude-3-haiku-20240307-v1:0",
          "apac.amazon.nova-pro-v1:0",
          "apac.amazon.nova-lite-v1:0",
          "apac.amazon.nova-micro-v1:0"
        ],
        ……
    }
……
```
変更後ファイルを保存したら、1.デプロイ準備/モデルの有効化でしたことを東京リージョンで行います。この時有効化するモデルは以下のモデルです。
```:有効化するモデル
<Amazon>
・Nova Reel
・Nova Pro
・Nova Lite
・Nova Micro
・Nova Canvas

<Anthropic>
・Claude 3.5 Sonnet v2
・Claude 3 Haiku
```
有効化が完了したらCloudShellでデプロイをします。

東京リージョンでCloudShellを開いたら、右上の**アクション**から**ファイルのアップロード**を選択し、先ほど編集・保存した`cdk.json`をアップロードしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3092122/4dedcd04-36d7-48f2-9fac-95d81b618a73.png)
> CloudShellの画面

アップロードが完了したら先ほどと同様、以下のコマンドを実行します。
 ```:入力コマンド
wget https://raw.githubusercontent.com/aws-samples/generative-ai-use-cases/refs/heads/main/deploy.sh -O deploy.sh
chmod +x deploy.sh
```
その後は先ほどと違い、次のコマンドを実行してください。
 ```:入力コマンド
./deploy.sh --cdk-context ~/cdk.json
```
後は待てば先ほど同様、GenUのURLが表示されデプロイ完了です。

:::note warn
注意
デプロイする時のモデル群はあくまでも例であり、これら以外のモデルでもデプロイできます。
:::
## さいごに
　AWSのAIサービスを活用したGenUの簡単なデプロイ手法を説明しました。
 実際に手を動かしていなくてもこの簡単さはよくわかっていただけたのではないでしょうか。

 GenUには他にも多くのデプロイオプションがあり、かなり機能を拡張させることができます。デプロイオプションについてもまた機会があれば書こうと思います。
 > （デプロイオプションについて詳しくは公式Githubの[こちら](https://github.com/aws-samples/generative-ai-use-cases/blob/main/docs/ja/DEPLOY_OPTION.md)をご覧ください。）

それでは、今回はこれぐらいにして…
最後まで読んでくださった皆様ありがとうございました！
少しでもお役に立てていれば幸いです🌠