Implantando Agentes de IA no Amazon Bedrock AgentCore com GitHub Actions

Automatizando a Implantação de Agentes de IA com Segurança Empresarial

A AWS anunciou recentemente o Amazon Bedrock AgentCore, um serviço versátil que permite aos desenvolvedores criar e gerenciar agentes de IA de forma integrada, trabalhando com diferentes frameworks e modelos, seja em ambientes hospedados na própria Amazon Bedrock ou em outras infraestruturas. Mais especificamente, o AgentCore Runtime fornece um ambiente de hospedagem seguro, sem servidor e otimizado para implantar e executar agentes de IA ou ferramentas customizadas.

Uma das características principais do AgentCore Runtime é sua flexibilidade de framework. O serviço funciona perfeitamente com plataformas populares como LangGraph, Strands e CrewAI, permitindo que desenvolvedores implantem seus agentes com escalabilidade automática e segurança integrada. O grande diferencial está em como simplifica a complexidade operacional enquanto mantém controles rigorosos de segurança.

Imagem original — fonte: Aws

Este artigo demonstra como usar um fluxo de trabalho do GitHub Actions para automatizar a implantação de agentes no AgentCore Runtime. Essa abordagem oferece uma solução escalável com controles de segurança em nível empresarial, fornecendo automação completa de integração e entrega contínua (CI/CD). Implementando um pipeline abrangente, é possível habilitar a implantação contínua de agentes seguindo as melhores práticas da AWS, incluindo autenticação com OpenID Connect (OIDC), controles de acesso com privilégio mínimo e separação de ambientes. A solução facilita atualizações eficientes para agentes existentes e integra verificações contínuas de segurança com validações rigorosas de qualidade de código. O resultado é uma estratégia de implantação robusta que minimiza complexidade operacional, aprimora a segurança e acelera o desenvolvimento de agentes de IA em ambientes corporativos.

Capacidades do Amazon Bedrock AgentCore Runtime

O AgentCore Runtime é o serviço ideal para implantações de agentes em produção, apresentando um conjunto robusto de funcionalidades:

  • Oferece um ambiente independente de framework para executar agentes
  • Funciona com modelos de linguagem grande (LLMs) como os oferecidos pela Amazon Bedrock e Anthropic Claude
  • Fornece isolamento de sessão, executando cada sessão do usuário em uma microVM dedicada com recursos isolados de CPU, memória e sistema de arquivos
  • Suporta tanto interações em tempo real quanto cargas de trabalho de longa duração, com duração até 8 horas
  • Oferece capacidades integradas de autenticação e observabilidade

Visão Geral da Solução

Foi desenvolvido um pipeline CI/CD abrangente com GitHub Actions que simplifica a implantação de agentes em conformidade com padrões de segurança. O pipeline está disponível como uma solução pronta para uso que se integra perfeitamente aos fluxos de trabalho de desenvolvimento existentes.

A solução compreende os seguintes componentes-chave:

  • GitHub Actions – Uma ferramenta de orquestração de fluxo de trabalho para hospedar o pipeline
  • Amazon Bedrock AgentCore Runtime – Um serviço da AWS para hospedar e executar os agentes implantados
  • Amazon Elastic Container Registry (Amazon ECR) – Um serviço da AWS para armazenar, gerenciar e implantar imagens de contêiner para agentes
  • Amazon Inspector – Um serviço da AWS para realizar verificação avançada e contínua de vulnerabilidades em imagens de contêiner
  • IAM OIDC identity provider (Provedor de identidade OIDC do IAM) – Um serviço de autenticação federada que estabelece confiança entre GitHub e AWS, permitindo que GitHub Actions implante na AWS sem manter segredos e credenciais AWS

O fluxo de dados da arquitetura segue os seguintes passos:

  1. Um desenvolvedor confirma mudanças de código de seu repositório local para o repositório do GitHub. Nesta solução, o GitHub Action é acionado manualmente, mas pode ser automatizado.
  2. O GitHub Action inicia o estágio de build.
  3. O OIDC do GitHub usa tokens para autenticar com a AWS e acessar recursos.
  4. GitHub Actions invoca o comando para construir e enviar a imagem de contêiner do agente para Amazon ECR diretamente do Dockerfile.
  5. AWS Inspector dispara uma verificação de segurança avançada quando a imagem é carregada.
  6. Uma instância do AgentCore Runtime é criada usando a imagem de contêiner.
  7. O agente pode consultar o modelo Amazon Bedrock e invocar ferramentas de acordo com sua configuração.

Pré-requisitos

Antes de usar o pipeline CI/CD seguro para implantar agentes no AgentCore Runtime, verifique se você possui os seguintes pré-requisitos:

Configuração Inicial

Baixando o Código-Fonte

Clone o repositório de código-fonte:

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

A pasta do repositório contém a seguinte estrutura:

bedrock-agentcore-runtime-cicd/
├── .github/
│ └── workflows/
│ └── deploy-agentcore.yml # arquivo contém o conjunto de ações para construir e implantar o agente no AgentCore Runtime
│ └── test-agent.yml # após a implantação, este arquivo é usado para testar agente via manual workflow dispatch
├── agents/
│ ├── strands_agent.py # usa BedrockAgentCoreApp que cria um agente de IA usando o framework Strands com Claude como modelo subjacente
│ ├── requirements.txt # contém dependências
├── scripts
│ ├── create_iam_role.py # função IAM necessária para Bedrock AgentCore Runtime
│ ├── deploy_agent.py # implanta um agente customizado na plataforma AgentCore Runtime da AWS Bedrock
│ └── setup_oidc.py # configuração OIDC para autenticação e autorização do GitHub para acessar conta AWS
│ └── cleanup_ecr.py # mantém 9 imagens recentes no registro ECR, pode ser customizado
│ └── create_guardrail.py # configura guardrail mínimo para filtragem de conteúdo, pode ser customizado conforme necessário
│ └── test_agent.py # contém casos de teste
└── Dockerfile # contém instruções para construir a imagem Docker
└── README.md

