Amazon Web Services(AWS)に展開されたAgent 365エージェントを構築する

Important

Microsoft Agent 365 の早期アクセスを利用するには、フロンティア プレビュープログラムに参加する必要があります。 Frontierはマイクロソフトの最新のAIイノベーションと直接つながります。 Frontier のプレビューは、お客様の契約書に記載されている既存のプレビュー利用規約に従います。 これらの機能は現在開発中であるため、提供状況や機能は今後変更される可能性があります。

Agent 365 CLIを使って、AWS Elastic Beanstalk上で動作するAgent 365エージェントの構築、ホスト、登録、公開方法を学びましょう。 Microsoft Entraと Graph はエージェント ID、アクセス許可、ブループリントを提供し、AWS Elastic Beanstalk はランタイムを提供します。

エージェントをAWSエンドポイントの背後にあるコードに向けたい場合は、次のステップだけで済みます: 非Azureホスティングの設定。 その後、 Agent 365の開発ライフサイクルの他のすべての手順に従ってください。

目標

コントロール プレーンとしてエージェント 365 とMicrosoft 365を使用する方法について説明します。

  • AWS Elastic Beanstalk でエージェントランタイムをデプロイ
  • Azure以外のホスティング用に a365.config.json を構成する
  • Entra IDでエージェントブループリントを作成する
  • OAuth2 + 継承可能なアクセス許可を構成する
  • AWSを指すボットフレームワークのメッセージングエンドポイントを登録してください
  • エージェント識別子 + エージェントユーザーを作成する
  • (省略可能)Microsoft 365 アプリ サーフェイスに発行する
  • エンドツーエンドの相互作用テスト

前提条件

開始する前に、次のAzure/Microsoft 365、AWS、およびローカル環境の前提条件が満たされていることを確認します。

Azure/Microsoft 365の前提条件

Microsoft Entra テナントへのアクセスを確認し、次のツールをインストールして ID、ブループリントを作成し、エージェントを登録します。

Amazon Web Services(AWS)の前提条件

以下のAWSサービスやツールがElastic Beanstalk環境の展開と管理に適切に設定されていることを確認してください。

地域開発環境の前提条件

以下のツールをローカルでインストール・設定し、エージェントの構築、実行、デプロイを行います。

.NET エージェントを作成してデプロイする

以下の指示は、以下を満たす最小エージェントの作成方法を説明します:

  • GETへの応答 /
  • POST上でボットフレームワークの活動を受け入れる /api/messages

プロジェクトディレクトリを作成する

mkdir aws-a365-agent
cd aws-a365-agent

.NETプロジェクトを初期化する

体験を効率化するために、この記事ではすでに用意されたサンプルを使用しています。 Agent365 Samples リポジトリをクローンし、dotnet\semantic-kernel\sample-agent サンプルに移動します。

Semantic Kernel サンプル エージェント - C#/.NET サンプルには次のものが含まれます。

dotnet\semantic-kernel\sample-agentにアクセスして、プロジェクトが正常に構築されているか確認してください:

dotnet restore
dotnet build

モデルの設定

Step 2: LLM設定の指示に従って、Open APIキーを使ってプロジェクトを設定してください。

ローカルでのテスト(任意)

  1. AWSにデプロイする前に、ローカルでエージェントをテストしてください:

    # Run the application
    dotnet run
    
  2. 別の端末でエンドポイントをテストします:

    # Test agent endpoint locally
    curl http://localhost:3978
    
  3. ローカルサーバーを停止するには Ctrl+C を押してください。

ビルドとデプロイ

このサンプルアプリケーションをビルド・デプロイする際に、お好みのオプションを選択してください:

オプション A: Visual Studioからビルドしてデプロイする

