DEV Community

olcortesb for AWS Español

Posted on • Originally published at olcortesb.hashnode.dev on

AWS Serverless Application Repository

No es un misterio que en este blog escribo en su gran mayoría de temas relacionados con Serverless y en esa búsqueda, investigación y descubrimiento de herramienta, estoy siempre probando lo que tenemos a nuestra mano. Primero para compartir conocimiento, pero también me ayuda a tener contexto al momento de proponer ideas en los distintos proyectos en los que participo.

Uno de los conceptos que dentro de las arquitecturas Serverless se ve ms viable o apetecible es el de Self Services o IDP(Internal Developer Platform). ¿De qué se trata el concepto del IDP o Self Services?, es la capacidad de tener a pocos pasos, la posibilidad de desplegar un Stack que ya está probado y que podamos reutilizar en distintas cargas de trabajo en la nube.

En este artículo vamos a revisar ¿Que es AWS Serverless Aplication Repository?, como funciona y que puede ofrecernos en el camino y bsqueda a un Self Services o IDP.

AWS Serverless Application Repository (serverlessrepo)

En palabras de AWS:

AWS Serverless Application Repository es un repositorio administrado para aplicaciones sin servidor. Se les permite a los equipos, organizaciones y desarrolladores individuales almacenar y compartir aplicaciones reutilizables y ensamblar e implementar fcilmente arquitecturas sin servidor de maneras nuevas y potentes. Si utiliza Serverless Application Repository, no tiene que clonar, crear, empaquetar o publicar el cdigo fuente en AWS antes de implementarlo. Por el contrario, puede implementar aplicaciones prediseadas de Serverless Application Repository en las arquitecturas sin servidor, lo que ayuda a usted y a sus equipos a reducir el trabajo doble, asegurar las prcticas recomendadas de la organizacin y llegar al mercado ms rpido.

https://aws.amazon.com/es/serverless/serverlessrepo/

Como vemos, tiene buena pinta, un lugar donde desplegar nuestras aplicaciones y desde el cual servirlas directamente. ¿Pero cómo?

Aquí vienen las primeras consideraciones, la herramienta de IaC que utiliza AWS serverlessrepo es AWS SAM. Lo cual puede ser algo a tener en cuenta, pero no una limitacin; sin embargo, eso lo veremos ms adelante en siguientes post.

El resultado final es un directorio donde tenemos acceso a las aplicaciones (públicas), del cual podemos hacer un despliegue de las aplicaciones a un Click.

Desplegando una Aplicación en serverlessrepo

Hay dos maneras para desplegar las aplicaciones, de manera manual, subiendo el pakaged.yml al formulario y los valores que solicita el formulario y Utilizando AWS Sam Cli.

Si AWS Sam tiene un parámetro que permite subir nuestro Stack al Serverless Aplicación Respository vamos a revisarlo paso a paso.

Publicando la aplicación

Primero tendremos que tener probada nuestra aplicación y funcionando. Previamente, he desplegado mi aplicación usando un AWS Sam Deploy y he verificado que funcione correctamente. La aplicación que vamos a publicar la hemos tratado antes en este blog: Mimic.

Aquí el repositorio que he preparado para esta demo:

El Siguiente paso es crear un Bucket S3 y dar permisos al Serverless Aplication Repository para que acceda a nuestro S3 donde va a estar desplegado el código de la aplicación.

Dentro de las Policy del Bucket

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } }]}
Enter fullscreen mode Exit fullscreen mode

Luego en nuestro archivo de template.yml agregar la metadata que ayudara a empaquetar nuestra aplicación.

Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-projectResources: HelloWorldFunction: Type: AWS::Lambda::Function Properties: ... CodeUri: source-code1 ...
Enter fullscreen mode Exit fullscreen mode

Esta metadata es equivalente a todos los campos que el formulario de publicación manual solicita al momento de hacer un despliegue.

Luego ejecutamos el comando que empaquetara el despliegue:

# Remplazar <your-bucket-name> con el nombre del bucket que creamos en el paso anteriorsam package --output-template-file packaged.yaml --s3-bucket <your-bucket-name>
Enter fullscreen mode Exit fullscreen mode

Este comando da como salida un archivo: packaged.yaml que utilizaremos para publicar nuestra aplicación.

Ahora finalmente publicamos nuestra aplicación

# Remplazar la region por la region donde queremos desplegar nuestro stacksam publish --template packaged.yaml --region us-east-1
Enter fullscreen mode Exit fullscreen mode

Finalmente, verificamos si queremos que la aplicación sea, pública, privada o compartida a cuentas específicas.

Conclusiones

  • El Serverless Aplication Repository permite subir nuestros stacks para reutilizarlos dentro de nuestra cuenta o compartido con otras cuentas o de manera pública.

  • El proceso de deploy se realiza utilizando AWS Sam y un comando poco conocido sam publish

Referencias

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Retry later