Практычны курс Bedrock AgentCore: Terraform, LangGraph і выявленыя проблемы.
Чым займаюцца Runtime, Gateway, Memory і Identity у AgentCore, а таксама шэсць прычын падчас развяртання, апрыксамныя цены і парадокс у порэванні з хоставанням агента, створанага власноруч, на AWS.
Крыніцы: Amazon Bedrock AgentCore, What It Is, How to Use It, and What Hosting Looks Like
Размешчанне агента AI на AWS самастойна значыць неабяжнае рашэнне проблем з ізоляцыей сесій, доступам да інструментаў, памяцюю і аутантыкацыей. Amazon Bedrock AgentCore — гэта кераваная версія таго ж задачы, якая ў загальнае распаўсцеленне з’явілася ў жоўтні 2025 года. Адны з практычных спосабоў ацэнкі такой платформы — гэта перастаць чытаць пра яе і стварыць ўсё на практыцы; маленькі толькі для чытання агент DevOps triage служыў для гэтай меты. Ён быў розмешчаны за дапамогою Terraform у зьвязку з тым, што не было вікорыстана власная CLI-інструменталка AWS, а таксама напісаны на LangGraph у зьвязку з тым, што не было вікорыстана SDK Strands AWS. Обе выборы былі намераваныя, адтуды што метаю было з’ясавіць, што можа працаваць па-іншым спосабам, чым стандартныя рашэння.
Што такое AgentCore
AgentCore — гэта сукупнас каналізаваных элементаў, якія абрабатваюць складныя, ношучыя навантажэння аспекты працы агента ў працоўным сераверэ, і якія дазволяюць будучым фрэймворкам агента застацца без змян. Галоўная прысоедзіце — гэта можлівасць работы з будзь-якім існуючым фрэймворкам, і ў большасці случаў гэта справджваецца. Прыймаюцца LangGraph, LangChain, CrewAI, Strands асабліва і звычныя вызовы API.
Элементы і ўласныя задачы кожнага з іх:
- Runtime храніць код агента і дае кожнай сесыі сваю аўтанонімную мікро-VM. Калі ён не працуе, ён скашоўваецца да нуля, а плата выконвалася за секунду пад час працы.
- Gateway ператварае існуючыя функціі Lambda або API на інструменты, сумесныя з MCP, якія можа выкарыстоўваць агент, таму не трэба пісаць сабе сервер MCP.
- Memory храніць історыю кансэрвацый у вачынку короткага тэрміnu і, за выборам, можа выдліваць дзяўальныя знання з разных сесый.
У ананунце AWS Summit з чэрвеня 2026 года быў аднаведзены слой Harness і можлівасць натыўнага пошуку ў інтэрнэце. Оба яшчэ настолькі моладыя, што крытычная інфраструктура ўсё ж не должна паспакоўвацца на іх.
Процэс адаптавання ўжо быў перабудованы раз. Пачатковы інструментарый Starter Toolkit CLI цяпер ўважаецца застарэлым і заменённым пакетам npm на базе CDK пад назвай @aws/agentcore. У навучальным матэрыяле, які показвае налаштаванне agentcore і запуск agentcore як окрэмыя крокі, опісваецца стары падход. Гэтыя дэталі важлівы, таму што яны паказваюць тэндэцыі змян: праз дзев’яць месца пасля загальнага запуску спосаб адпрацоўкі пачатковых крокаў ужо быў перазрабоўваны, таму ўсё, што напісана пра продукт, мае певны тэрмін службы.
Праект для тэставання
Агент адпавядае на запытанні, такія як чы гэтычасна працююць якія-небудзь алармы CloudWatch чы які ў стане конкрэтная інстанцыя EC2. У ўсёму ёсць два справжніх, толькі для чытання інструментаў, таму нічога з таго, што ён можа вікорыстоўваць, нельга зменіць інфраструктуру — можна толькі яе спазіраваць. Агент памятае ход размовы між крокамі, а кожны перэхад между компонентамі паверхнева атрыбутуецца.
LangGraph быў выбран заместо Strands, таму што Strands — гэта саўстанні фрэймворк AWS, які забезпечвае найболей павольны працэс адработкі кожнага афіцыйнага прыклада. Вжыцце іншага раўнасільна было справжнім тэстам тэзы пра універсальнасць фрэймворка, і гэта падтвердзілася завдзяк наяўным інструментам. З таго жа разу Terraform быў выбран заместо CLI. Мастэр праглядае швырага запуску дэманстрацыі, а метаю было побачыць кожныя адносы доверы IAM і кожную звязь між компанентамі, а не ўтвараць іх непазірна. Як выявілася, такая візуабільнасць мала большое значэнне, чым чакалося.
Архітэктура складаецца з контэйнера Runtime, які запускае агента LangGraph, які ведае пераказы з Гейтвэем, які працюе праз MCP і надае два інструменты на базе Lambda. У AgentCore Memory зберагаюцца пераказы, а Cognito выдае токены між машынамі для кожнага крока.
Адвіцяйце да чытання прыштоўкі пры стварэнні скрыптав
Перш чым быў напісаны які-небудзь код Terraform, версія на консолі была працавана аднойчы, галоўная мета — пазнакоміцца з тым, што автаматызуецца. Цяжкасць гэтага прыёму варта пераняць нават тады, калі Terraform адпраўляе рэальную развёртку, таму што чытаць файлы інфраструктуры стае набагато простае пасля таго, як пазнаёмся з фарматамі, якія ў яных выкарыстоўваюцца.
Рэжыстры кантэйнераў выклікае патрэбу ў ручным адступленні, незалежна ад таго, які інструмент карацься для рэшэння іншых задач, адтолькі гэты крок Terraform не можа выкарыстоўваць. Стварэнне рэпазітарыю ўсё выконваецца на аднай экране консолі. Аднак імэдж павінен прыйсці іншым спосабам, адтолькі ў консалі няма кнопкі для стварэння Dockerfile. Гэта выкааняецца ў тэрмінале за дапамогою каманды docker buildx build для платформы linux/arm64, пасля чаго выканаецца апылкаі. Весь сэрвіс заключаецца у ручным назначэнні платформы; калі гэтага не зрабіць, імэдж будзе ствараны без проблем, але потым будзе таямна адхілены, калі Runtime прабудзе яго запуск, адтолькі Runtime работае толькі на Graviton.
Калі імэдж будзе створаны, консоль паказвае яго точны URI. Гэты строкавы тэкст ёсць едынай інформацыяй, якая павінна перайсці з ручна выкананых дзеянняў у тое, што знае Terraform — будзь то ў файле tfvars чы ў поле з імэджам кантэйнера Runtime для тых, хто застаецца ў консалі.
Кампанія AgentCore для Memory, Gateway і Runtime знаходзіцца у сваёй секцыяй консолі Bedrock. Кожна з іх — гэта форма з тымі ж палаткамі, які задае Terraform, і гэта логічна, адказе Terraform вікорыстоўвае тую ж API пад сабой.
- У форме Memory запытваюцца назва і час, пры якім зберагаюцца кароткатрывалыя запісы.
- У форме Gateway запытваюцца протакол, роль выканання і спосаб аўтэнтыфікаціі вызываючых. Проблема з Cognito, пра якую пісана ніжэй, таксама з’яўляецца тут у вачынку-спадным спіску, які вымагае выбору.
- У форме Runtime запытваюцца URI рэжыстрару, роль і тая ж настройка автарызатора, як у Gateway.
Нічага з гэтага не ёсць складным, калі формы знаходзяцца пры вас. Terraform застаецца лепшым выборам для усяго, што мае быць стойкім, адказе пераход з семі форм у трох секцыях консолі — гэта не працэс развёртывання, які хто-небудзь захочаць павтарыць або перадаць колеге.
Дзе я здарылася атака
Зображэнні павінны быць у фармаце ARM64
Час выканання можа быць толькі на апаратным прыстрое Graviton, без жадных выключэнняў. Звычная нарабатка з дапамогай Docker на большасці ноутбукав дае зображэнне у фармаце amd64, якое тыхо адхіляецца пад час развяртання. Кожная нарабатка трэбуе выкорыстоўваць каманду buildx з флагам платформы arm64. Коментар прымусова вышэй за лінію FROM у файле Dockerfile ёсць простым захаваннем, калі інакш гэта можа быць забута.
Контракт Lambda сервера Gateway
У калькільных пасажах блога паказваны заходы Lambda, якія знаходзяцца ў „пакетах“ з пазначэнням toolName і параметрамі. Насамперады, заходам являюцься вхідныя настройкі інструмента у форме простага словніка. Асэнсавны назыв інструмента прадаёцца праз элемент context.client_context.custom пад ключам bedrockAgentCoreToolName, з дадзеннем называ меты гэйтвейу і роздзелачыкам у віглядзе трох апострофаў. Разлік стаў зрозумелы толькі пасля безпосерэдньага чытання дакументацыі AWS пра Lambda-target, а не пасля паверненняяся да трохі іншых апісаў. Большая частка інфармацый пра гэты продукт прадаёцца з перыяду прыгляду або ўсё проста ёсць некорэктным.
Токены Cognito не маюць атрыбута aud
Што стосуецца гэтага прынцыпу, яму патрэбна была часаўка, каб ўсё разумець. Калі для аўтэнтыфікацыі межа машына-машына вікорыстоўваецца Cognito, праходзячы праз метод grant client_credentials без удзеле чалавека, Cognito выдае токен доступу, а не токен ID. Токены доступу ніколі не маюць атрыбута aud. Лячы токены ID, але у працэсе M2M немае токена ID, так як няма корыстніка, якому можна было б яго выдаты. Пярэдбачаецца налаштаванне автарызатора JWT у AgentCore, каб ён пераканаліваў атрыбут allowed_audience па такім токену, і рэзультатам стае код 403 без явнай прычыны. Рашэнням ёсць налаштаванне allowed_clients, якое пераканалівае атрыбут client_id, які ў токенах доступу Cognito адсутны.
boto3 не можа запускаць Runtime, захістаныя JWT
Гэта была найбольшая неспадка — гэта не спосаб перамены, а рэчыця ў самай дапаможніцы API AWS. Калі агент вікорыстоўвае автанацыяцію у стылі OAuth, то InvokeAgentRuntime не можа быць вызваны праз AWS SDK. У такім случае вікорыстоўваецца сырый запіт HTTPS з токенам-несучым у заголовку Authorization, які надсылаецца на URL, створаны вручную з ARN рэалайзу, заштыфрованым у паце. Кожны прыклад з boto3 прыпускае стандартны шлях IAM і SigV4. Калі настаўліваецца спецыяльны автанацыяцыйны модуль custom_jwt_authorizer, як і трэба для нечыста внутршняго відношэння, усе такія прыклады перастаюць дапамагаць.
Конфлікт пакетаў у Python
Пакет mcp для Python выклікаў мажорную версію 2.0.0, якая перэйменавала внутрэшнія модулі, тады як langchain-mcp-adapters не адгукнуўся. Ён заявляе прыемнасць з mcp версіі 1.24.0 і вышэй, без вялікага верхньего ліміту, таму просты запуск пакета праз pip зараз выкалікае несумелую пару. Хаця б таму, што ўсё выклікае явныю парадкой, з аднойчым бягам ошыбкі імпорту, а не якім-небудзь тонкім багам. У тэстовым праекце версія mcp фіксуецца на 1.29.0. Пераканайцеся, чыяжа ўсё ешча потрэбна такая фіксацыя, адколі тыхі патчы могу ператворыць праваку на зайвы бялк.
Развертанне — гэта не проста аплікацыя
Рэсурс Runtime патрабуее абобраз кантэйнера, які вялічыцца ў рэжыстрэ, і Terraform не можа стварыць і выкласты абобраз сама ў процэсе apply. Правільная парада дзеянняў — спачатку стварыць толькі рэпазітарый у рэжыстрэ, стварыць і выкласты абобраз параду Terraform, а потым прыняць усе іншае. Інжынеры, якія работаюць з набрамі AgentCore большага размеру, падключылі CodeBuild да графа Terraform за дапамою null_resource, каб усунуць гэтыя проблемы. Гэта разумны наступны крок, і ўзнака таго, што гэтыя недагадкі ёсць распространенымі, а не персональнымі адказамі.
Стан размовы павінен знаходзіцца ў адным месцы
Гэта не баг, а структурны выбар: агент намеравана не выкарыстоўвае власны чэкпойнтар LangGraph для стану размовы, хоць большасць нарадчыкаў LangGraph прызначае яго як стандарт. Сесіі пад час выканання можуць зменшыцца да нуля і перадаць чыстую мікроVM пасля кожнага вызову, таму все, што зберагаецца толькі ў памяці процэсу, знікае. Памяць AgentCore ёст той стабільны элемент гэтага межы. Выкананне локальнага чэкпойнтара падле Памяці стварае два суперэфектныя запісі той самай размовы, і раней чы пазней яны будуць не згодны ў тым, што было сказана. Выберыце адны. Памяць — гэта разумны выбар, калі ўважаць, што яна застаецца пасля перзапуску.
Які ў гэтага кошт
Цэны выклікаюцца за спраўнае выкарыстоўвання рэсурсаў без мінімуму, што ёсць адлучным параметрам для таго, што большую частку часу паспявае на адпаведзь LLM. У рэзультаце сума за выкарыстоўвання складаецца з калькуляцый за кілька невялікіх элементаў, якія вімерваюцца окрэма, а не з адной цыфры. На момент напісання:
- Комісія за выканання складае прыблізна 9 цэнтавых за кожны гадзіну vCPU і апошні 1 цэнт за кожную гадзіну GB; вычысляецца па секундах, пры чым мінімум — адна секунда. Такім чынам, запіт на тры секунды коштае тры секунды, а не заокругленая да хвілінкі кантэйнер.
- Комісія за Gateway складае прыблізна палову цэнтавую за кожны тысяча вызоў MCP.
- Памяць коштае 0,25 цэнтавых за кожныя 1 000 збераганых дадзенняў і 0,5 цэнтавых за кожныя 1 000 выкарыстоўваных дадзенняў.
- Выкарыстоўванне ідэнтыфікатора праз Runtime або Gateway замест на прымытны вызов не караеся допамогай, і гэта стосуецца практычна всіх сценарыяў.
Нічыя з гэтых сум не включае выклікі мадэляў, якія для будзь-чаго большага, чым просты тэсты, стануць самай большой часткай у суме рахунка, і на якія AgentCore не вплывае. Гэта проста цена, яку Bedrock берае за выбраную мадэль. Новыя абоненты отрымаюць 200 долераў у крэдытах AgentCore, што достатнька, ўпорацаваць і знішчыць такі праект колькі разоў. Перад апыленаўся на якія-небудзь цыфры трэба пераканацца на офіцыяй сторонцы з цэнамі, адколі цены вядзома змяніліся ўжо не раз з моменту загальнага запуску і, верагатна, змянюцца знову.
Управляемая платформа чы ручнае хоставанне
Спецыяльна стак-структура для размешчання агента, створаная вручную, дае корыстныя аспекты для параджэнтавання, а чыстая заключэння мае два баку. AgentCore забезпечвае ізоляцыю сэсій, кераваныя MCP-шлюз, стойкую памяць і мадэль аўтэнтыфікацыі, якія працуюць разам, што ягоўна быстрэе, чым розрабатваць правілы доверлівасці IAM вручную, і самэль гады было пасвячана самэль гэтым правілам. Гэта значны частак незрознічанай працы з інфраструктурой, якая знімаецца з плечаў. Для тых, чыя задачы — ствараць агента, а не платформу для яго размешчання, такі кампенсацыйны падход, верагодна, варты ўвагі.
Тое, чаго не дае платформа, — глыбока адзінаковасць ў пацэнцыях пра тое, што агенту следуе разрэшыць робіць, сколькі гэта мае коштаць у рэальных умовах, чыі фрэймворк насправды ёсць найкрашчым з тымі, што маюць найбольш дакументаваныя способы рэалізацыі. Таксама не хапіцца стабільнасць. CLI быў перабудаваны адназнач, і было выявлена прынеймна трое момантов, калі дакументацыя AWS не саступалася з рэальным API ў незначных, але значных аспектах. Нічга з гэтага не робіць продукт паслабленым. Гэта проста опісвае моладыя керованыя службы, якія быстра развіваюцца, і якія лепшая пазнаваць да пачатку ўжыцця, чым адкрываць іх у серэдзіне працэсу развяртання.
Усё гэта было фактычна створана, а не проста ўказана. Кожны рэсурс мае Terraform, агент ўсё готавы, існуюць засобы Lambda, а набор тэстаў не патрабуе крантактаў AWS, таму все, што можна было пераканацца, было пераканацца спачатку. Для падобнага стварэння найбольш верыгодныя месцы, дзе можна зіткнуцца з тым самым проблемам, — гэта флаг платформы ARM64 для адпраўкі і параметр allowed_clients у налаштаваннях автарызатора Cognito.