AWS Toolkit for Visual Studioを使用して、ガイド付きウィザードを使用して Elastic Beanstalk にアプリを発行します。

  1. ソリューション エクスプローラーで、プロジェクトを右クリックします。

  2. Elastic Beanstalkに公開を選択します

  3. Beanstalk Deployment Wizard をフォローしてください:

    • AWSの認証プロファイルを選択してください。
    • [リージョン] (たとえば、 us-east-1) を選択します。
    • [プラットフォーム] (.NET Core on Linux) を選択します。
    • 環境設定を設定してください。
  4. 展開 を選択します。

ウィザードはアプリケーションをAWSにビルド、パッケージ化、デプロイします。

オプションB:CLIを使ってAWS Elastic Beanstalkにビルド・デプロイ

Elastic Beanstalk CLI を使用して、.NET エージェントをパッケージ化し、64 ビットの Amazon Linux 2 環境にデプロイします。 AWS CLIとEB CLIが設定されていることを確認してください。 アプリはBeanstalkが設定した PORT 環境変数にバインドします。

  1. .NET アプリケーションをビルドして発行します。

    # Publish for Linux runtime (AWS Elastic Beanstalk uses Amazon Linux)
    dotnet publish -c Release -o ./publish --runtime linux-x64
    

    以下のコンテンツでProcfileを作成してください。

    web: dotnet ./SemanticKernelSampleAgent.dll
    
  2. .NETの Elastic Beanstalk を初期化します。 地域とプラットフォームを選択するよう促されます:

    eb init
    
  3. 選択:

    • プラットフォーム: 64bit-amazon-linux-2023-v3.7.0-running-.net-8
    • リージョン:希望するAWSリージョン(例: us-east-1)
  4. デプロイメントパッケージを作成し、デプロイします:

    cd publish
    zip -r ../deploy.zip .
    cd ..
    eb create aws-a365-agent-env
    eb deploy
    

    このコマンド:

    • Elastic Beanstalkのアプリケーションが作成されます。
    • ロードバランサーで環境を作ります。
    • あなたのアプリケーションをデプロイします。
    • 必要なAWSリソースの提供。
  5. 完成したら、Elastic Beanstalkのエンドポイントを手に入れてください:

    eb status
    

    エンドポイントを記録してください。 これは、次のようになります。

    http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com
    

    このエンドポイントはAgent 365 Dev Tools CLIで使用される messagingEndpoint です。

Note

本番環境では、Elastic BeanstalkでSSL/TLS証明書を追加してHTTPSを設定しましょう。 ボットフレームワークは本番エンドポイントでHTTPSを必要としています。

非Azure ホスティング用に構成する

Elastic Beanstalk プロジェクト フォルダーに a365.config.json を手動で作成します。

Important

Azure 以外のホスティングの場合は、messagingEndpoint の値を /api/messages パスを含む Elastic Beanstalk URL に設定します。

a365.config.jsonファイルはこんな感じになるはずです:

{
  "tenantId": "YOUR_TENANT_ID",
  "environment": "prod",

  "messagingEndpoint": "http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/api/messages",

  "agentIdentityDisplayName": "MyAwsAgent Identity",
  "agentBlueprintDisplayName": "MyAwsAgent Blueprint",
  "agentUserDisplayName": "MyAwsAgent User",
  "agentUserPrincipalName": "myawsagent@testTenant.onmicrosoft.com",
  "agentUserUsageLocation": "US",
  "managerEmail": "myManager@testTenant.onmicrosoft.com",

  "deploymentProjectPath": ".",
  "agentDescription": "AWS-hosted Agent 365 Agent"
}

以下の表は重要な構成フィールドとその目的をまとめたものです。

フィールド 意味
messagingEndpoint Elastic BeanstalkのURL + /api/messages
deploymentProjectPath スタンプ .env 行われる場所

ビルドエージェント365エージェント

エージェントコードがAWSエンドポイントに対して実行されたら、 Agent 365開発ライフサイクル の残りのステップに従ってAgent 365エージェントを設定してください。

エージェントをエンドツーエンドで検証してください

これらのチェックを使用して、AWS でホストされているエージェントに到達可能であることを確認し、Bot Framework アクティビティを受信し、Agent 365 サーフェス全体で正しく応答します。

