1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kiro x Amplify Gen 2 - テンプレートのサンプルプログラムを動かしてみた

1
Posted at

はじめに

前回の記事では、Kiro x Amplify Gen 2のテンプレートを紹介しました。

本記事では、テンプレートに含まれているサンプルプログラムの利用手順を解説します。

サンプルの概要

テンプレートには2つのサンプルプログラムが含まれています。

  • Todoリスト — Amplify Data(AppSync + DynamoDB)とのCRUD連携デモ
  • エージェントチャット — AgentCore RuntimeとのHTTP SSEストリーミング対話デモ

アーキテクチャ図としては次のようになっています。
AWSアーキテクチャ図_Kiroサンプル.png

Cognitoで認証を受けて、Amplify HostingのCloudFrontがフロントエンドを担います。
Todoリストのサンプルでは、AppSyncを介してDynamoDBにメモ情報を登録します。
エージェントチャットのサンプルでは、BedrockAgentCore Runtime上で動作するエージェントとSSEによるストリーミングでの会話を確認することができます。

事前準備

  • AWS CLI
  • Node.js(v18以上)
  • Python 3.10+(エージェントチャットを使う場合)

AWSリージョンはオレゴンを想定しています。他のリージョンでも動作するはずですが、動作未確認です。
特にサンドボックスではAWS configureで設定されているリージョンにサンドボックス環境をデプロイしますので、事前にご確認ください。

デプロイ手順

  • サンドボックスでフロントエンド実行
  • ローカル環境でエージェント実行
  • Amplifyにデプロイ
  • AgentCore Runtimeにデプロイ
  • お片付け

サンドボックスを立ち上げてみる

1. リポジトリの作成とセットアップ

GitHubで「Use this template」からご自身のGitHubアカウント内にリポジトリを作成し、ローカルにクローンします。

git clone <リポジトリURL>
cd <プロジェクト名>
npm ci

npm ciは、ローカルプロジェクト内にNode.jsの依存パッケージをインストールするコマンドです。

実行すると以下のようになります。
KiroSampleNpmCi.png

2. Amplify sandboxの起動

まずはAmplifyのサンドボックス環境を起動します。
サンドボックスは起動したままにする必要があるため、ターミナルを2つ利用します。

ターミナル1

# ターミナル1: Amplify sandboxを起動(初回は数分かかります)
npx ampx sandbox

次のようになればOK。サンドボックス用にCognitoやDynamoDBなどが立ち上がります。
KiroSampleSandbox.png

ターミナル2

# ターミナル2: 開発サーバーを起動
npm run dev

ターミナル右上の「+」ボタンでターミナルを追加できます。
コマンドを入力して、次のようにReadyとなればOK。
KiroSampleSandboxStart.png

3. サンプルページにアクセス

ブラウザで http://localhost:3000/sample にアクセスすると、Todoリストが動作します。

ユーザ認証

まずはCognito認証画面が開きますので、Create Accountからユーザを作成します。
KiroSampleSandboxCognito.png

サンプルページ

サンプルページは次のようになっています。
画面下側のエージェントチャットは、エージェントが未設定のため動きません。
KiroSampleScreen.png

Todoリスト

メモを入力→追加すると、Todoリストが追加されていきます。
KiroSampleMemoCreate.png

完了ステータスに変更したり、削除したりできます(CRUD操作)。
KiroSampleMemoCRUD.png

ひと通りの動作確認が可能です。

エージェントチャットをローカルで確認してみる

エージェントチャットを動かすには、追加でAgentCore Runtimeのデプロイが必要となりますが、ローカルでの動作確認では不要です。
次の手順でターミナル上で動作確認できます。

1. エージェントのセットアップ

cd agents
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

上から順にコマンドを実行します。
KiroSampleLocalAgent.png

端末の環境を汚さないためにvenv利用前提としてますが、ご自身の環境に合わせて調整ください。Pythonコマンドに関しても、自分の環境だとpython3で進めました。

