はじめに
私が普段検証に使用しているPCはMacなのですが、会社のPCはWindowsです。
会社のPCでも試してみようと思ったのですが手順が微妙に違い、戸惑ったので残しておこうと思います。
今回は仮想化、エージェント作成、Runtimeにデプロイまで実施します。細かい解説などは基本的に過去記事と同様の内容になるので、そちらを参照いただければ。
手順
仮想化
最初で最大の難関です。
まず以下で仮想化環境の作成を行います。
uv venv
で、仮想化環境の有効化をしようとすると以下のようなエラーになりました。
どうやらWindowsはコマンドが違うようです。
私の場合、以下のようなコマンドで成功しました。
.venv\Scripts\Activate.ps1
というかそもそも、会社によってはPythonの仮想化自体をデフォルトで許可していないケースもあります(私もそうでした)
その場合、実行すると以下のようなエラーになると思います。
.\venv\Scripts\activate : File C:\Users\sophytoeat\NeuralClothSim\venv\Scripts\Activate.ps1
cannot be loaded because running scripts is disabled on this system. For more information, see
about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
これはもう、PCのポリシーを変えるしかなくて、その手順も記載しておきます。
ポリシーの変更
以下のコマンドを実行すると今操作しているPCの権限を確認できます。
実行時は
Windows Powershell→右クリック→「管理者権限で実行」を選択して起動してください。
Get-ExecutionPolicy
「Restricted」と出たら変更してあげる必要があります。
続けて以下のコマンドを入力します。
Set-ExecutionPolicy RemoteSigned
「本当に実行しますか?」みたいに聞かれますが、基本的に「yes」で大丈夫です。
(会社のPCで実施する場合、一応管理者に確認は必要かも...)
ここまででPythonの仮想化はできているはずなので、実際にエージェントを作成していきます。
実装
実装は以下の通りなので参考にしてみてください。
なお、必要なモジュールのインポート作業は省いています。過去記事等を参考に実施していただければ幸いです。
Strands Agents
from strands import Agent
agent = Agent()
agent("JAWS-UGについて教えて")
uv run agent.py
私はこの時、以下のようなBedrockの呼び出しエラーになりました。
File "/usr/local/python/3.12.1/lib/python3.12/site-packages/botocore/client.py", line 1078, in _make_api_call raise error_class(parsed_response, operation_name) botocore.errorfactory.AccessDeniedException: An error occurred (AccessDeniedException) when calling the ConverseStream operation: User: arn:aws:iam::hogehoge:user/hogehoge is not authorized to perform: bedrock:InvokeModelWithResponseStream on resource: arn:aws:bedrock:ap-northeast-1:hogehoge:inference-profile/apac.anthropic.claude-sonnet-4-20250514-v1:0 with an explicit deny in an identity-based policy └ Bedrock region: ap-northeast-1 └ Model id: apac.anthropic.claude-sonnet-4-20250514-v1:0 @
権限的な問題はなかったはずなので、あとは会社のorganization配下のアカウントを使用していたため、最上位のアカウントで呼び出しを制限していたのだと思います。
私は交渉して権限の強いアカウントを払い出してもらい、会社アカウントでも検証に利用することができています。
その辺は各々の環境に依存してしまいますね...
同じような問題に陥っている方は、一度会社のアカウント管理者に相談してみてはいかがでしょうか。
ここの挙動が確認できたら、Runtimeにエージェントをデプロイしていきます。
AgentCore Runtime
以下のように各ファイルを作成していきます。
プロジェクト直下/
├── runtime_ex.py # エージェントのコードが書いてあるコード
├── requirements.txt # 依存関係をここに記述
└── __init__.py # これは空っぽでOK
strands-agents
bedrock-agentcore
from strands import Agent
from bedrock_agentcore.runtime import BedrockAgentCoreApp
agent = Agent()
app = BedrockAgentCoreApp()
@app.entrypoint
def invoke(payload):
user_message = payload.get("prompt", "")
response = agent(user_message)
return str(response)
if __name__ == "__main__":
app.run()
configureコマンドからlaunchまで以下で簡単に行えます。
uv run agentcore configure --entrypoint runtime_ex.py
uv run agentcore launch
動作確認
起動は以下のコマンドで実施できます。
uv run agentcore invoke '{"prompt": "JAWS-UGについて教えて"}'
以上で、StrandsAgentsの作成、AgentCoreへのデプロイまでのWindowsでの手順でした。
さいごに
今回は完全に備忘録でした。
WindowsとMacで実施手順に差異があったり、会社の環境で実施していると制約があったり、世知辛い世の中だと思いますが、そんな同じような悩みで悩んでいる方の助けに少しでもなればいいなと思います。
