O blog da AWS

Simplificando as integrações de APIs privadas com o HAQM EventBridge e o AWS Step Functions

Este blog foi escrito por Pawan Puthran, especialista principal da TAM, Serverless, e Vamsi Vikash Ankam, arquiteto sênior de soluções sem servidor.

Em dezembro de 2024, a AWS anunciou que o HAQM EventBridge e o AWS Step Functions oferecem suporte à integração com APIs privadas usando o AWS PrivateLink e o HAQM VPC Lattice. Esse recurso permite que os usuários façam integração de aplicativos em redes privadas, em infraestrutura local e plataformas de nuvem. Ele fornece simplicidade operacional, permitindo a comunicação segura e controlada entre os serviços em uma nuvem privada virtual (VPC). Esta postagem do blog explora como aproveitar esse novo recurso para integrar o Step Functions com APIs privadas, tornando as interações de aplicativos em redes privadas mais eficientes e seguras.

Visão geral

As integrações privadas são essenciais para a comunicação segura entre serviços em nuvem em uma VPC. À medida que as organizações modernizam seus aplicativos na nuvem, elas geralmente precisam integrar os sistemas existentes aos ambientes de rede privada. Anteriormente, o EventBridge e o Step Functions precisavam de proxies para enviar eventos para aplicativos HTTPS. Esses proxies, como o AWS Lambda ou o HAQM Simple Queue Service (HAQM SQS), entregaram eventos para aplicativos executados no HAQM Elastic Compute Cloud (HAQM EC2), no HAQM Elastic Kubernetes Service (HAQM EKS) ou no HAQM Elastic Container Service (HAQM ECS). Agora, os usuários podem invocar diretamente endpoints privados baseados em HTTPS em execução em sua VPC usando o EventBridge e o Step Functions.

Esse novo recurso oferece vários benefícios importantes:

  1. Segurança e conformidade aprimoradas: as integrações de APIs privadas aprimoram significativamente a segurança, mantendo as APIs em redes privadas, minimizando a exposição a ameaças da Internet e garantindo a conformidade em setores regulamentados, como finanças e saúde.
  2. Arquitetura simplificada e maior produtividade do desenvolvedor: esse recurso simplifica a integração ao permitir o acesso direto a APIs privadas, eliminando configurações complexas de rede e soluções de proxy. Ele permite que os desenvolvedores se concentrem na lógica central, resultando em arquiteturas mais limpas, desenvolvimento mais rápido e manutenção reduzida. Ao eliminar a necessidade de código personalizado e unificar a arquitetura do aplicativo, o processo de integração se acelera, reduzindo o tempo de lançamento no mercado e aumentando a inovação.
  3. Desempenho e confiabilidade aprimorados: as integrações de API privada aos recursos da VPC aprimoram o desempenho ao aproveitar a rede de backbone da AWS. Essa conectividade direta melhora a velocidade, aumenta a confiabilidade e minimiza as dependências da rede externa e os pontos de falha.

O EventBridge e o Step Functions usam novos recursos do PrivateLink e do VPC Lattice, do Resource Gateway e da Configuração de Recursos para facilitar a conectividade segura da rede com serviços e recursos dentro de uma VPC. Para estabelecer a conectividade privada, você precisa dos seguintes componentes:

  1. Resource Gateway: Um Resource Gateway serve como um ponto de entrada seguro para o tráfego de entrada do recurso. Isso atua como um ponto de entrada dentro da VPC onde os recursos residem.
  2. Configuração de recursos: uma configuração de recursos é uma entidade lógica que identifica o recurso e especifica como e quem pode acessá-lo. Definir uma configuração de recursos permite que você permita conectividade de rede privada, segura e unidirecional a recursos em sua VPC a partir de clientes e serviços em outras VPCs e contas.
  3. Conexões do EventBridge: as conexões do EventBridge usadas nos destinos da API do EventBridge e nos fluxos de trabalho do Step Function estabelecem conectividade com seus endpoints HTTPS privados usando configurações de recursos.
  4. AWS Resource Access Manager: você pode compartilhar a configuração do recurso por meio do AWS Resource Access Manager (AWS RAM), um serviço que compartilha com segurança seus recursos de VPC entre suas organizações e com outras contas da AWS.

