AWS Serverless Application Repository
No es un misterio que en este blog escribo en su gran mayora de temas relacionados con Serverless y en esa bsqueda, investigacin y descubrimiento de herramienta, estoy siempre probando lo que tenemos a nuestra mano. Primero para compartir conocimiento, pero tambin 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 artculo vamos a revisar Qu 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 cmo?
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 (pblicas), del cual podemos hacer un despliegue de las aplicaciones a un Click.
Desplegando una Aplicacin 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 parmetro que permite subir nuestro Stack al Serverless Aplication Respository vamos a revisarlo paso a paso.
Publicando la aplicacin
Primero tendremos que tener probada nuestra aplicacin y funcionando. Previamente, he desplegado mi aplicacin usando un AWS Sam Deploy y he verificado que funcione correctamente. La aplicacin 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 cdigo de la aplicacin.
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 aplicacin.
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 publicacin 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 aplicacin.
Ahora finalmente publicamos nuestra aplicacin
# 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 aplicacin sea, pblica, privada o compartida a cuentas especficas.
Conclusiones
El Serverless Aplication Repository permite subir nuestros stacks para reutilizarlos dentro de nuestra cuenta o compartido con otras cuentas o de manera pblica.
El proceso de deploy se realiza utilizando AWS Sam y un comando poco conocido sam publish
References
https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html
https://github.com/olcortesb/mimic-write-read-dynamodb
Artículo original: AWS Serverless Application Repository