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.
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" } } }]}
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 ...
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>
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
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
Top comments (0)