Triển khai AI Agent trên Amazon Bedrock AgentCore bằng GitHub Actions

Tác giả: Prafful Gupta và Anshu Bathla
Ngày phát hành: 16 JAN 2026
Chuyên mục: Advanced (300), Amazon Bedrock AgentCore, Amazon Machine Learning, Best Practices, Strands Agents, Technical How-to

Gần đây, AWS đã công bố Amazon Bedrock AgentCore, một dịch vụ linh hoạt giúp các nhà phát triển tạo và quản lý AI agent một cách liền mạch trên các framework và mô hình khác nhau, dù được lưu trữ trên Amazon Bedrock hay các môi trường khác. Cụ thể, AgentCore Runtime cung cấp một môi trường lưu trữ an toàn, phi máy chủ và được xây dựng có mục đích để triển khai và chạy các agent hoặc công cụ AI. AgentCore Runtime không phụ thuộc vào framework, hoạt động liền mạch với các framework phổ biến như LangGraph, Strands và CrewAI để triển khai các agent và công cụ AI của bạn với khả năng tự động mở rộng và bảo mật tích hợp.

Trong bài viết này, chúng tôi trình bày cách sử dụng workflow GitHub Actions để tự động hóa việc triển khai các AI agent trên AgentCore Runtime. Cách tiếp cận này mang lại một giải pháp có khả năng mở rộng với các kiểm soát bảo mật cấp doanh nghiệp, cung cấp tự động hóa tích hợp và phân phối liên tục (CI/CD) hoàn chỉnh. Bằng cách triển khai một pipeline toàn diện, chúng tôi cho phép triển khai agent liền mạch với các phương pháp hay nhất của AWS, bao gồm xác thực OpenID Connect (OIDC), kiểm soát truy cập với quyền hạn tối thiểu và phân tách môi trường. Giải pháp của chúng tôi tạo điều kiện cập nhật hiệu quả cho các agent hiện có và tích hợp các quét bảo mật liên tục cùng kiểm tra chất lượng mã nghiêm ngặt. Kết quả là một chiến lược triển khai mạnh mẽ giúp giảm thiểu sự phức tạp trong vận hành, tăng cường bảo mật và đẩy nhanh quá trình phát triển AI agent trong các môi trường doanh nghiệp.

Lợi ích của Amazon Bedrock AgentCore Runtime

AgentCore Runtime là dịch vụ lý tưởng cho việc triển khai agent trong môi trường sản xuất:

  • Cung cấp môi trường không phụ thuộc framework để chạy các agent của bạn
  • Hoạt động với các mô hình ngôn ngữ lớn (LLM) như các mô hình được cung cấp bởi Amazon Bedrock và Anthropic Claude
  • Cung cấp khả năng cách ly phiên bằng cách chạy mỗi phiên người dùng trong một microVM chuyên dụng với tài nguyên CPU, bộ nhớ và hệ thống tệp được cách ly
  • Hỗ trợ cả tương tác thời gian thực và khối lượng công việc chạy dài lên đến 8 giờ
  • Cung cấp các khả năng tích hợp để xác thực và khả năng quan sát

Tổng quan giải pháp

Chúng tôi đã phát triển một pipeline CI/CD toàn diện với GitHub Actions giúp hợp lý hóa việc triển khai các agent tuân thủ tiêu chuẩn bảo mật. Pipeline này có sẵn dưới dạng một giải pháp sẵn sàng sử dụng có thể tích hợp liền mạch với quy trình phát triển hiện có của bạn. Giải pháp bao gồm các thành phần chính sau:

  • GitHub Actions – Một công cụ điều phối workflow để lưu trữ pipeline
  • Amazon Bedrock AgentCore Runtime – Một dịch vụ AWS để lưu trữ và chạy các agent đã triển khai
  • Amazon Elastic Container Registry (Amazon ECR) – Một dịch vụ AWS để lưu trữ, quản lý và triển khai các image container cho các agent
  • Amazon Inspector – Một dịch vụ AWS để thực hiện quét lỗ hổng nâng cao và liên tục trên các image container
  • IAM OIDC identity provider – Một dịch vụ xác thực liên kết để thiết lập sự tin cậy giữa GitHub và AWS nhằm cho phép GitHub Actions triển khai trên AWS mà không cần duy trì các secret và thông tin xác thực của AWS

Sơ đồ sau minh họa kiến trúc cho giải pháp.

Architecture