エラーなく終われば、OK。
KiroSampleLocalAgentSetup.png

2. 環境変数の設定

envファイルを作成します。

cp .env.example .env
# .envを編集して必要な値を設定

以下スクリーンショットのように、3つのコメントアウトを外してください。
KiroSampleLocalAgentEnv.png

3. ローカルでの動作確認

AgentCore Runtimeなしでエージェント単体の動作を確認できます。
質問はスクリプトにあらかじめ埋め込まれています。

python scripts/run_local.py

ターミナル上にエージェントからの回答が表示されます。
KiroSampleLocalAgentConfirm.png

Amplifyにデプロイする

それでは、Amplifyにデプロイしてみます。今回は本番環境ですが、開発環境でも手順は同じです。

1. Amplify Hosting(フロントエンド)へのデプロイ

  • AWS コンソールで Amplify を開いて、「新しいアプリを作成」を選択します。

  • 「GitHub」を選択して次へ。
    KiroSampleAmplifyDeploy1.png

  • リポジトリとブランチを選択して次へ。
    KiroSampleAmplifyDeploy2.png

  • 特に何も設定せず、次へ。
    KiroSampleAmplifyDeploy3.png

  • 「保存してデプロイ」を押すと、デプロイが始まります。
    KiroSampleAmplifyDeploy4.png

  • 10分ほど待つとデプロイが完了します。URLも払い出されます。
    KiroSampleAmplifyDeploy5.png

2. フロントエンドの動作確認

  • URLにアクセスすると、Cognitoログイン画面が表示されます。
    先ほどのサンドボックスとは違う環境が立ち上がっていますので、再度アカウント作成します。
    KiroSampleAmplifyConfirm1.png

  • ログインするとトップ画面が表示されます。
    画面下の、サンプルページへのリンクをクリックします。
    KiroSampleAmplifyConfirm2.png

  • サンプルページが開きます。
    先ほどと同様に、エージェントチャットは未設定のため動きません。
    KiroSampleAmplifyConfirm3.png

エージェントチャットを動かしてみる

エージェントチャットを動かすために、AgentCore Runtimeへのデプロイを進めます。

1. 認証情報の確認

AWSコンソールでCognitoを開いて、今回作成したユーザプールを選択します。
ユーザプールID(例: us-west-2_xxxxxxxx)を取得します。
KiroSampleAgentcoreCognito1.png

同じユーザプールのアプリケーションクライアントを選択します。
クライアント ID(例: 7nxxxxxxxxxxxxxxxxxxxxxxxx)を取得します。
KiroSampleAgentcoreCognito2.png

2. デプロイ準備

以降の作業はターミナルに戻ります。
デプロイ用のStarter Toolkitが入っていなければ、まずはインストールしてください。

pip install bedrock-agentcore-starter-toolkit

うまくインストールできない場合は、ご自身の環境に合わせてインストールを進めてください。
自分の場合は、以下手順にてインストールできました。

brew install pipx
pipx install bedrock-agentcore-starter-toolkit

pipx listでインストール状況が確認できます。
KiroSampleAgentcoreInstall.png

最近、AgentCore CLIも出てきましたが、今回はStarter Toolkitでのデプロイを想定しています。

3. コンフィグ設定

Cognito の情報を使って JWT 認証を設定します。
<User Pool ID><Client ID> はあらかじめ確認した値に置き換えてください。

cd agents
agentcore configure \
  --entrypoint sample_agent/app.py \
  --name sample_agent \
  --authorizer-config '{"customJWTAuthorizer":{"discoveryUrl":"https://cognito-idp.us-west-2.amazonaws.com/<User Pool ID>/.well-known/openid-configuration","allowedClients":["<Client ID>"]}}' \
  --region us-west-2

コマンドを実行するといくつか設定を聞かれます。
基本的にはデフォルト設定のままエンターを押して進めてください。
KiroSampleAgentcoreConfig1.png

