Solução de problemas de estados no AWS Step Functions usando o Amazon Bedrock - Recomendações da AWS

Solução de problemas de estados no AWS Step Functions usando o Amazon Bedrock

Aniket Kurzadkar e Sangam Kushwaha, Amazon Web Services

Resumo

As funcionalidades de tratamento de erros do AWS Step Functions podem ajudar você a identificar um erro que ocorre durante um estado em um fluxo de trabalho, porém ainda pode ser um desafio descobrir a causa raiz e fazer a depuração. Este padrão aborda esse desafio e mostra como o Amazon Bedrock pode ajudar você a solucionar erros que ocorrem durante estados no Step Functions.

O Step Functions disponibiliza orquestração de fluxos de trabalho, o que ajuda os desenvolvedores a automatizar processos com mais facilidade. Além disso, o Step Functions fornece funcionalidades de tratamento de erros que proporcionam os seguintes benefícios:

  • Os desenvolvedores podem criar aplicações mais resilientes, que não falham completamente quando ocorre algum problema.

  • Os fluxos de trabalho podem usar lógica condicional para lidar com cada tipo de erro de forma diferenciada.

  • O sistema é capaz de tentar executar novamente operações que falharam automaticamente, possivelmente adotando um mecanismo de recuo exponencial.

  • Caminhos de execução alternativos podem ser definidos para cenários de erro, permitindo que o fluxo de trabalho se adapte e continue o processamento.

Quando ocorre um erro em um fluxo de trabalho do Step Functions, este padrão mostra como a mensagem de erro e o contexto podem ser enviados para um modelo de base (FM), como o Claude 3, que é compatível com o Step Functions. O FM pode analisar o erro, categorizá-lo e sugerir possíveis etapas de correção.

Pré-requisitos e limitações

Pré-requisitos

Limitações

  • Você pode usar a abordagem deste padrão para vários Serviços da AWS. No entanto, os resultados podem variar de acordo com o prompt criado pelo AWS Lambda, que é posteriormente avaliado pelo Amazon Bedrock.

  • Alguns Serviços da AWS não estão disponíveis em todas as Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Arquitetura

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

Fluxo de trabalho para tratamento de erros e envio de notificações usando o Step Functions, o Amazon Bedrock e o Amazon SNS.

O diagrama apresenta o fluxo de trabalho automatizado para tratamento de erros e envio de notificações em uma máquina de estado do Step Functions:

  1. O desenvolvedor inicia a execução de uma máquina de estado.

  2. A máquina de estado do Step Functions começa a processar os estados. Existem dois resultados possíveis:

    • (a) Se todos os estados forem executados com êxito, o fluxo de trabalho segue diretamente para o Amazon SNS para envio de uma notificação de sucesso por e-mail.

    • (b) Se algum estado falhar, o fluxo de trabalho é direcionado para a função do Lambda responsável pelo tratamento de erros.

  3. Em caso de erros, o seguinte processo é executado:

    • (a) A função do Lambda (responsável pelo tratamento de erros) é acionada. A função do Lambda extrai a mensagem de erro contida nos dados do evento transmitidos pela máquina de estado do Step Functions. Posteriormente, a função do Lambda prepara um prompt fundamentado na mensagem de erro e o encaminha ao Amazon Bedrock. O prompt solicita soluções e sugestões relacionadas ao erro específico identificado.

    • (b) O Amazon Bedrock, que hospeda o modelo de IA generativa, realiza o processamento do prompt de entrada. (Este padrão faz uso do modelo de base (FM) Anthropic Claude 3, que é um entre os diversos FMs compatíveis com o Amazon Bedrock.) O modelo de IA analisa o contexto do erro. Em seguida, o modelo gera uma resposta que pode incluir explicações sobre a razão pela qual o erro ocorreu, soluções potenciais para resolvê-lo e sugestões para evitar a recorrência do mesmo erro no futuro.

      O Amazon Bedrock retorna a resposta gerada por IA para a função do Lambda. A função do Lambda realiza o processamento da resposta, com potencial formatação ou extração de informações importantes. Posteriormente, a função do Lambda envia a resposta para a saída da máquina de estado.

  4. Após o tratamento de erros ou a execução com êxito, o fluxo de trabalho é concluído acionando o Amazon SNS para enviar uma notificação por e-mail.

Ferramentas

Serviços da AWS

  • O Amazon Bedrock é um serviço totalmente gerenciado que disponibiliza modelos de base (FMs) de alta performance, provenientes de startups líderes em IA e da própria Amazon, por meio de uma API unificada.

  • AWS Lambda O é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O AWS Step Functions é um serviço de orquestração com tecnologia sem servidor que auxilia na combinação de funções do AWS Lambda e outros Serviços da AWS para desenvolver aplicações de grande importância para o negócio.

