Recentemente a Febraban disponibilizou um draft das APIs iniciais do Open Banking no Brasil. Estas APIs, de acordo com nosso entendimento, se referem bastante a Fase 1 do Open Banking no Brasil. Se você for neste link: https://febraban.github.io/Open-Banking-/ você consegue encontrar a documentação inicial e Swaggers. Neste post, iremos compartilhar algumas dicas de como disponibilizar seus dados através de APIs que podem ser hospedadas em seu ambiente AWS.
AWS API Gateway
O AWS API Gateway tem a finalidade de atender a necessidade de expor seus serviços através de APIs REST ou até mesmo WebSockets. A interface do AWS API Gateway é bastante intuitiva, e nela você consegue importar as definições Swagger/Open API Spec para servirem de base inicial da sua API.
Importando o Swagger/OAS do Open Banking Brasil
Aqui a API pode ser vista já importada:
API importada
Criando uma Lambda Function
Vamos adicionar agora uma Lambda function, para atender ao recurso da API. Uma lambda, é uma função, ou pequeno código/componente que executa de maneira 100% como serviço, fazendo com que você não se preocupe com nada em relação a recursos, vms, loadbalancers, containers, etc. No exemplo abaixo estamos criando nossa function: impl-metrics:
Criando a Função impl-metrics
Em nosso exemplo, estamos adicionando uma informação como “hard-coded” ou “mock”, apenas para retorno com sucesso de nossa API, veja exemplo abaixo:
Implementação de nossa função para o método GET /metrics
Juntando as Peças: API-GW + Lambdas
O importante é entender que cada componente, desempenha seu papel de forma isolada: A API em si, é controlada, definida no API Gateway, e nossa implementação está nas funções do AWS Lambda.
Conexão entre os Componentes AWS
O último passo agora é conectar nosso recurso /metrics no método http GET a lambda que acabamos de criar:
API Gateway agora já conectado a função lamba
No exemplo acima, a importação foi feita como HTTP Service, mas você pode especificar como REST API, onde os passos não irão mudar muito, e algumas funcionalidades interessantes, serão exibidas como esta:
Importando o Swagger/OAS para gerar uma REST API
Criando o Stage de Deployment
Neste momento, estamos criando uma versão que já poderá ser nossa produção, ou você pode controlar seus versionamentos e estágios de deployment de inúmeras maneiras também. Aqui nossa configuração base:
Criando o estágio V1 (que seria nossa produção)
Aqui o nosso ambiente pronto para ser executado:
Ambiente de Produção já habilitado
Testando
Agora vamos testar nossa API, como se fossemos um cliente acessando nossa URL já em produção:
Testes 100% funcionais
Recursos Adicionais
Nós poderiamos ainda adicionar recursos como:
Capacidade de Criação de Planos de Acesso
Criação de API Keys para proteção de Recursos
Dashboard de Execução
O stack de soluções da AWS é gigantesco, mas essa combinação de API Gateway + Lambdas, para Open Banking, fase 1 do Brasil, poderá ajudar várias empresas e organizações que podem estar enfrentando dificuldades neste momento.
Conclusão
Neste post, vimos como importar o contrato de api do que foi publicado pela Febraban, e como podemos criar uma função Lambda para devolver os dados esperados. Vale ressaltar, que neste exemplo usamos apenas um Mock, porém, você consegue fazer literalmente qualquer coisa de dentro de uma lambda function na AWS. Para implementar seu caso real, você deveria ter uma View, ou repositório de dados, que pudesse ser conectado na função e poder buscar as informações de dados a quente.
Como ponto de atenção, apenas tenha cuidado com a Governança e rollout de produção de suas funções, afinal de contas, você estará com o princípio “homem aranha” nas suas mãos ( “Com grandes poderes, vêm grandes responsabilidades”).
PS- Tentaremos fazer em um novo post, a mesma abordagem usando Azure como solução Cloud.
PS2 – Se você gostou de Lambdas, mas não gosta da idéia de ficar somente em uma núvem, dê uma olhada nos projetos KNative e Open FaaS .
PS3 – Na plataforma Cloud da Skalena, você tem 100% das APIs da Febraban no modelo multi-tenant já pronto para uso:
Comments