AgentCore Memoryのところだけご自身の状況に合わせて変更してください。
Memory作成が不要な場合は、sでスキップ。
KiroSampleAgentcoreConfig2.png

  1. Detected dependency file: requirements.txt (デフォルト)
  2. Select deployment type: 1 (デフォルト)
  3. Select Python runtime version: 2 (デフォルト)
  4. Execution Role: Enter (自動作成)
  5. S3 Bucket: Enter (自動作成)
  6. Request Header Allowlist: Enter (デフォルト: no)
  7. AgentCore Memory: s (作成をスキップする場合)

コンフィグ設定が完了すると、次のように結果が表示されます。
KiroSampleAgentcoreConfig3.png

4. AgentCore デプロイ

デプロイ実行

agentcore deploy

コマンドを実行すると、AgentCoreへのデプロイが進みます(数分かかります)。
KiroSampleAgentCoreDeploy.png

完了すると次のように結果が表示されるので、赤枠内の ARN をコピーします。
KiroSampleAgentCoreDeployComp.png

ステータス確認

agentcore status

ステータス確認のコマンドを実行し、以下のように Ready になれば準備OK。
KiroSampleAgentCoreDeployStatus.png

5. Amplify 再デプロイ

先ほど取得したAgentCore RuntimeのARNを設定します。
AWSコンソールでAmplifyを開き、対象アプリ → ホスティング → 環境変数を開きます。
KiroSampleAgentCoreEnv.png

変数の管理から新規追加を選び、環境変数を追加します。

  • 変数:NEXT_PUBLIC_AGENTCORE_RUNTIME_ARN
  • 値: AgentCore RuntimeのARN
    (例: arn:aws:bedrock-agentcore:us-west-2:999999999999:runtime/sample_agent_xxxx )
    KiroSampleAgentCoreEnvValue.png

環境変数追加後、ブランチを選択してこのバージョンを再デプロイにてAmplifyを再びデプロイ。
KiroSampleAgentCoreReDeploy.png

完了するまで、10分程度待ちます。

6. 動作確認

Amplifyのデプロイが完了したら、サンプルページを開き直します。
KiroSampleAgentCoreConfirm1.png

メッセージを入れて送信すると、エージェントからレスポンスが返ってきます。
KiroSampleAgentCoreConfirm2.png

会話を続けることも可能です。
KiroSampleAgentCoreConfirm3.png

これにてエージェントチャットの動作確認も完了です。

お片付け

それでは最後に各リソースのお片付けをしておきます。

1. サンドボックス

サンドボックス環境を削除するには、以下のコマンドを実行します。

npx ampx sandbox delete

削除しますか?と聞かれるので、yと入れて実行。
KiroSampleSandboxDelete.png

これでサンドボックス用に作成されたAWSリソースが綺麗に削除されます。

2. Amplify Hosting

AWSコンソールでAmplifyを開きます。
対象のアプリを選んで、アプリケーションの設定 → 全般設定。
KiroSampleAmplifyDelete.png

全般設定の右下の「アプリの削除」を選択し、削除を進めます。
KiroSampleAmplifyDelete2.png

削除するまでに少々時間はかかりますが、Cognito User Pool を含むバックエンドリソースも一緒に削除されます。

3. AgentCore Runtime

AIエージェントの削除は、ターミナルから実行します。

cd agents
agentcore destroy

削除してもよいか聞かれるので、yと入れてエンターすると、次のように進んでいきます。
KiroSampleAgentcoreDelete.png
AgentCore Runtime とそれに紐づくリソースが削除されます。

ただし Memory リソースは agentcore destroy では削除されません(意図的に保持される仕様)。不要な場合は手動で削除してください。

まとめ

今回は、Kiro x Amplify テンプレート内のサンプルページのデプロイ手順について紹介しました。

AIエージェントに関してはいつでも使うというわけでなく、必要なときに追加できるような形にしてあります。デプロイにひと手間かかりますが、その分疎結合しやすくなると思いますのでしばらくこれで遊んでみます。

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?