Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Construyendo una aplicación serverless en Java con AWS SAM CLI

Construyendo una aplicación serverless en Java con AWS SAM CLI

Lino Espinoza

December 02, 2023
Tweet

More Decks by Lino Espinoza

Other Decks in Technology

Transcript

  1. © 2023, Amazon Web Services, Inc. or its affiliates. Construyendo

    un app serverless en java con AWS SAM CLI Lino Espinoza (he/him)
  2. © 2023, Amazon Web Services, Inc. or its affiliates. 2

    Builder [noun] A person who constructs something by putting parts or material together over a period of time
  3. © 2023, Amazon Web Services, Inc. or its affiliates. 3

    Cloud Advocate Never stop learning from the community
  4. © 2023, Amazon Web Services, Inc. or its affiliates. 4

    Acerca de mi Builder y evangelista del mundo cloud en AWS - Serverless Technical Lead, Ex-Kushki Papá, amante del buen té y café Typescript & Go lover <3 LINO ESPINOZA (HE/HIM)
  5. © 2023, Amazon Web Services, Inc. or its affiliates. 5

    Agenda AWS Lambda 101 Tipos de aplicaciones lambda y patrones de invocación AWS SDK Java AWS SAM 101 AWS SAM Workshop
  6. © 2023, Amazon Web Services, Inc. or its affiliates. 7

    ¿Qué es AWS Lambda? Provee tu código o imagen Paga por milisegundo Empaqueta como un .zip file (250 MB) o como un container image (10 GB) Soporta lenguajes como (Java, Go, Node.js, .NET, Python, Ruby) Sin aprovisionamiento o administración de servidores Escalamiento en milisegundos en respuesta al tráfico ES LA FORMA MÁS RÁPIDA DE CONSTRUIR APLICACIONES MODERNAS CON EL MÁS BAJO COSTO DE OPORTUNIDAD
  7. © 2023, Amazon Web Services, Inc. or its affiliates. 8

    ¿Qué se puede constuir usando AWS Lambda? Automatización Procesamiento de información Aplicaciones Web Aplicaciones basadas en eventos Machine Learning
  8. © 2023, Amazon Web Services, Inc. or its affiliates. 9

    Anatomía de una función lambda • Función a ejecutarse después de la invocación • Contiene la información enviada durante la invocación de la lambda Event (object) • Metadata para obtener información del runtime (requestId, authorizers, log group, etc) Handler Context (object)
  9. © 2023, Amazon Web Services, Inc. or its affiliates. 10

    Conceptos de AWS Lambda • Serverless • Escalamiento automático • Pagas por lo que usas • Casos de uso • Procesamientos de data a escala • Web y mobile backends • Cargas de trabajo de Machine Learning • Aplicaciones basadas en eventos (Event Driven Architecture)
  10. © 2023, Amazon Web Services, Inc. or its affiliates. 11

    Conceptos de AWS Lambda • Basado en memoria, mientras más memoria consumas, lo mismo con el cpu • Considera que un tamaño pequeño de una función lambda, no necesariamente significa menores costos.
  11. © 2023, Amazon Web Services, Inc. or its affiliates. 12

    Ciclo de vida de una función lambda
  12. © 2023, Amazon Web Services, Inc. or its affiliates. 13

    Ciclo de vida de una función lambda QUE PUEDO Y NO PUEDO OPTIMIZAR
  13. © 2023, Amazon Web Services, Inc. or its affiliates. 14

    Tipos de invocación de una function lambda
  14. © 2023, Amazon Web Services, Inc. or its affiliates. 15

    Tipos de invocación de una función lambda SÍNCRONA, ASÍNCRONA Y BASADA EN EVENTOS
  15. © 2023, Amazon Web Services, Inc. or its affiliates. 17

    AWS SDK para Java DESARROLLAR E IMPLEMENTAR APLICACIONES PARA JAVA, FACILITA EL LLAMADO A SERVICIOS DE AWS CON API DE JAVA IDIOMÁTICAS // pom.xml <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.21.37</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> // Import individual modules (in this case API gateway for example) <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apigateway</artifactId> </dependency>
  16. © 2023, Amazon Web Services, Inc. or its affiliates. 19

    AWS CloudFormation • Infraestructura como código • Brinda un lenguaje común para describir y provisionar todos los recursos de tu infraestructura en el entorno de la nube. • Puedes provisionar la infraestructura y las aplicaciones, sin tener que ejecutar operaciones manuales o escribir scripts ad-hocs https://aws.amazon.com/cloudformation/
  17. © 2023, Amazon Web Services, Inc. or its affiliates. 20

    AWS Serverless Application Model (SAM)
  18. © 2023, Amazon Web Services, Inc. or its affiliates. 21

    AWS Serverless Application Model (SAM) DESARROLLAR E IMPLEMENTAR APLICACIONES PARA JAVA, FACILITA EL LLAMADO A SERVICIOS DE AWS CON API DE JAVA IDIOMÁTICAS Es un framework opensource para construir aplicaciones serverless en AWS Cuenta con una sintaxis abreviada para declarar funciones, APIs, bases de datos, y mappings de eventos. Basado en YAML, deploy se realiza con AWS CloudFormation https://aws.amazon.com/serverless/sam/ https://github.com/aws/serverless-application-model
  19. © 2023, Amazon Web Services, Inc. or its affiliates. 22

    AWS SAM template AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: GetHelloWorldFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: java20 CodeUri: s3://my-bucket/my-jar.jar Policies: DynamoDBReadPolicy Events: GetTodo: Type: Api Properties: Path: /todo/{id} Method: GET SimpleTable: Type: AWS::Serverless::SimpleTable SAM template transform Creates: • Lambda function • Runtime • Execution Policy • Code • Hander • API Gateway • API Endpoint • Permissions Create DynamoDB table with some defaults
  20. © 2023, Amazon Web Services, Inc. or its affiliates. 23

    Iniciando con AWS SAM CLI sam init - Genera un template pre-configurado de AWS SAM junto con código de ejemplo en el lenguaje de tu preferencia sam package - Empaqueta el codigo de la aplicación junto con las dependencias en un ”deployment package” sam build - Prepara los siguientes pasos para hacer deploy o probar locamente sam deploy - Despliega tu aplicación serverless a la nube de AWS sam local - Prueba el código de tu aplicación localmente sam logs - Obtén los logs generados por tu función lambda desplegada
  21. © 2023, Amazon Web Services, Inc. or its affiliates. 25

    AWS SAM Workshop https://bit.ly/481EsJV https://catalog.workshops.aws/complete-aws-sam/es-US