Visão geral da carga de trabalho

Para ilustrar como o Step Functions invoca APIs HTTPS privadas, considere o fluxo de trabalho a seguir, que classifica avaliações de produtos como falsas ou reais.

  1. O fluxo de trabalho do Step Functions processa uma série de avaliações de produtos usando o Distributed Map.
  2. Chama o modelo HAQM Nova Micro por meio do HAQM Bedrock para classificar o texto da avaliação.
  3. Se uma avaliação for classificada como falsa, o fluxo de trabalho publicará um evento em um barramento do EventBridge, fornecendo uma integração flexível para possíveis análises ou notificações posteriores.
  4. Se uma avaliação for classificada como real, o Step Functions chamará o endpoint HTTPS privado, usando o endereço DNS para processar ainda mais as avaliações.
  5. Essa API privada é hospedada no AWS Fargate por trás de um Application Load Balancer (ALB) interno em uma VPC.
Step Functions workflow calling private HTTPS-based endpoint running in AWS Fargate

Figura 1: Fluxo de trabalho do Step Functions chamando um endpoint privado baseado em HTTPS executado no AWS Fargate

Em cenários do mundo real, isso inclui analisar padrões de texto, comportamento do usuário e dicas linguísticas para determinar a autenticidade de cada avaliação. Avaliações suspeitas são automaticamente sinalizadas por meio da criação de fluxos de trabalho personalizados para manter a integridade do sistema de feedback do produto.

Implantando o exemplo

Antes de configurar a integração privada, crie uma zona hospedada pública do HAQM Route53 com um domínio registrado (como por exemplo api.com) e um certificado do AWS Certificate Manager (ACM) correspondente ao domínio. Embora as zonas hospedadas privadas do HAQM Route53 atualmente não sejam suportadas, a utilização de zonas hospedadas públicas resolve o nome de domínio para um endereço IP privado, acessível somente de dentro da VPC.

Esta postagem inclui uma aplicação de exemplo e instruções de implantação. Para obter detalhes completos, consulte o README.

Cenário 1: conta única

Nesse cenário, as Step Functions, as conexões do EventBridge e os recursos privados residem na mesma conta, conforme mostrado na figura a seguir

Overview of a single account setup with Step Functions workflow and private API in the same account

Figura 2: Visão geral da configuração de uma única conta com o fluxo de trabalho do Step Functions e a API privada na mesma conta

  1. O VPC Resource Gateway atua como o ponto de entrada para acessar os recursos privados em execução na sua VPC. Como prática recomendada, considere criar um gateway de recursos para conter várias sub-redes privadas (zonas de disponibilidade) para obter alta disponibilidade. Consulte o trecho de código do AWS Cloud Development Kit (AWS CDK) em lib/vpclattice-stack.ts para ver a implementação do gateway de recursos.
  2. As configurações de recursos estabelecem a conexão entre o endpoint privado e o Resource Gateway e são usadas para identificar de forma exclusiva os recursos privados em execução na sua VPC. Consulte o trecho de código do AWS CDK em lib/vpclattice-stack.ts para criar a configuração de recursos e configurar o nome de domínio e a porta.
  3. Para permitir que o Step Functions se comunique com os recursos privados da VPC, você cria uma conexão EventBridge. Isso lida com a autorização e a conectividade privada para se conectar à API privada. Consulte o trecho de código do AWS CDK em lib/workflow-stack.ts para criar conexões do EventBridge.
  4. A máquina de estado do Step Functions implantada como parte do aplicativo de exemplo usa o tipo de tarefa HTTPS Invoke para chamar a API privada. Chamar APIs privadas do Step Functions permite que você use recursos como tratamento de erros integrado, como novas tentativas para problemas transitórios e recondução em caso de erros.

Você pode usar a seguinte carga útil para testar a execução do Step Functions:

