استقرار Amazon Bedrock AgentCore با Terraform
خلاصهٔ کاملتر
Amazon Bedrock AgentCore پلتفرم مدیریتشده AWS برای اجرای AI agentها در پروداکشنه. به جای اینکه خودت Lambda، API Gateway، DynamoDB و جریانهای auth رو به هم وصل کنی، AgentCore این لایه رو برات میسازه. اجزای اصلیش اینان: AgentCore Runtime (محیط سرورلس ARM64 با پشتیبانی از workloadهای تا ۸ ساعت)، AgentCore Gateway (تبدیل APIها، Lambda، و سرورهای MCP به ابزارهای قابل استفاده توسط agent)، AgentCore Memory (حافظه پایدار بین sessionها)، Policy مبتنی بر Cedar، و AgentCore Identity برای مدیریت هویت در workloadهای خودکار.
نویسنده یه Infrastructure Bootstrapper Agent ساخته؛ agentی که با زبان ساده درخواستهای ساخت زیرساخت AWS رو میفهمه، اسکیمای CloudFormation رو پیدا میکنه، توضیح میده چی میخواد بسازه، تأییدیه میگیره و Cloud Control API رو فراخوانی میکنه. برای مثال میشه نوشت: «یه SQS queue به اسم order-events در eu-central-1 با visibility timeout پنج دقیقه بساز.» این agent همچنین میتونه هزینهها رو از Cost Explorer بخونه و CloudWatch Logs رو جستجو کنه.
معماری پروژه از سه رانتایم AgentCore تشکیل شده: Main Orchestrator (با Strands SDK)، رانتایم MCP برای Cloud Control API با ۱۴ ابزار، و رانتایم MCP برای Cost Explorer با ۷ ابزار. همهشون از طریق یه Gateway یکپارچه به هم وصل میشن. با یه terraform apply کل این زیرساخت ساخته میشه: ۳ رانتایم، ۱ Gateway، ۵ نقش IAM، ۱ Cognito User Pool با M2M client، ۱ پروایدر OAuth2، حافظه با استراتژی خلاصهسازی، و موتور Cedar policy.
یه ترفند جالب در این پیادهسازی _CODE_VERSION هست. AgentCore وقتی رانتایم رو اول بار میسازه ZIP رو از S3 کش میکنه و آپلود فایل جدید به S3 به تنهایی کافی نیست. راهحل اینه که هش سورس کد به عنوان environment variable تزریق بشه؛ وقتی کد عوض میشه، هش عوض میشه، env var عوض میشه، و AgentCore تغییر config رو تشخیص میده و ZIP جدید رو میکشه:
resource "aws_bedrockagentcore_agent_runtime" "main" {
environment_variables = {
_CODE_VERSION = null_resource.build.triggers.source_hash
GATEWAY_URL = aws_bedrockagentcore_gateway.main.gateway_url
}
}پروایدر hashicorp/aws هنوز پوشش کاملی برای AgentCore نداره و سه مشکل اصلی وجود داره. اول اینکه فیلد grantType در Gateway targets بیصدا حذف میشه و احراز هویت خروجی کار نمیکنه. دوم اینکه هیچ resourceای برای Policy Engine وجود نداره. هر دو با null_resource و اسکریپت AWS CLI حل شدن. سوم اینکه فیلدهای description و protocol_configuration در Gateway بعد از ساخت از API خونده نمیشن و هر بار terraform plan اونا رو تغییریافته نشون میده؛ راهحلش ignore_changes هست.
یه نکته فنی مهم اینه که رانتایمهای AgentCore روی Graviton (ARM64) اجرا میشن. اگه روی x86 پکیج Python بسازی، در runtime خطاهای import میگیری. ابزار uv با فلگ --python-platform aarch64-manylinux2014 این مشکل رو حل میکنه. ضمناً چون /var/task در AgentCore read-only هست، پکیجهایی که cache رو در دایرکتوری خودشون مینویسن باید patch بشن تا از /tmp استفاده کنن.
نکات کلیدی:
- AgentCore یه پلتفرم کامل برای AI agentهای پروداکشنیه، نه فقط یه رانتایم ساده
- با یه terraform apply میشه کل زیرساخت چندرانتایمی رو راهاندازی کرد
- ترفند _CODE_VERSION برای force-deploy کردن تغییرات کد ضروریه
- پروایدر Terraform هنوز برخی قابلیتهای AgentCore رو پوشش نمیده و باید با null_resource جاهای خالی رو پر کرد
- رانتایمها ARM64 هستن و packaging باید صریحاً برای این معماری انجام بشه
- دایرکتوری /var/task read-only هست و پکیجهایی که cache مینویسن باید patch بشن




