Skip to content

Commit 65431ed

Browse files
icoxfog417Takahiro Kubo
and
Takahiro Kubo
authored
Update DEVELOPMENT.md (#50)
* Update DEVELOPMENT.md * Update DEVELOPMENT.md --------- Co-authored-by: Takahiro Kubo <[email protected]>
1 parent af91646 commit 65431ed

File tree

1 file changed

+191
-6
lines changed

1 file changed

+191
-6
lines changed

docs/DEVELOPMENT.md

+191-6
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,169 @@ AWS が初めての場合、 AWS 、特に本プレイグラウンドで利用
1616

1717
## 開発環境構築
1818

19-
[README.md](../README.md) のデプロイのセクションのセットアップを行ってください
19+
開発に使用する環境を整えます。以降の手順は手元の PC での構築を前提にしていますが、 Cloud9 などリモートの環境を使用することで、お手元の PC に影響を与えずデプロイすることができます。 Cloud9 を使用したデプロイ方法については[動画](https://youtu.be/9sMA17OKP1k?si=XwEp7q6b_EXDBP3p)にまとめていますので、そちらを参考にセットアップを行ってください
2020

21-
### フロントエンドの開発
21+
1 から 4 の手順を踏むことで、開発環境を構築し修正を送る手続きが確認できます。
2222

23-
次に、ローカルでアプリケーションを実行し開発する方法を示します。
23+
### 1.AWS 環境に接続する
24+
25+
プレイグラウンドをデプロイする AWS アカウントにアクセス可能なユーザーを作成し、そのユーザーで AWS アカウントにアクセスできることを確認してください。プレイグラウンドは [AWS Cloud Development Kit](https://aws.amazon.com/jp/cdk/)(以降 CDK)を使いデプロイするため実行の権限が必要です。
26+
27+
#### 1.1 権限の設定
28+
29+
プレイグラウンドのデプロイに必要な権限の設定例を示します。ユーザーグループとして設定しておくと複数ユーザーへの権限付与が容易になります。
30+
31+
* AmazonDynamoDBReadOnlyAccess
32+
* AWSLambda_ReadOnlyAccess
33+
* CloudWatchReadOnlyAccess
34+
* CdkDeploy (※カスタム)
35+
* CreateUserAccessKey (※カスタム)
36+
37+
CdkDeploy の設定
38+
```json
39+
{
40+
"Version": "2012-10-17",
41+
"Statement": [
42+
{
43+
"Sid": "AssumeCDKRoles",
44+
"Effect": "Allow",
45+
"Action": "sts:AssumeRole",
46+
"Resource": "*",
47+
"Condition": {
48+
"ForAnyValue:StringEquals": {
49+
"iam:ResourceTag/aws-cdk:bootstrap-role": [
50+
"image-publishing",
51+
"file-publishing",
52+
"deploy",
53+
"lookup"
54+
]
55+
}
56+
}
57+
}
58+
]
59+
}
60+
```
61+
62+
CreateUserAccessKey の設定
63+
```json
64+
{
65+
"Version": "2012-10-17",
66+
"Statement": [
67+
{
68+
"Effect": "Allow",
69+
"Action": [
70+
"iam:ListUsers",
71+
"iam:GetAccountPasswordPolicy"
72+
],
73+
"Resource": "*"
74+
},
75+
{
76+
"Effect": "Allow",
77+
"Action": [
78+
"iam:*AccessKey*",
79+
"iam:ChangePassword",
80+
"iam:GetUser"
81+
],
82+
"Resource": [
83+
"arn:aws:iam::*:user/${aws:username}"
84+
]
85+
}
86+
]
87+
}
88+
```
89+
90+
#### 1.2 権限の設定
91+
92+
AWS のユーザーを作成したら、 [AWS CLI](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-welcome.html) を使い AWS にアクセスできるか確認してください。
93+
94+
手順は次の記事などを参考にしてください。
95+
96+
* [【AWS】aws cliの設定方法](https://zenn.dev/akkie1030/articles/aws-cli-setup-tutorial)
97+
* [AWS CLI初期設定手順(Linux)](https://blog.serverworks.co.jp/2023/08/25/150000)
98+
99+
※ LLM 勉強会の AWS アカウントで開発する際は、開発環境のリージョンは東京 (`ap-northeast-1`) としてください。
100+
101+
#### Checkpoint:1
102+
103+
* デプロイしたい AWS アカウントにアクセス可能な IAM ユーザーが作成できている。
104+
* 作成した IAM ユーザーの認証情報を使い、 AWS アカウントにアクセスできることを確認した。
105+
* 開発環境のリージョンは東京 (`ap-northeast-1`) としてください。
106+
107+
### 2.ソースコードをダウンロードする
108+
109+
プレイグラウンドのリポジトリからソースコードをダウンロードします。
110+
111+
```
112+
git clone https://github.com/llm-jp/llm-jp-model-playground.git
113+
```
114+
115+
Git のインストール方法や使い方は下記を参照してください
116+
117+
* [使い始める Git](https://qiita.com/icoxfog417/items/617094c6f9018149f41f)
118+
119+
GitHub を使う場合、 GitHub CLU だとクレデンシャルの設定なのが非常に容易なためこちらを使うことを推奨します。
120+
121+
* [GitHub CLI クイックスタート](https://docs.github.com/ja/github-cli/github-cli/quickstart)
122+
123+
#### Checkpoint:2
124+
125+
* Git を用い、開発環境にソースコードがダウンロードできている。
126+
127+
### 3. アプリケーションの動作確認
128+
129+
CDK を用い自身の開発環境にデプロイを行い、動作確認をします。
130+
131+
#### 3.1 CDK のインストール
132+
133+
各環境での CDK のインストール方法は [AWS CDK Workshop](https://cdkworkshop.com/ja/15-prerequisites/100-awscli.html) の「必要条件」を参照ください。本リポジトリでは TypeScript を使っているため、 Python/.NET/Java/Go の環境構築は必要ありません。
134+
135+
#### 3.2 CDK によるデプロイ
136+
137+
CDK のインストールができたらデプロイを開始します。ターミナルを開き、 `git clone` したフォルダまで異動していることを確認したのち次の手順を実行してください。
138+
139+
LLM 勉強会の AWS アカウントで開発する際は、開発環境のリージョンは東京 (`ap-northeast-1`) としてください。
140+
141+
Mac/Linux
142+
143+
```bash
144+
export AWS_DEFAULT_REGION=ap-northeast-1
145+
```
146+
147+
Windows
148+
```bash
149+
set AWS_DEFAULT_REGION=ap-northeast-1
150+
```
151+
152+
次に、本アプリケーションに必要な `npm` のパッケージをインストールします。
153+
154+
```bash
155+
npm ci
156+
```
157+
158+
CDK を利用したことがない場合、初回のみ CDK 用のファイルを保存する Amazon S3 やデプロイに必要なアクセス権限を付与する IAM ロールを準備する [Bootstrap](https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/bootstrapping.html) 作業が必要です。すでに Bootstrap された環境では以下のコマンドは不要です。
159+
160+
```bash
161+
npx -w packages/cdk cdk bootstrap
162+
```
163+
164+
続いて、以下のコマンドで AWS リソースをデプロイします。デプロイが完了するまで、お待ちください(20 分程度かかる場合があります)。 LLM 勉強会のアカウントで作業する場合、 `<stage>` にはご自身のユーザー ID を設定してください。デプロイ先が重複しないようにするために必要です。
165+
166+
```bash
167+
npm run cdk:deploy -- -c stage=<stage>
168+
```
169+
170+
アプリケーションのデプロイが完了したら、コンソールに出力される `WebUrl` の URL からアクセスしてください。コンソールの出力をとり漏らした場合は、 AWS Console にログインし次の手順で確認してください。
171+
172+
1. 画面上部の検索バーで "CloudFormation" を検索し、 CloudFormation の管理画面に遷移。
173+
* この時、 AWS のリージョンが CDK deploy したリージョンで同じであることを確認してください。
174+
2. 左側のメニューから「スタック」を選択。メインパネルに表示されたスタックの一覧から "GenerativeAiUseCasesStack" を選択。
175+
3. 画面右にスタックの情報が出力される。「出力」のタブからキーが "WebUrl" になっているものを探すと、値の箇所に URL が記載されている。
176+
177+
URL にアクセスするとログイン画面に遷移します。
178+
179+
#### 3.3 フロントエンドの開発
180+
181+
構築した開発閑居でアプリケーションを実行し開発する方法を示します。
24182

25183
**Unix 系コマンドが使えるユーザー (Linux, MacOS 等)**
26184

@@ -61,9 +219,9 @@ export VITE_APP_REGION=ap-northeast-1
61219
npm run web:dev
62220
```
63221

64-
正常に実行されれば http://localhost:8080 で起動しますので、ブラウザからアクセスしてみてください。
222+
正常に実行されれば http://localhost:8080 で起動しますので、ブラウザからアクセスしてみてください。プレイグラウンドの内部に入るためにはプレイグラウンドのアカウントが必要です。作成する手順は [README.md](../README.md) の「アカウント作成手順」を参照してください。
65223

66-
### バックエンドの開発
224+
#### 3.4 バックエンドの開発
67225

68226
次にバックエンドを開発する時の方法を示します。
69227

@@ -84,7 +242,7 @@ npm run cdk:watch -- -c stage=<stage>
84242
裏ではファイルの変更がモニタされ Lambda への変更はホットスワップデプロイが実行され、CDK の更新なしにバックエンドにデプロイすることが可能です。その他の変更は通常の CloudFormation の完全なデプロイにフォールバックします。
85243
詳細ついては [CDK Workshop](https://cdkworkshop.com/ja/20-typescript/30-hello-cdk/300-cdk-watch.html#cdk-watch) をご確認ください。
86244

87-
### モデルの動作確認
245+
#### 3.5 モデルの動作確認
88246

89247
プレイグラウンドで扱えるモデルは、 Amazon SageMaker にデプロイしています。具体的には、 Deep Java Library (DJL) を使用した SageMaker Endpoint に対応しています。
90248

@@ -109,6 +267,33 @@ npm run cdk:watch -- -c stage=<stage>
109267
4. `npm run cdk:deploy` でモデルをデプロイする。
110268
5. モデルを反映させるためにはエンドポイントを再起動する必要があるため、一度エンドポイントを落として立ち上げ直す。
111269

270+
#### Checkpoint:3
271+
272+
* CDK をインストールし、プレイグラウンドがデプロイできることを確認した。
273+
* フロントエンドの動作確認を行った。
274+
* バックエンドの動作確認を行った。
275+
* モデルの追加手順を確認した。
276+
277+
### 4. 修正を本番環境に反映する
278+
279+
修正した内容を本番環境に反映する手順は次の通りです。
280+
281+
1. 修正を行う
282+
2. 動作検証のために、個人環境にデプロイをする
283+
* `aws configure` で、デフォルト `region` を開発環境のリージョン (tokyo) に設定
284+
* `cdk deploy` する際に、自分のAWSユーザー名を context で指定する (忘れても別 region なので本番が修正されることはない)。
285+
3. 動作検証を実施
286+
4. `main` ブランチに PR を作成する
287+
5. レビュアーは、自分の環境に PR のコードをデプロイして動作確認をする。
288+
6. PR がマージされる
289+
7. マージされると本番環境に自動デプロイされる
290+
291+
#### Checkpoint:4
292+
293+
* 修正を行う手順を確認した。
294+
* Pull Request を作成できた。
295+
* マージ後、本番環境に修正が反映されることを確認した。
296+
112297
## その他設定
113298

114299
### セルフサインアップを有効化する

0 commit comments

Comments
 (0)