{
  "items": [
    {
      "asin": "B000FA64PA",
      "helpful": [ 0, 0],
      "overall": 5,
      "reviewText": "Darth Maul working under cloak of darkness committing sabotage now that is a story worth reading many times over. Great story.",
      "reviewTime": "10 11, 2013",
      "unixReviewTime": 1381449600
    },
    {
      "asin": "B000F83SZQ",
      "helpful": [ 1, 1],
      "overall": 4,
      "reviewText": "Never heard of Amy Brewster. But I don't need to like Amy Brewster to like this book. Actually, Amy Brewster is a sidekick in this story, who added mystery to the story not the one resolved it. The story brings back the old times, simple life, simple people, and straight relationships.",
      "reviewTime": "03 22, 2014",
      "unixReviewTime": 1395446400
    }
  ]
}

A figura a seguir mostra a execução do Step Functions em que a revisão é classificada como real e invoca com êxito o endpoint HTTPS privado.

Step Functions execution classifying the product reviews as real and successfully invoking the private API

Figura 3: Execução de Step Functions classificando as avaliações do produto como reais e invocando com sucesso a API privada

Cenário 2: conta cruzada

Nesse cenário, todos os recursos privados residem na Conta A. As Step Functions e as Conexões do EventBridge residem na Conta B. O compartilhamento de recursos entre contas é desenvolvido pela AWS RAM, conforme mostrado na figura a seguir.

Cross-account setup

Figura 4: Configuração entre contas

Após a criação do Resource Gateway e da Configuração do Recurso, conforme descrito na seção anterior, configure o compartilhamento de recursos usando a AWS RAM na Conta A.

  1. O aplicativo de exemplo cria o compartilhamento de recursos de RAM da AWS na Conta A. Isso permite que a Conta B acesse recursos privados da VPC na Conta A, permitindo acesso seguro e autorizado pelo AWS Identity and Access Management (IAM) aos recursos da VPC na Conta A. Consulte o trecho de código do CDK em lib/vpclattice-stack.ts para criar compartilhamento de recursos entre contas usando a AWS RAM.
  2. Na Conta B, a AWS RAM recebe um convite da Conta A para acessar os recursos privados da VPC. Após a aceitação, o status do compartilhamento de recursos muda para Ativo, concedendo acesso aos recursos privados da VPC na Conta A.
  3. Para permitir o acesso da Função Step da Conta B ou do EventBridge aos recursos de VPC privados da Conta A, crie uma Conexão EventBridge conforme descrito na Etapa 3 (Cenário de conta única). Mapeie essa conexão com a configuração compartilhada de recursos de RAM da AWS criada na etapa anterior.

É comum que empresas com equipes de desenvolvimento distribuídas operamem em várias contas da AWS. A configuração descrita acima permite o acesso seguro entre contas aos recursos da VPC.

Novos eventos de estado de conexão

O EventBridge agora publica mudanças nos eventos de estado para conexões novas ou existentes. Isso é útil ao realizar ações sobre mudanças de estado ou para fins de solução de problemas. O exemplo a seguir mostra os eventos de alteração de estado publicados para Conexão autorizada e Conexão ativada.

Figure 5: EventBridge connections state change

Figura 5: Alteração do estado das conexões do EventBridge

Conclusão

A nova integração permite que o HAQM EventBridge e o AWS Step Functions se integrem com APIs privadas, baseadas no AWS PrivateLink e no HAQM VPC Lattice. Os usuários podem integrar sistemas locais legados com aplicativos nativos da nuvem usando arquiteturas orientadas por eventos e orquestração de fluxo de trabalho. A integração ajuda as empresas a modernizar aplicativos distribuídos em redes públicas e privadas, permitindo inovação mais rápida, maior desempenho e custos mais baixos, eliminando a necessidade de rede ou código de integração personalizados.

Para obter mais detalhes, consulte a documentação do EventBridge e do Step Functions. Confira este vídeo sobre como configurar integrações com o EventBridge e o Step Functions. Obtenha o código de amostra usado nesta postagem neste repositório do GitHub.

Para expandir seu conhecimento sem servidor, visite Serverless Land.

Este blog é uma tradução do conteúdo original em inglês (link aqui).

Biografia dos Autores

Pawan Puthran, Principal Specialist TAM, Serverless
Vamsi Vikash Ankam, Senior Serverless Solutions Architect

Biografia do Tradutor

Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.

Biografia do Revisor

Daniel Abib é arquiteto de soluções sênior na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.

http://www.linkedin.com/in/danielabib/