Luồng dữ liệu bao gồm các bước sau:

  1. Một nhà phát triển commit các thay đổi mã từ kho lưu trữ cục bộ của họ lên kho lưu trữ GitHub. Trong giải pháp này, GitHub Action được kích hoạt thủ công, nhưng điều này có thể được tự động hóa.
  2. GitHub Action kích hoạt giai đoạn xây dựng.
  3. OIDC của GitHub sử dụng token để xác thực với AWS và truy cập tài nguyên.
  4. GitHub Actions gọi lệnh để xây dựng và đẩy image container agent lên Amazon ECR trực tiếp từ Dockerfile.
  5. AWS Inspector kích hoạt quét bảo mật nâng cao khi image được tải lên.
  6. Một phiên bản AgentCore Runtime được tạo bằng cách sử dụng image container.
  7. Agent có thể tiếp tục truy vấn mô hình Amazon Bedrock và gọi các công cụ theo cấu hình của nó.

Trong các phần sau, chúng tôi sẽ hướng dẫn các bước để triển khai giải pháp:

  1. Tải mã nguồn từ repo GitHub.
  2. Tạo mã agent của bạn.
  3. Thiết lập GitHub secrets.
  4. Tạo vai trò và chính sách IAM.
  5. Tạo workflow GitHub Actions.
  6. Kích hoạt và giám sát pipeline.
  7. Xác minh việc triển khai.

Điều kiện tiên quyết

Trước khi bạn có thể sử dụng pipeline CI/CD an toàn của chúng tôi để triển khai các agent lên AgentCore Runtime, hãy xác minh rằng bạn có các điều kiện tiên quyết sau:

Tải mã nguồn

Clone kho lưu trữ mã nguồn: bedrock-agentcore-runtime-cicd

git clone https://github.com/aws-samples/sample-bedrock-agentcore-runtime-cicd.git

Thư mục kho lưu trữ bao gồm cấu trúc sau:

bedrock-agentcore-runtime-cicd/
├── .github/
│ └── workflows/
│ └── deploy-agentcore.yml # file contains the set of action to build and deploy the agent on AgentCore Runtime
│ └── test-agent.yml # after deployment this file is used to test agent via manual workflow dispatch
├── agents/
│ ├── strands_agent.py # uses BedrockAgentCoreApp app that creates an AI agent using the Strands framework with Claude as the underlying model
│ ├── requirements.txt # contains dependencies
├── scripts
│ ├── create_iam_role.py # IAM role required for Bedrock AgentCore Runtime
│ ├── deploy_agent.py # deploys a custom agent to AWS Bedrock's AgentCore Runtime platform, which allows you to run containerized AI agents on AWS infrastructure
│ └── setup_oidc.py # OIDC setup for Github Authentication and Authorization to access AWS account to deploy required services
│ └── cleanup_ecr.py # keeps 9 recent images in ECR registry, can be customized
│ └── create_guardrail.py # setup minimum guardrail for content filtering, can be customized according to use case
│ └── test_agent.py # contains test cases
└── Dockerfile # contain instructions to build Docker image
└── README.md

Tạo mã Agent

Tạo agent của bạn với framework bạn chọn bằng cách sử dụng AgentCore Runtime toolkit. Toolkit này sử dụng BedrockAgentCoreApp để tạo một ứng dụng cung cấp cách chuẩn hóa để đóng gói mã AI agent của bạn vào một container có thể chạy trên cơ sở hạ tầng được quản lý bởi AgentCore Runtime. Nó cũng sử dụng app.entrypoint, một decorator Python đánh dấu một hàm là điểm vào chính. Khi agent Amazon Bedrock nhận được yêu cầu API đến, hàm này sẽ nhận và xử lý yêu cầu của người dùng. Trong mã agent mẫu này, khi ai đó gọi agent Amazon Bedrock của bạn bằng API, AgentCore Runtime sẽ tự động gọi hàm strands_agent_bedrock(payload).

Trong bài viết này, chúng tôi sử dụng tệp agents/strands_agent.py để tạo một agent bằng framework Strands Agents:

"""
This module defines a conversational AI agent that can perform calculations
using the Strands framework.
"""
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.models import BedrockModel
from strands_tools import calculator
# Initialize the Bedrock AgentCore application
app = BedrockAgentCoreApp()
# Configure the Claude model for the agent with guardrail
model_id = "us.anthropic.claude-sonnet-4-20250514-v1:0"
# Load guardrail ID if available
guardrail_config = None
try:
with open("guardrail_id.txt", "r", encoding="utf-8") as f:
guardrail_id = f.read().strip()
if guardrail_id:
guardrail_config = {
"guardrailIdentifier": guardrail_id,
"guardrailVersion": "1",
}
print(f"Loaded guardrail: {guardrail_id}")
except FileNotFoundError:
print("No guardrail file found - running without guardrail")
model = BedrockModel(model_id=model_id, guardrail=guardrail_config)
# Create the agent with tools and system prompt
agent = Agent(
model=model,
tools=[calculator],
system_prompt="You're a helpful assistant. You can do simple math calculation.",
)
@app.entrypoint
def strands_agent_bedrock(payload):
"""
Main entrypoint for the Bedrock AgentCore Runtime.
This function is called by AWS Bedrock AgentCore when the agent receives
a request. It processes the user input and returns the agent's response.
Args:
payload (dict): Request payload containing user input
Expected format: {"prompt": "user question"}
Returns:
str: The agent's text response to the user's prompt
"""
# Extract the user's prompt from the payload
user_input = payload.get("prompt")
# Process the input through the agent (handles tool selection and model inference)
response = agent(user_input)
# Extract and return the text content from the response
return response.message["content"][0]["text"]
if __name__ == "__main__":
# Run the application locally for testing
# In production, this is handled by Bedrock AgentCore Runtime
app.run()

Thiết lập GitHub secrets

Workflow GitHub Actions phải truy cập tài nguyên trong tài khoản AWS của bạn. Trong bài viết này, chúng tôi sử dụng nhà cung cấp danh tính IAM OpenID Connect và các vai trò IAM với các chính sách IAM để truy cập tài nguyên AWS. OIDC cho phép các workflow GitHub Actions của bạn truy cập tài nguyên trong AWS mà không cần lưu trữ thông tin xác thực AWS dưới dạng GitHub secrets có thời gian tồn tại dài. Các thông tin xác thực này được lưu trữ dưới dạng GitHub secrets trong Settings của kho lưu trữ GitHub của bạn, dưới tùy chọn Secrets. Để biết thêm thông tin, hãy xem Sử dụng secrets trong GitHub Actions.

Tạo vai trò và chính sách IAM

Để chạy các agent hoặc công cụ trong AgentCore Runtime, bạn cần một vai trò thực thi IAM. Để biết thông tin về cách tạo vai trò IAM, hãy xem Tạo vai trò IAM.

Trong bài viết này, chúng tôi tạo chính sách tin cậy và vai trò thực thi cần thiết cho AgentCore Runtime. Xem Quyền IAM cho AgentCore Runtime để biết thêm chi tiết.

Mã sau đây là cho chính sách tin cậy của AgentCore Runtime:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AssumeRolePolicy",
"Effect": "Allow",
"Principal": {
"Service": "bedrock-agentcore.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "accountId"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:bedrock-agentcore:region:accountId:*"
}
}
}
]
}

Mã sau đây là cho vai trò thực thi của AgentCore Runtime:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream",
"bedrock:Converse",
"bedrock:ConverseStream"
],
"Resource": [
"arn:aws:bedrock:*::foundation-model/us.anthropic.claude-sonnet-4-*",
"arn:aws:bedrock:*::foundation-model/anthropic.claude-*",
"arn:aws:bedrock:*:*:inference-profile/us.anthropic.claude-sonnet-4-*",
"arn:aws:bedrock:*:*:inference-profile/anthropic.claude-*"
]
},
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage"
],
"Resource": "arn:aws:ecr:::repository/bedrock-agentcore-*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}

Tạo workflow GitHub Actions

Tham khảo tệp workflow CI/CD tại .github/workflows/deploy-agentcore.yml để biết chi tiết về cách tạo workflow. Các bước sau sẽ được thực hiện bởi workflow:

  • Nó sử dụng GitHub Runner Ubuntu mặc định cho tác vụ được cung cấp trong pipeline.
  • Workflow cài đặt các dependency cần thiết được đề cập trong tệp requirement.txt.
  • Nó xây dựng image Docker và triển khai nó trên kho lưu trữ ECR.
  • Image được quét bằng Amazon Inspector để xác định các lỗ hổng tiềm ẩn.
  • AgentCore Runtime triển khai agent dưới dạng một endpoint.
  • Workflow kiểm tra endpoint của agent để xác minh chức năng.