Práticas recomendadas

  • Considerando que o Amazon Bedrock é um modelo de IA generativa que aprende com base em dados treinados, ele também utiliza esses dados para treinamento e geração de contexto. Como uma prática recomendada, oculte qualquer informação privada que possa causar problemas de vazamento de dados.

  • Embora a IA generativa possa fornecer insights valiosos, decisões críticas de tratamento de erros ainda devem contar com supervisão humana, especialmente em ambientes de produção.

Épicos

TarefaDescriçãoHabilidades necessárias

Criar uma máquina de estado do .

Para criar uma máquina de estado adequada ao seu fluxo de trabalho, realize as seguintes etapas:

  1. Faça login no Console de gerenciamento da AWS e abra o AWS Step Functionsconsole do https://console.aws.amazon.com/states/home.

  2. No painel de navegação à esquerda, selecione Máquinas de estado.

  3. Escolha Criar uma máquina de estado.

  4. Escolha um modelo de acordo com seu caso de uso ou selecione Em branco para criar um modelo conforme suas necessidades.

AWS DevOps
TarefaDescriçãoHabilidades necessárias

Crie uma função do Lambda.

Para criar uma função do Lambda, realize as seguintes etapas:

  1. No Console de gerenciamento da AWS, acesse o console do AWS Lambda.

  2. No painel de navegação à esquerda, selecione Funções e selecione Criar função.

  3. Na página Criar função, selecione uma das alternativas disponíveis para criar a função. Em seguida, digite um nome em Nome da função e escolha a linguagem adequada na lista suspensa em Runtime.

  4. Escolha a opção Criar função.

AWS DevOps

Configure a lógica necessária no código do Lambda.

  • Para se conectar à API do Amazon Bedrock usando o AWS SDK para Python (Boto3), utilize o código apresentado a seguir.

    Este código configura um cliente para o Amazon Bedrock, prepara os parâmetros necessários e, em seguida, envia uma solicitação para o modelo Claude 3 com um prompt específico.

    Este padrão invoca o modelo Claude 3. Para obter mais informações sobre todos os modelos de base compatíveis, incluindo as IDs de modelo relacionadas, consulte Supported foundation models in Amazon Bedrock na documentação do Amazon Bedrock.

client = boto3.client( service_name="bedrock-runtime", region_name="selected-region" ) # Invoke Claude 3 with the text prompt model_id = "your-model-id" # Select your Model ID, Based on the Model Id, Change the body format try: response = client.invoke_model( modelId=model_id, body=json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [{"type": "text", "text": prompt}], } ], } ), )
  • (Opcional) Substitua as IDs referentes à Conta da AWS pelas IDs de conta de espaço reservado. Por questões de segurança, essa abordagem pode ser útil para a remoção de dados sensíveis de logs, mensagens de erro ou outras saídas que possam conter informações sensíveis da conta.

    O código apresentado a seguir localizará qualquer ocorrência de um número de 12 dígitos entre dois-pontos (que é o formato das IDs de uma Conta da AWS nos nomes dos recursos da Amazon (ARNs) e em alguns outros identificadores da AWS) e substituirá pela ID de conta de espaço reservado ":123456789012:".

    def replace_account_id(input_string): # Use a regular expression to find the AWS account ID pattern account_id_pattern = r'(:\d{12}:)' # Replace the matched pattern with ":123456789012:" modified_string = re.sub(account_id_pattern, ":123456789012:", input_string) return modified_string
AWS DevOps
TarefaDescriçãoHabilidades necessárias

Configure o Lambda para tratar erros no Step Functions.

Para configurar o Step Functions de forma a tratar erros sem interromper o fluxo de trabalho, realize as seguintes etapas:

  1. Acesse o console do Step Functions e navegue até a máquina de estado que foi criada anteriormente.

  2. Escolha Editar e, em seguida, selecione o serviço para o qual deseja configurar o tratamento de erros ao clicar em Tratamento de erros.

  3. Escolha Adicionar novo agente de captura e, no campo Estado de fallback, opte por Lambda e, em seguida, escolha a função do Lambda que você criou anteriormente. Para obter mais informações, consulte Catch errors na documentação do Step Functions.

AWS DevOps

Solução de problemas

ProblemaSolução

O Lambda não tem permissão para acessar a API do Amazon Bedrock (ação não autorizada)

Este erro ocorre quando o perfil do Lambda não tem permissão para acessar a API do Amazon Bedrock. Para resolver esse problema, adicione a política AmazonBedrockFullAccess ao perfil do Lambda. Para obter mais informações, consulte AmazonBedrockFullAccess no Guia de referência da política gerenciada pela AWS.

Erro de tempo limite do Lambda

Em alguns casos, a geração e o envio da resposta podem demorar mais de 30 segundos, dependendo do prompt. Para resolver esse problema, aumente o tempo de configuração. Para obter mais informações, consulte Configurar tempo limite da função do Lambda no Guia do desenvolvedor do AWS Lambda.

Recursos relacionados