
Amazon Bedrock AgentCore udostępnia podgląd aplikacji WWW na żywo z sesji agenta
Amazon pokazuje w swoim przykładzie, jak obserwować aplikację internetową w czasie, gdy agent programistyczny zmienia jej pliki. Podstawą rozwiązania jest środowisko Amazon Bedrock AgentCore runtime, w którym każda sesja agenta działa we własnej, izolowanej microVM. Session endpoint zapewnia uwierzytelniony dostęp do portów dozwolonych dla tej konkretnej sesji.
Taka konstrukcja rozdziela dwie ścieżki komunikacji. InvokeAgentRuntime służy do kontaktu z samym agentem. Inne usługi uruchomione obok niego w tej samej sesji, na przykład deweloperski serwer WWW lub trasa statusowa, są osiągalne przez Session endpoint, jeżeli ich porty zostały jawnie wpisane do konfiguracji runtime.
Konfiguracja portów i uzyskanie adresu
Podczas tworzenia agent runtime parametr allowedPorts przyjmuje od jednego do pięciu pojedynczych portów albo zakresów portów. Muszą one mieścić się między 8000 a 12000 i nie mogą obejmować portów zarezerwowanych przez platformę. Aplikacje udostępniane w ten sposób muszą nasłuchiwać na adresie 0.0.0.0.
InvokeAgentRuntime zwraca URL Session endpointu w nagłówku X-Amzn-Bedrock-AgentCore-Runtime-Session-Endpoint-Url. Obsługujące tę funkcję SDK udostępniają tę samą wartość jako sessionEndpointUrl. Adres jest przypisany tylko do jednej sesji. Każde żądanie wymaga poświadczeń, a endpoint przestaje działać po zakończeniu powiązanej sesji.
Uwierzytelnianie i rodzaje ruchu
W przypadku runtime autoryzowanego przez IAM żądania HTTP, strumienie HTTP/2 i handshaki WebSocket kierowane przez Session endpoint wymagają podpisów SigV4. Wywołujący potrzebuje również uprawnienia bedrock-agentcore:InvokeAgentRuntimeProxy. Runtime korzystający z przychodzącego mechanizmu JWT authorizer wymaga zamiast tego tokenów bearer.
Session endpoint przenosi ruch HTTP/1.1 oraz HTTP/2, w tym server-sent events i gRPC, a także połączenia WebSocket. W pokazanym rozwiązaniu pozwala to przesyłać przez ten sam mechanizm dostępu zarówno zwykłą zawartość witryny, jak i połączenie odpowiedzialne za aktualizacje z serwera deweloperskiego.
SDK bedrock-agentcore zawiera klienta Session endpointu, który może wystawić lokalny endpoint. Klient dodaje poświadczenia do żądań przeglądarki oraz handshake’ów WebSocket, a następnie przekazuje je do Session endpointu. Przeglądarka łączy się więc z adresem lokalnym, natomiast klient realizuje uwierzytelnione przekazanie ruchu do sesji.
Połączenia w przykładowej konfiguracji
Agent programistyczny działa na porcie 8080. Serwer deweloperski Vite korzysta z portu 8090, a agent wystawia trasę statusową na porcie 8081. Przez Session endpoint dozwolone są wyłącznie porty 8090 i 8081. Port 8080 pominięto, ponieważ InvokeAgentRuntime dociera do agenta bez korzystania z Session endpointu.
Gdy agent zapisuje zmodyfikowany plik, Vite przesyła informację o zmianie swoim połączeniem WebSocket do hot reloadu. Połączenie przechodzi przez Session endpoint i lokalny endpoint do przeglądarki. Wyświetlana witryna aktualizuje się dzięki temu bez ręcznego odświeżenia strony. Przepływ łączy zmiany plików wykonywane przez agenta, stale działający serwer Vite i uwierzytelniony transport WebSocket w ramach jednej sesji.
Wymagania i granice dostępu
Amazon wymienia Python 3.10 lub nowszy, bedrock-agentcore 1.25.2 lub nowszy oraz boto3 1.43.122 lub nowszy. Przykład wymaga również Node.js 22 lub nowszego wraz z npm, systemu Git, środowiska Jupyter i dostępu do Claude Haiku 5.5 w Amazon Bedrock.
Lista portów bezpośrednio kontroluje dostęp. Żądanie skierowane do portu spoza allowedPorts zostaje odrzucone odpowiedzią HTTP 403 AccessDenied. Tak samo traktowane jest żądanie bez poświadczeń. Gdy odmowa pochodzi z runtime, treść odpowiedzi jest pusta, a kod błędu znajduje się w nagłówku odpowiedzi.
Dostęp do usługi pomocniczej zależy zatem od trzech warunków: aplikacja musi nasłuchiwać na wymaganym adresie, jej port musi znaleźć się w konfiguracji dozwolonych portów, a każde żądanie lub połączenie musi zawierać poświadczenia właściwe dla wybranego trybu autoryzacji. Ponieważ URL jest związany z jedną sesją, wygasa razem z nią.
Pełna ścieżka ma wyraźnie określone role. InvokeAgentRuntime kontaktuje się z agentem i zwraca adres sesji. Session endpoint wystawia tylko skonfigurowane porty pomocnicze. Lokalny klient SDK dodaje uwierzytelnienie do ruchu przeglądarki. Vite używa następnie WebSocketu, aby przekazać zapisane zmiany i zaktualizować bieżący podgląd bez przeładowania strony.
Kluczowe jest rozróżnienie portu 8080 od portów 8090 i 8081. Pierwszy należy do bezpośredniej ścieżki wywołania agenta, natomiast dwa pozostałe ilustrują dostęp proxy ograniczony do sesji. Ten podział wyjaśnia zarówno konfigurację runtime, jak i możliwość oglądania działającej witryny przy zachowaniu zwykłego interfejsu wywoływania agenta.