Coder Social home page Coder Social logo

global-azure-spain-2023-api-monetization's Introduction

Como usar el Azure API Management para monetizar nuestras APIs

El siguiente repo contiene el código fuente que mostré durante una sesión presencial en el Global Azure Spain 2023, en las oficinas de Microsoft Ibérica en Madrid.



Introducción

Este es el repo que acompaña a la publicación en el blog donde os cuento con detalle cómo he implementado un mecanismo de monetización para APIs de Inteligencia Artificial apoyado en el Azure API Management y su Developer Portal.

Material de la presentación 🎞️

Aquí dejo la presentación en formato PDF 📕

Configuración de la aplicación web

La parte del código de demostración que se integracon el Azure API Management (APIM) para la delegación es una aplicación web dockerizada e implementada con ASP.NET, Razor, C# y .NET 6.

Al usar Docker, es necesario configurar algunas variables de entorno que podemos colocar donde queramos, aunque habitualmetne yo soy de ponerlas en el appsettings.json.

Así, las variables o parámetros de configuración son:

  • ApimServiceOptions:DelegationValidationKey → La clave generada por el APIM al configurar la delegación.
  • ApimServiceOptions:DeveloperPortalUrl → La URL al Developer Portal.
  • ApimServiceOptions:ManagementUrl → La URL que da acceso al API REST para la gestión del APIM. Importante no confundir con la URL del APIM que da acceso a las APIs publicadas, es diferente y suele tener la siguiente forma: https://apim-demo.management.azure-api.net
  • ApimServiceOptions:ResourceGroupName → El nombre de recursos en Azure donde está desplegado el APIM.
  • ApimServiceOptions:ServiceName → El nombre del APIM per se.
  • ApimServiceOptions:SubscriptionId → El identificador de la subscripción de Azure donde está desplegado el APIM.
  • ApplicationInsights:ConnectionString → La cadena de conexión a un Application Insigths para dejar trazas.
  • ApplicationInsights:InstrumentationKey → La clave de instrumentalización del Application Insights.
  • MonetizationOptions:ModelUrl → La URL a donde tenemos desplejado el JSON correspondiente al modelo de negocio. En la demo, monto el JSON que podemos encontrar aquí en un Blob Container de un Azure Storage Account con acceso público, lo que me da una URL para llegar hasta él.
  • StripeOptions:ApplicationKey → La clave de aplicación de Stripe. En el blog explico como generarla.
  • StripeOptions:PublishableKeyPublishableKey → La clave de publicación de Stripe. Esta se genera automáticamente al crear una cuenta con Stripe. En el blog explico como obtenerla.
  • StripeOptions:WebhookSecret → El secreto o clave para acceder a un webhook mediante el cual Stripe podrá comunicarse con el APIM. También hablo sobre esto en el blog.

¡Vale! Hablo mucho del blog, pero es que allí es donde está el contenido explícito de cómo funciona el código 🤓

Configuración de la función

La parte del código de demostración que se encarga de reportar consumos a Stripe para que se genere la facturación es una Azure Function también implentada con C# y .NET 6.

Su configuración es significativamente más sencilla, y se compone de los siguientes parámetros:

  • ApimServiceName → El nombre del APIM per se.
  • ApimResourceGroupName → El nombre de recursos en Azure donde está desplegado el APIM.
  • ApimSubscriptionId → El identificador de la subscripción de Azure donde está desplegado el APIM.
  • StripeApplicationKey → La clave de aplicación de Stripe. En el blog explico como generarla.

Por temas de demo, la Azure Function se ejecuta cada minuto. Tened cuidado con esto, quizás para vuestras pruebas o aprendizajes os convenga incrementar el tiempo.

License

Copyright (c) 2023 — Licenciado bajo la licencia MIT.



Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.