Elastic Beanstalkの接続性を確認する

Elastic BeanstalkエンドポイントにGETリクエストを送信します。

curl http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/

リクエストは次のメッセージを返すはずです:

AWS Agent is running.

Elastic Beanstalkのログでボットフレームワークのメッセージが届いていないか確認してください

Elastic Beanstalkのログを使って、エージェントがBot Frameworkのアクティビティを受け取り、正しく応答しているかを検証してください。

eb logs

またはリアルタイムでログをストリーミングすることもできます:

eb logs --stream

エージェントにメッセージが届いた後、次のようになります:

POST 200 /api/messages
Received activity: { ... }

エージェント365の表面からの試験剤

環境によっては、異なるインターフェースでエージェントをテストすることができます。

  • エージェント プレイグラウンド
  • Teams(公開された場合)
  • エージェント・シェル
  • フェデレーションサーフェス

メッセージを送信したり、Elastic Beanstalkのログを検証したりできます。 Microsoft Agent 365 SDKを使ってエージェントをテストする方法や、Agents Playgroundテストツールでエージェントの機能を検証する方法を学びましょう。

開発者のワークフロー

セットアップが完了したら、反復開発のワークフローに従います:

現地で開発・テスト

自動リロード付きの急速な成長には ウォッチモード をご利用ください:

# Automatically rebuild and restart on file changes
dotnet watch run

コードを変更し、保存し、デプロイ前にローカルでテストしてください。

AWS Elastic Beanstalkへのビルドと再デプロイ

変更を導入する準備ができたら:

# Clean previous builds (optional but recommended)
dotnet clean

# Publish optimized release build
dotnet publish -c Release -o ./publish --runtime linux-x64

# Create deployment package
cd publish
zip -r ../deploy.zip .
cd ..

# Deploy to AWS
eb deploy

テストと監視

エージェント365の表面を使い、Elastic Beanstalkのログを監視してテストしてください:

# Stream logs in real-time
eb logs --stream

アイデンティティや設計図、ボットエンドポイント、権限を再作成する必要はありません。

Troubleshooting

このセクションを使って、AWS Elastic Beanstalk上でAgent 365エージェントをデプロイ・実行する際の一般的な問題を診断し解決してください。 接続性や健康診断もカバーしています。 また、ポートバインディング、ビルドエラー、ライセンス問題にも対応しています。

ヒント

Agent 365トラブルシューティングガイドには、Agent 365 の開発ライフサイクルの各段階に対応した高レベルのトラブルシューティング推奨事項、ベストプラクティス、トラブルシューティングコンテンツへのリンクが含まれています。

メッセージングエンドポイントがリクエストを受け取っていません

以下の詳細をご確認ください:

  • あなたのエンドポイントは正確に以下の通りです:
    http://<your-app>.elasticbeanstalk.com/api/messages
  • あなたのElastic Beanstalkの環境は健康的です。 eb healthを使ってチェックを使います。
  • セキュリティグループは受信HTTPまたはHTTPSトラフィックを許可しています。
  • ファイアウォールルールやVPCの制限はありません。

アプリケーションの健康問題

環境の健康状態を確認しましょう:

eb health --refresh

詳細なログを見る:

eb logs

ポートバインディングの問題

PORT環境変数で指定されたポートでアプリケーションがリッスンしていることを確認します。 Elastic Beanstalk は、この値を自動的に設定します。

.NET のビルドまたはランタイムの問題

以下のコマンドを使ってビルドエラーをチェックしてください:

# Clean and rebuild
dotnet clean
dotnet build --verbosity detailed

.NETバージョンを確認します。

dotnet --version
dotnet --list-sdks

パッケージの問題をチェックしてください:

# List installed packages
dotnet list package

# Update packages
dotnet restore --force

ライセンス譲渡の失敗

有効なMicrosoft 365 ライセンスを手動で割り当てるか、サポートされている場合はライセンスのないユーザー パスを使用します。