Kích hoạt và giám sát pipeline

Pipeline này có thể được kích hoạt bằng cách thay đổi mã trong thư mục agents hoặc thủ công bằng tùy chọn workflow dispatch. Điều này có thể thay đổi thêm tùy theo chiến lược phân nhánh của tổ chức bạn. Cập nhật mã trong .github/workflows/deploy-agentcore.yml để thay đổi hành vi kích hoạt này.

Pipeline
Detailed Steps

Kiểm tra Agent

Sau khi agent được triển khai, chúng tôi sẽ xác minh chức năng của nó bằng cách kích hoạt workflow Test Agent thủ công thông qua tùy chọn workflow dispatch.

Test Agent Pipeline
Test Agent

Quản lý phiên bản và endpoint của AgentCore Runtime

Amazon Bedrock AgentCore triển khai tính năng quản lý phiên bản tự động cho AgentCore Runtime và cho phép bạn quản lý các cấu hình khác nhau bằng cách sử dụng các endpoint. Các endpoint cung cấp một cách để tham chiếu các phiên bản cụ thể của AgentCore Runtime. Để biết thêm chi tiết và mã mẫu, hãy xem Quản lý phiên bản và endpoint của AgentCore Runtime.

Dọn dẹp

Để tránh phát sinh chi phí trong tương lai, hãy hoàn thành các bước sau:

  1. Xóa các image ECR khỏi bảng điều khiển Amazon ECR được tạo thông qua việc triển khai bằng GitHub Actions.
  2. Xóa agent đã triển khai trong AgentCore Runtime.

Kết luận

Trong bài viết này, chúng tôi đã trình bày một cách tiếp cận toàn diện để sử dụng GitHub Actions nhằm triển khai các AI agent trên AgentCore Runtime một cách an toàn và có khả năng mở rộng hơn. Giải pháp của chúng tôi cung cấp một môi trường mạnh mẽ, tự động và được kiểm soát cho các ứng dụng AI tạo sinh, giải quyết các thách thức triển khai doanh nghiệp quan trọng bằng cách tự động hóa quản lý dependency, triển khai kiểm tra chất lượng mã liên tục, thực hiện quét lỗ hổng toàn diện và tạo điều kiện cho các quy trình triển khai nhất quán. Bằng cách trừu tượng hóa sự phức tạp của cơ sở hạ tầng, pipeline này giúp các nhà phát triển tập trung vào logic và chức năng của agent, đồng thời cung cấp một cách tiếp cận không phụ thuộc vào framework hỗ trợ quản lý liền mạch nhiều AI agent ở quy mô lớn. Khi các AI agent tiếp tục biến đổi khả năng của doanh nghiệp, giải pháp này đại diện cho một bước tiến đáng kể trong việc hợp lý hóa phát triển và quản lý vận hành agent AI, cung cấp một cơ chế triển khai tiêu chuẩn hóa, an toàn và hiệu quả cho các ứng dụng AI tạo sinh hiện đại.

Là bước tiếp theo, bạn có thể sử dụng Amazon Q để nâng cao và tùy chỉnh một cách thông minh pipeline triển khai AI agent của bạn, biến đổi các quy trình CI/CD của bạn với tự động hóa nâng cao, nhận biết ngữ cảnh.


Về tác giả


Prafful Gupta là Chuyên viên Tư vấn Triển khai Liên kết tại AWS có trụ sở tại Gurugram, Ấn Độ. Bắt đầu hành trình chuyên nghiệp với Amazon một năm trước, anh chuyên về các giải pháp DevOps và AI tạo sinh, giúp khách hàng điều hướng hành trình chuyển đổi đám mây của họ. Ngoài công việc, anh thích kết nối với các chuyên gia đồng nghiệp và dành thời gian chất lượng cho gia đình. Kết nối trên LinkedIn tại: linkedin.com/in/praffulgupta11/


Anshu Bathla là Chuyên viên Tư vấn chính – SRC tại AWS, có trụ sở tại Gurugram, Ấn Độ. Anh làm việc với khách hàng trên nhiều lĩnh vực khác nhau để giúp củng cố cơ sở hạ tầng bảo mật và đạt được các mục tiêu bảo mật của họ. Ngoài công việc, Anshu thích đọc sách và làm vườn tại nhà. Kết nối trên LinkedIn tại: linkedin.com/in/anshu-bathla/