Criando o Código do Agente

Crie seu agente com o framework de sua escolha usando o toolkit AgentCore Runtime. O toolkit usa BedrockAgentCoreApp para criar uma aplicação que fornece uma forma padronizada de empacotar código de agente de IA em um contêiner que pode ser executado na infraestrutura gerenciada do AgentCore Runtime. Também usa app.entrypoint, um decorador Python que marca uma função como o ponto de entrada principal. Quando o agente Amazon Bedrock recebe uma solicitação de API recebida, esta função recebe e processa a solicitação do usuário.

Neste exemplo de código de agente, quando alguém chama seu agente Amazon Bedrock usando uma API, o AgentCore Runtime chamará automaticamente a função strands_agent_bedrock(payload). Neste artigo, o arquivo agents/strands_agent.py é usado para criar um agente usando o 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()

Configurando Secrets do GitHub

O fluxo de trabalho do GitHub Actions deve acessar recursos em sua conta AWS. Neste artigo, usa-se um provedor de identidade IAM OpenID Connect (OIDC) e funções IAM com políticas IAM para acessar recursos AWS. O OIDC permite que seus fluxos de trabalho GitHub Actions acessem recursos na AWS sem precisar armazenar credenciais AWS como segredos GitHub de longa duração. Essas credenciais são armazenadas como segredos GitHub no repositório GitHub, em Configurações na opção Secrets. Para mais informações, consulte Using secrets in GitHub Actions.

Criando Funções e Políticas IAM

Para executar agentes ou ferramentas no AgentCore Runtime, você precisa de uma função de execução IAM. Para informações sobre como criar uma função IAM, consulte IAM role creation. Neste artigo, criamos a política de confiança e função de execução necessárias para o AgentCore Runtime. Veja IAM Permissions for AgentCore Runtime para mais detalhes.

A seguir está o código da política de confiança do 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:*"
        }
      }
    }
  ]
}

A seguir está o código da função de execução do 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:*:*:*"
    }
  ]
}

Executando o Pipeline

O pipeline pode ser acionado alterando código na pasta de agentes ou manualmente usando a opção de workflow dispatch. Isso pode ser alterado de acordo com a estratégia de branching de sua organização. Atualize o código em .github/workflows/deploy-agentcore.yml para alterar esse comportamento de gatilho.

Imagem original — fonte: Aws

O fluxo de trabalho realiza as seguintes etapas:

  • Usa o Ubuntu Github Runner padrão para as tarefas fornecidas no pipeline
  • Instala as dependências necessárias mencionadas no arquivo requirements.txt
  • Constrói a imagem Docker e a implanta no repositório ECR
  • A imagem é verificada com Amazon Inspector para identificar potenciais vulnerabilidades
  • AgentCore Runtime implanta o agente como um endpoint
  • O fluxo de trabalho testa o endpoint do agente para verificar funcionalidade

Testando o Agente

Após o agente ser implantado, verifica-se sua funcionalidade acionando o fluxo de trabalho Test Agent manualmente via opção de workflow dispatch.

Imagem original — fonte: Aws

Versionamento e Endpoints do AgentCore Runtime

A AWS Bedrock AgentCore implementa versionamento automático para AgentCore Runtime e permite gerenciar diferentes configurações usando endpoints. Endpoints fornecem uma forma de referenciar versões específicas do AgentCore Runtime. Para mais detalhes e código de exemplo, consulte AgentCore Runtime versioning and endpoints.

Limpeza de Recursos

Para evitar incorrer em cobranças futuras, conclua os seguintes passos:

  • Exclua as imagens do ECR do console Amazon ECR criadas por meio da implantação usando GitHub Actions
  • Exclua o agente implantado no AgentCore Runtime

Conclusão

Este artigo demonstrou uma abordagem abrangente para usar GitHub Actions visando uma implantação mais segura e escalável de agentes de IA no AgentCore Runtime. A solução oferece um ambiente robusto, automatizado e controlado para aplicações de IA generativa, abordando desafios críticos de implantação empresarial ao automatizar gerenciamento de dependências, implementar verificações contínuas de qualidade de código, realizar verificação abrangente de vulnerabilidades e facilitar processos de implantação consistentes.

Ao abstrair complexidades de infraestrutura, este pipeline ajuda desenvolvedores a concentrar-se na lógica e funcionalidade do agente, enquanto oferece uma abordagem independente de framework que suporta gerenciamento integrado de múltiplos agentes de IA em escala. À medida que os agentes de IA continuam transformando capacidades empresariais, esta solução representa um passo significativo na simplificação do desenvolvimento e gerenciamento operacional de agentes de IA, oferecendo um mecanismo de implantação padronizado, seguro e eficiente para aplicações modernas de IA generativa.

Como próximo passo, você pode usar Amazon Q para aprimorar e customizar inteligentemente seu pipeline de implantação de agentes de IA, transformando seus processos CI/CD com automação avançada e consciente de contexto.

Fonte

Deploy AI agents on Amazon Bedrock AgentCore using GitHub Actions (https://aws.amazon.com/blogs/machine-learning/deploy-ai-agents-on-amazon-bedrock-agentcore-using-github-actions/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *