Transcript
  • AWS LambdaGua para desarrolladores

  • AWS Lambda Gua para desarrolladores

    AWS Lambda: Gua para desarrolladoresCopyright 2018 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

    Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any mannerthat is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks notowned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored byAmazon.

  • AWS Lambda Gua para desarrolladores

    Table of ContentsQu es AWS Lambda? ...................................................................................................................... 1

    Cundo debo utilizar Lambda? ................................................................................................... 1Utiliza AWS Lambda por primera vez? ......................................................................................... 2

    Introduccin ....................................................................................................................................... 3Componentes esenciales de una aplicacin basada en Lambda ........................................................ 3Herramientas para crear y probar aplicaciones basadas en Lambda ................................................... 3Antes de empezar ...................................................................................................................... 4

    Paso siguiente ................................................................................................................... 4Configuracin de una cuenta de AWS ........................................................................................... 4

    Configuracin de una cuenta de AWS y creacin de un usuario administrador .............................. 4Configurar la AWS CLI ................................................................................................................ 7

    Paso siguiente ................................................................................................................... 7Instalar SAM CLI ........................................................................................................................ 7

    Instalar Docker ................................................................................................................... 8Instalacin de SAM CLI ....................................................................................................... 8

    Creacin de una funcin de Lambda sencilla y exploracin de la consola ............................................ 9Preparacin para la introduccin ........................................................................................... 9Creacin de una funcin de Lambda sencilla .......................................................................... 9

    Funciones de Lambda ....................................................................................................................... 15Creacin de funciones de Lambda .............................................................................................. 15

    Creacin del cdigo de la funcin de Lambda ....................................................................... 15Implementacin de cdigo y creacin de una funcin de Lambda ............................................. 16Monitorizacin y solucin de problemas ............................................................................... 17Ejemplos de aplicaciones basadas en AWS Lambda .............................................................. 18Temas relacionados .......................................................................................................... 18Modelo de programacin .................................................................................................... 18Creacin de un paquete de implementacin .......................................................................... 80Prueba local de aplicaciones sin servidor mediante SAM CLI (en versin beta pblica) ............... 103Creacin de funciones mediante el editor de la consola de AWS Lambda ................................. 112

    Configuracin de funciones de Lambda ...................................................................................... 138Acceso a los recursos de una funcin de Lambda ........................................................................ 139

    Acceso a los servicios de AWS ......................................................................................... 139Acceso a servicios distintos de AWS .................................................................................. 140Acceso a servicios o recursos privados .............................................................................. 140Compatibilidad con VPC ................................................................................................... 140

    Modelo de ejecucin de AWS Lambda ....................................................................................... 152Invocacin de funciones de Lambda .................................................................................................. 154

    Ejemplo 1 .............................................................................................................................. 155Ejemplo 2 .............................................................................................................................. 156Ejemplo 2 .............................................................................................................................. 156Tipos de invocacin ................................................................................................................. 158

    Mapeo de orgenes de eventos ......................................................................................... 158Funcionamiento de los reintentos .............................................................................................. 162Funcionamiento del escalado .................................................................................................... 163

    Velocidad de solicitudes de ejecucin simultnea ................................................................. 164Escalado ........................................................................................................................ 164

    Orgenes de eventos admitidos ................................................................................................. 165Amazon S3 .................................................................................................................... 166Amazon DynamoDB ........................................................................................................ 167Amazon Kinesis Data Streams .......................................................................................... 167Amazon Simple Notification Service ................................................................................... 167Amazon Simple Email Service .......................................................................................... 168Amazon Simple Queue Service ......................................................................................... 168Amazon Cognito ............................................................................................................. 169

    iii

  • AWS Lambda Gua para desarrolladores

    AWS CloudFormation ...................................................................................................... 169Amazon CloudWatch Logs ............................................................................................... 169Amazon CloudWatch Events ............................................................................................. 170AWS CodeCommit .......................................................................................................... 170Eventos programados (basados en Amazon CloudWatch Events) ........................................... 170AWS Config ................................................................................................................... 171Amazon Alexa ................................................................................................................ 171Amazon Lex ................................................................................................................... 172Amazon API Gateway ...................................................................................................... 172Botn de AWS IoT .......................................................................................................... 172Amazon CloudFront ......................................................................................................... 173Amazon Kinesis Data Firehose ......................................................................................... 173Otros orgenes de eventos: invocacin de una funcin de Lambda bajo demanda ...................... 173Datos de los eventos de muestra ...................................................................................... 174

    Casos de uso ................................................................................................................................. 185Amazon S3 ............................................................................................................................ 185

    Tutorial .......................................................................................................................... 187Kinesis ................................................................................................................................... 203

    Tutorial .......................................................................................................................... 204Amazon SQS ......................................................................................................................... 215

    Paso siguiente ................................................................................................................ 216Tutorial .......................................................................................................................... 216

    Amazon DynamoDB ................................................................................................................ 227Tutorial .......................................................................................................................... 228

    AWS CloudTrail ...................................................................................................................... 239Tutorial .......................................................................................................................... 241

    Amazon SNS .......................................................................................................................... 255Tutorial .......................................................................................................................... 255

    Amazon API Gateway .............................................................................................................. 261Uso de AWS Lambda con Amazon API Gateway (bajo demanda a travs de HTTPS) ................ 262Creacin de un microservicio sencillo utilizando Lambda y API Gateway .................................. 275

    Backend mvil (Android) .......................................................................................................... 277Tutorial .......................................................................................................................... 279

    Eventos programados .............................................................................................................. 290Tutorial .......................................................................................................................... 291

    Aplicaciones de usuario personalizadas ...................................................................................... 297Tutorial .......................................................................................................................... 297

    Lambda@Edge ....................................................................................................................... 304Implementacin de aplicaciones basadas en Lambda ........................................................................... 306

    Control de versiones y alias ..................................................................................................... 307Control de versiones ........................................................................................................ 308Alias .............................................................................................................................. 312Control de versiones, alias y polticas de recursos ............................................................... 321Administracin del control de versiones .............................................................................. 322Cambio de trfico mediante alias ....................................................................................... 325

    Uso de AWS Serverless Application Model (AWS SAM) ................................................................ 327Recursos sin servidor en AWS SAM .................................................................................. 327Creacin de una aplicacin sencilla (sam init) ...................................................................... 331Paso siguiente ................................................................................................................ 333Creacin de su propia aplicacin sin servidor ...................................................................... 333

    Automatizacin de la implementacin de aplicaciones basadas en Lambda ...................................... 336Paso siguiente ................................................................................................................ 336Creacin de una canalizacin para la aplicacin sin servidor .................................................. 336Implementacin de cdigo gradual ..................................................................................... 342

    Monitorizacin y solucin de problemas de aplicaciones basadas en Lambda ........................................... 344Uso de Amazon CloudWatch .................................................................................................... 344

    Escenarios de solucin de problemas ................................................................................ 345

    iv

  • AWS Lambda Gua para desarrolladores

    Acceso a las mtricas de CloudWatch ............................................................................... 346Acceso a los logs de CloudWatch ..................................................................................... 348Mtricas ......................................................................................................................... 349

    Uso de AWS X-Ray ................................................................................................................ 352Rastreo de aplicaciones basadas en Lambda con AWS X-Ray ............................................... 352Configuracin de AWS X-Ray con Lambda ......................................................................... 354Emisin de segmentos de rastro desde una funcin de Lambda ............................................. 355El demonio de AWS X-Ray en el entorno de Lambda ........................................................... 362Uso de variables de entorno para comunicarse con AWS X-Ray ............................................. 362Ejemplos de rastros de Lambda en la consola de AWS X-Ray ............................................... 362

    Administracin de aplicaciones basadas en Lambda ............................................................................. 365Etiquetado de funciones de Lambda .......................................................................................... 365

    Etiquetado de funciones de Lambda para la facturacin ........................................................ 366Aplicacin de etiquetas a funciones de Lambda ................................................................... 366Filtrado de funciones de Lambda etiquetadas ...................................................................... 367Restricciones de las etiquetas ........................................................................................... 369

    Registro de llamadas a la API con AWS CloudTrail ...................................................................... 369Informacin de AWS Lambda en CloudTrail ........................................................................ 369Informacin sobre las entradas de archivos de log de AWS Lambda ....................................... 370Uso de CloudTrail para rastrear invocaciones de funciones ................................................... 371

    Autenticacin y control de acceso .............................................................................................. 372Autenticacin .................................................................................................................. 372Control de acceso ........................................................................................................... 373Informacin general sobre la administracin de acceso ......................................................... 373Uso de polticas basadas en identidad (polticas de IAM) ...................................................... 378Uso de polticas basadas en recursos (polticas de funciones de Lambda) ................................ 390Modelo de permisos ........................................................................................................ 394Informacin sobre los permisos de la API de Lambda ........................................................... 396Plantillas de poltica ......................................................................................................... 399

    Administracin de la simultaneidad ............................................................................................ 406Lmite de ejecuciones simultneas en el nivel de cuenta ....................................................... 406Lmite de ejecuciones simultneas en el nivel de funcin ...................................................... 407Comportamiento de las limitaciones ................................................................................... 409Monitorizacin del uso de simultaneidad ............................................................................. 410

    Temas avanzados ........................................................................................................................... 411Variables de entorno ............................................................................................................... 411

    Configuracin ................................................................................................................. 411Reglas para la nomenclatura de variables de entorno ........................................................... 414Variables de entorno y control de versiones de las funciones ................................................. 414Cifrado de variables de entorno ........................................................................................ 414Creacin de una funcin de Lambda utilizando variables de entorno ....................................... 415Creacin de una funcin de Lambda utilizando variables de entorno para almacenar informacinconfidencial .................................................................................................................... 418

    Colas de mensajes fallidos ....................................................................................................... 419prcticas recomendadas ........................................................................................................... 420

    Cdigo de la funcin ....................................................................................................... 420Funcin de configuracin .................................................................................................. 421Alarmas y mtricas .......................................................................................................... 422Invocaciones con eventos de flujo ..................................................................................... 422Invocaciones asncronas .................................................................................................. 423VPC de Lambda ............................................................................................................. 423

    Poltica de soporte del tiempo de ejecucin ................................................................................ 424Estado de obsolescencia .................................................................................................. 424

    Entorno de ejecucin ....................................................................................................................... 425Variables de entorno disponibles para las funciones de Lambda ..................................................... 426

    Lmites ........................................................................................................................................... 428Lmites de AWS Lambda .......................................................................................................... 428

    v

  • AWS Lambda Gua para desarrolladores

    Errores relacionados con los lmites de AWS Lambda .................................................................. 430Referencia de la API ....................................................................................................................... 432

    Errores de los certificados cuando se utiliza un SDK .................................................................... 432Actions .................................................................................................................................. 433

    AddPermission ................................................................................................................ 434CreateAlias ..................................................................................................................... 439CreateEventSourceMapping .............................................................................................. 443CreateFunction ............................................................................................................... 448DeleteAlias ..................................................................................................................... 456DeleteEventSourceMapping .............................................................................................. 458DeleteFunction ................................................................................................................ 461DeleteFunctionConcurrency .............................................................................................. 464GetAccountSettings ......................................................................................................... 466GetAlias ......................................................................................................................... 468GetEventSourceMapping .................................................................................................. 471GetFunction .................................................................................................................... 474GetFunctionConfiguration ................................................................................................. 478GetPolicy ....................................................................................................................... 483Invoke ........................................................................................................................... 486InvokeAsync ................................................................................................................... 492ListAliases ...................................................................................................................... 495ListEventSourceMappings ................................................................................................. 498ListFunctions .................................................................................................................. 501ListTags ......................................................................................................................... 504ListVersionsByFunction .................................................................................................... 506PublishVersion ................................................................................................................ 509PutFunctionConcurrency ................................................................................................... 515RemovePermission .......................................................................................................... 517TagResource .................................................................................................................. 520UntagResource ............................................................................................................... 522UpdateAlias .................................................................................................................... 524UpdateEventSourceMapping ............................................................................................. 528UpdateFunctionCode ....................................................................................................... 532UpdateFunctionConfiguration ............................................................................................. 539

    Data Types ............................................................................................................................ 546AccountLimit ................................................................................................................... 547AccountUsage ................................................................................................................ 549AliasConfiguration ............................................................................................................ 550AliasRoutingConfiguration ................................................................................................. 552Concurrency ................................................................................................................... 553DeadLetterConfig ............................................................................................................ 554Environment ................................................................................................................... 555EnvironmentError ............................................................................................................ 556EnvironmentResponse ..................................................................................................... 557EventSourceMappingConfiguration ..................................................................................... 558FunctionCode ................................................................................................................. 560FunctionCodeLocation ...................................................................................................... 561FunctionConfiguration ...................................................................................................... 562TracingConfig ................................................................................................................. 566TracingConfigResponse ................................................................................................... 567VpcConfig ...................................................................................................................... 568VpcConfigResponse ........................................................................................................ 569

    Historial de revisin ......................................................................................................................... 570Actualizaciones anteriores ........................................................................................................ 570

    AWS Glossary ................................................................................................................................ 578

    vi

  • AWS Lambda Gua para desarrolladoresCundo debo utilizar Lambda?

    Qu es AWS Lambda?AWS Lambda es un servicio informtico que permite ejecutar cdigo sin aprovisionar ni administrarservidores. AWS Lambda ejecuta el cdigo solo cuando es necesario, y se escala de manera automtica,pasando de pocas solicitudes al da a miles por segundo. Solo se paga el tiempo de computacin que seconsume; no hay ningn cargo mientras el cdigo no se ejecuta. Con AWS Lambda, puede ejecutar cdigopara prcticamente cualquier tipo de aplicacin o servicio de backend, y sin que se requiera ningn tipode administracin. AWS Lambda ejecuta el cdigo en una infraestructura informtica de alta disponibilidady realiza todas las tareas de administracin de los recursos informticos, incluido el mantenimiento delservidor y del sistema operativo, el aprovisionamiento de capacidad y el escalado automtico, as comola monitorizacin del cdigo y las funciones de registro. Lo nico que tiene que hacer es proporcionar elcdigo en uno de los lenguajes que admite AWS Lambda (actualmente, Node.js, Java, C#, Go y Python).

    Puede utilizar AWS Lambda para ejecutar cdigo como respuesta a eventos, por ejemplo, cambios enlos datos de un bucket de Amazon S3 o de una tabla de Amazon DynamoDB; para ejecutar cdigo comorespuesta a solicitudes HTTP utilizando Amazon API Gateway; o invocar cdigo utilizando las llamadas alas API realizadas a travs de los SDK de AWS. Con estas funciones, puede utilizar Lambda para crearfcilmente disparadores de procesamiento de datos para servicios de AWS como Amazon S3 y AmazonDynamoDB, procesar datos de streaming almacenados en Kinesis o crear un backend propio que operecon el nivel de seguridad, desempeo y escala de AWS.

    Tambin puede crear aplicaciones sin servidor compuestas por funciones activadas por eventos eimplementarlas automticamente utilizando AWS CodePipeline y AWS CodeBuild. Para obtener msinformacin, consulte Implementacin de aplicaciones basadas en Lambda (p. 306).

    Para obtener ms informacin acerca del entorno de ejecucin de AWS Lambda, consulte Entornode ejecucin de Lambda y bibliotecas disponibles (p. 425). Para obtener informacin acerca decmo determina AWS Lambda los recursos informticos necesarios para ejecutar el cdigo, consulteConfiguracin de funciones de Lambda (p. 138).

    Cundo debo utilizar AWS Lambda?AWS Lambda es una plataforma de computacin ideal para muchas situaciones, siempre que el cdigo delas aplicaciones pueda escribirse en los lenguajes admitidos por AWS Lambda (es decir, Node.js, Java,Go, C# y Python) y que pueda ejecutarse dentro del entorno de tiempo de ejecucin estndar de AWSLambda y de los recursos proporcionados por Lambda.

    Cuando se utiliza AWS Lambda, solo es necesario preocuparse por el cdigo. AWS Lambda administrala flota de computacin, que ofrece una combinacin equilibrada de memoria, CPU, red y otros recursos.Esto es a cambio de flexibilidad, lo que significa que no se puede iniciar sesin en instancias decomputacin ni personalizar el sistema operativo ni el tiempo de ejecucin del lenguaje. Estas restriccionespermiten que AWS Lambda realice actividades operativas y administrativas en su nombre, como sonel aprovisionamiento de capacidad, la monitorizacin del estado de la flota, la aplicacin de parches deseguridad, la implementacin del cdigo, y la monitorizacin y el registro de las funciones de Lambda.

    Si necesita administrar sus propios recursos informticos, Amazon Web Services tambin ofrece otrosservicios informticos para satisfacer sus necesidades.

    El servicio Amazon Elastic Compute Cloud (Amazon EC2) ofrece flexibilidad y una amplia variedad detipos de instancias de EC2 para elegir. Ofrece la posibilidad de personalizar los sistemas operativos,la pila completa de software y la configuracin de red y de seguridad, pero el usuario es responsablede aprovisionar la capacidad, monitorizar el estado y el desempeo de la flota y utilizar las zonas dedisponibilidad para aumentar la tolerancia a errores.

    1

    https://aws.amazon.com/serverless

  • AWS Lambda Gua para desarrolladoresUtiliza AWS Lambda por primera vez?

    Elastic Beanstalk ofrece un servicio fcil de utilizar para implementar y escalar aplicaciones en AmazonEC2, en el que se mantiene la propiedad y el control total sobre las instancias EC2subyacentes.

    Utiliza AWS Lambda por primera vez?Si utiliza AWS Lambda por primera vez, le recomendamos que lea las siguientes secciones en orden:

    1. Lea la informacin general del producto y vea el vdeo introductorio para conocer los ejemplos de casosde uso. Estos recursos estn disponibles en la pgina web de AWS Lambda.

    2. Lea la seccin "Funciones de Lambda" de esta gua. Hay conceptos fundamentales con los que debeestar familiarizado para comprender el modelo de programacin y las opciones de implementacin parauna funcin de Lambda. En esta seccin se explican estos conceptos y se proporcionan detalles decmo funcionan en los distintos lenguajes que puede utilizar para crear el cdigo de una funcin deLambda. Para obtener ms informacin, consulte Funciones de Lambda (p. 15).

    3. Realice el ejercicio de introduccin basado en la consola. El ejercicio ofrece instrucciones para crear yprobar su primera funcin de Lambda mediante la consola. Tambin puede obtener ms informacinsobre los proyectos que proporciona la consola para crear rpidamente funciones de Lambda. Paraobtener ms informacin, consulte Introduccin (p. 3).

    4. Lea la seccin Implementacin de aplicaciones con AWS Lambda de esta gua. Esta seccin presentavarios componentes de AWS Lambda con los que va a trabajar para crear una experiencia integral. Paraobtener ms informacin, consulte Implementacin de aplicaciones basadas en Lambda (p. 306).

    Adems del ejercicio de introduccin, puede examinar distintos casos de uso, cada uno de los cualesdispone de un tutorial que presenta un escenario de ejemplo. Puede realizar tutoriales especficosacordes con las necesidades de su aplicacin (por ejemplo, si desea que la invocacin de la funcin deLambda sea controlada por eventos o bajo demanda). Para obtener ms informacin, consulte Casos deuso (p. 185).

    Los siguientes temas proporcionan informacin adicional sobre AWS Lambda:

    Control de versiones y alias de las funciones de AWS Lambda (p. 307) Uso de Amazon CloudWatch (p. 344) Prcticas recomendadas para trabajar con funciones de AWS Lambda (p. 420) Lmites de AWS Lambda (p. 428)

    2

    https://aws.amazon.com/lambda/

  • AWS Lambda Gua para desarrolladoresComponentes esenciales de una

    aplicacin basada en Lambda

    IntroduccinEn esta seccin, le presentamos los conceptos fundamentales de una aplicacin tpica basada enLambda y las opciones disponibles para crear y probar sus aplicaciones. Adems, le proporcionaremosinstrucciones sobre cmo instalar las herramientas necesarias para realizar los tutoriales incluidos en estagua y crear su primera funcin de Lambda.

    Componentes esenciales de una aplicacin basadaen Lambda

    Funcin de Lambda: el elemento bsico, que se compone del cdigo personalizado y las bibliotecasdependientes. Para obtener ms informacin, consulte Funciones de Lambda (p. 15).

    Origen de eventos: un servicio de AWS, como Amazon SNS, o un servicio personalizado, queactiva la funcin y ejecuta su lgica. Para obtener ms informacin, consulte Mapeo de orgenes deeventos (p. 158).

    Recursos posteriores: un servicio de AWS como tablas de DynamoDB o buckets de Amazon S3, al quellama su funcin de Lambda una vez activada.

    Flujos de logs: aunque Lambda monitoriza automticamente las invocaciones de la funcin y registramtricas en CloudWatch, puede comentar el cdigo de su funcin con declaraciones de registropersonalizadas que le permitan analizar el flujo de ejecucin y el desempeo de su funcin de Lambdapara garantizar que funciona correctamente.

    AWS SAM: un modelo para definir aplicaciones sin servidor. AWS CloudFormation admite de formanativa AWS SAM y define una sintaxis simplificada para expresar recursos sin servidor. Para obtenerms informacin, consulte Uso de AWS Serverless Application Model (AWS SAM) (p. 327)

    Herramientas para crear y probar aplicacionesbasadas en Lambda

    Hay tres herramientas principales que utiliza para interactuar con el servicio AWS Lambda, que sedescriben a continuacin. Explicaremos las herramientas para crear aplicaciones basadas en AWSLambda en otras secciones.

    Consola de Lambda: ofrece un mtodo para disear grficamente su aplicacin basada en Lambda,crear o actualizar el cdigo de la funcin de Lambda y configurar los eventos, los recursos posteriores ylos permisos de IAM que requiere su funcin. Incluye tambin opciones de configuracin avanzadas, quese describen en Temas avanzados (p. 411).

    AWS CLI: una interfaz de lnea de comandos que puede utilizar para aprovechar las operaciones APIde Lambda, como la creacin de funciones y el mapeo de orgenes de eventos. Para obtener una listacompleta de las operaciones API de Lambda, consulte Actions (p. 433).

    SAM CLI: una interfaz de lnea de comandos que puede utilizar para desarrollar, probar y analizar susaplicaciones sin servidor localmente antes de cargarlas en el motor de tiempo de ejecucin de Lambda.Para obtener ms informacin, consulte Prueba local de aplicaciones sin servidor mediante SAM CLI (enversin beta pblica) (p. 103).

    3

    https://aws.amazon.com/serverless

  • AWS Lambda Gua para desarrolladoresAntes de empezar

    Antes de empezarPara poder utilizar los tutoriales que se ofrecen al final de esta seccin, asegrese de que ha realizado losiguiente:

    Configuracin de una cuenta de AWS (p. 4) Configuracin de la AWS Command Line Interface (AWS CLI) (p. 7) Ha seguido los pasos para utilizar SAM CLI, incluido Docker, que se describen aqu: Instalar SAM

    CLI (p. 7).

    Paso siguienteConfiguracin de una cuenta de AWS (p. 4)

    Configuracin de una cuenta de AWSSi an no lo ha hecho, deber inscribirse una cuenta de AWS y crear un usuario administrador en dichacuenta. Tambin deber configurar la AWS Command Line Interface (AWS CLI). Muchos de los tutorialesutilizan la AWS CLI.

    Siga las instrucciones de los temas siguientes para completar la configuracin:

    Configuracin de una cuenta de AWS y creacin de unusuario administradorSuscrbase a AWSCuando se inscriba en Amazon Web Services (AWS), su cuenta de AWS se registrar automticamente entodos los servicios de AWS, incluido AWS Lambda. Solo se le cobrar por los servicios que utilice.

    Con AWS Lambda, solo paga por los recursos que utiliza. Para obtener ms informacin acerca de lastarifas de uso de AWS Lambda, consulte la pgina del producto de AWS Lambda. Si es un cliente nuevode AWS, puede empezar a usar AWS Lambda gratuitamente. Para obtener ms informacin, consulteCapa gratuita de AWS.

    Si ya dispone de una cuenta de AWS, pase a la siguiente tarea. Si no dispone de una cuenta de AWS,utilice el siguiente procedimiento para crear una.

    Para crear una cuenta de AWS

    1. Abra https://aws.amazon.com/ y despus elija Create an AWS Account.

    Note

    Esto podra no estar disponible en el navegador si ha iniciado previamente sesin en laConsola de administracin de AWS. En ese caso, elija Sign in to a different account ydespus Create a new AWS account.

    2. Siga las instrucciones en lnea.

    Parte del procedimiento de inscripcin consiste en recibir una llamada telefnica e introducir unnmero PIN con el teclado del telfono.

    4

    https://www.docker.comhttps://aws.amazon.com/lambda/https://aws.amazon.com/free/https://aws.amazon.com/

  • AWS Lambda Gua para desarrolladoresConfiguracin de una cuenta de AWSy creacin de un usuario administrador

    Anote su ID de cuenta de AWS porque lo necesitar en la siguiente tarea.

    Creacin de un usuario de IAMAl utilizar los servicios de AWS, como AWS Lambda, debe proporcionar las credenciales para que elservicio pueda determinar si tiene los permisos necesarios para obtener acceso a los recursos propiedadde dicho servicio. La consola requiere que especifique la contrasea. Puede crear claves de acceso parasu cuenta de AWS para tener acceso a la AWS CLI o API. Sin embargo, no es recomendable que tengaacceso a AWS con las credenciales de su cuenta de AWS. En lugar de ello, le recomendamos que utiliceAWS Identity and Access Management (IAM). Cree un usuario de IAM, aada el usuario a un grupo de IAMcon permisos administrativos y, a continuacin, conceda permisos administrativos al usuario de IAM queha creado. A continuacin, podr tener acceso a AWS mediante una URL especial y esas credenciales deusuario de IAM.

    Si se ha registrado en AWS pero no ha creado un usuario de IAM, puede crear uno mediante la consola deIAM.

    En los ejercicios y los tutoriales de la introduccin de esta gua se presupone que tiene un usuario(adminuser) con privilegios de administrador. Cuando siga el procedimiento, cree un usuario con elnombre adminuser.

    Para crear un usuario de IAM para s mismo y agregarlo a un grupo de administradores

    1. Utilice la direccin de correo electrnico y la contrasea de su cuenta de AWS para iniciar sesincomo Usuario de la cuenta raz de AWS en la consola de IAM en https://console.aws.amazon.com/iam/.

    Note

    Recomendamos que siga la prctica recomendada de utilizar el usuario Administradorde IAM como se indica a continuacin, y que guarde en un lugar seguro las credencialesde usuario raz. Inicie sesin como usuario raz nicamente para realizar algunas tareas deadministracin de servicios y de cuentas.

    2. En el panel de navegacin de la consola, elija Usuarios y, a continuacin, elija Aadir usuario.3. En Nombre de usuario, escriba Administrador.4. Active la casilla de verificacin situada junto a Consola de administracin de AWS access, seleccione

    Custom password y escriba la contrasea del nuevo usuario en el cuadro de texto. Tambin puedeseleccionar Require password reset (Obligar a restablecer contrasea) para obligar al usuario a crearuna nueva contrasea la prxima vez que inicie sesin.

    5. Elija Next: Permissions.6. En la pgina Set permissions, elija Add user to group.7. Elija Create group.8. En el cuadro de dilogo Create group (Crear grupo), en Group name (Nombre de grupo) escriba

    Administradores.9. En Filter policies (Polticas de filtro), marque la casilla AWS managed - job function (Funcin de trabajo

    administrado por AWS).10. En la lista de polticas, active la casilla de verificacin AdministratorAccess. A continuacin, elija

    Create group.11. Retroceda a la lista de grupos y active la casilla de verificacin del nuevo grupo. Elija Refresh si es

    necesario para ver el grupo en la lista.12. Elija Next: Review para ver la lista de suscripciones a grupos que se van a aadir al nuevo usuario.

    Cuando est listo para continuar, elija Create user.

    Puede usar este mismo proceso para crear ms grupos y usuarios, y para conceder a los usuarios accesolos recursos de su cuenta de AWS. Para obtener ms informacin sobre cmo usar las polticas para

    5

    https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.htmlhttps://console.aws.amazon.com/iam/https://console.aws.amazon.com/iam/https://docs.aws.amazon.com/general/latest/gr/aws_tasks-that-require-root.htmlhttps://docs.aws.amazon.com/general/latest/gr/aws_tasks-that-require-root.html

  • AWS Lambda Gua para desarrolladoresConfiguracin de una cuenta de AWSy creacin de un usuario administrador

    restringir los permisos de los usuarios a recursos de AWS especficos, vaya a Administracin de acceso yPolticas de ejemplo.

    Para iniciar sesin con el nuevo usuario de IAM

    1. Cierre la sesin de la Consola de administracin de AWS.2. Utilice el siguiente formato de URL para iniciar sesin en la consola:

    https://aws_account_number.signin.aws.amazon.com/console/

    aws_account_number es el ID de la cuenta de AWS, sin guiones. Por ejemplo, si su ID de cuentade AWS es 1234-5678-9012, su nmero de cuenta de AWS ser 123456789012. Para obtenerinformacin acerca de cmo encontrar su nmero de cuenta, consulte Su ID de cuenta y alias de AWSen la Gua del usuario de IAM.

    3. Especifique el nombre y la contrasea del usuario de IAM que acaba de crear. Cuandohaya iniciado sesin, en la barra de navegacin se mostrar: su_nombre_de_usuario @su_id_de_cuenta_de_aws.

    Si no desea que la direccin URL de la pgina de inicio de sesin contenga el ID de su cuenta de AWS,puede crear un alias de cuenta.

    Para crear o eliminar un alias de cuenta

    1. Inicie sesin en la Consola de administracin de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

    2. En el panel de navegacin, elija Dashboard.3. Busque el enlace de inicio de sesin de los usuarios de IAM.4. Para crear el alias, haga clic en Customize, introduzca el nombre que desea usar para el alias y, a

    continuacin, elija Yes, Create.5. Para eliminar el alias, elija Customize y, a continuacin, elija Yes, Delete. La direccin URL de inicio

    de sesin volver a utilizar el ID de cuenta de AWS.

    Para iniciar sesin despus de crear un alias de cuenta, use la siguiente direccin URL:

    https://your_account_alias.signin.aws.amazon.com/console/

    Para verificar el enlace de inicio de sesin de los usuarios de IAM de su cuenta, abra la consola de IAM ybusque IAM users sign-in link: en el panel.

    Para obtener ms informacin sobre IAM, consulte lo siguiente:

    AWS Identity and Access Management (IAM) Introduccin Gua del usuario de IAM

    Paso siguienteConfiguracin de la AWS Command Line Interface (AWS CLI) (p. 7)

    6

    https://docs.aws.amazon.com/IAM/latest/UserGuide/access.htmlhttps://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.htmlhttps://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.htmlhttps://console.aws.amazon.com/iam/https://console.aws.amazon.com/iam/https://aws.amazon.com/iam/https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.htmlhttps://docs.aws.amazon.com/IAM/latest/UserGuide/

  • AWS Lambda Gua para desarrolladoresConfigurar la AWS CLI

    Configuracin de la AWS Command Line Interface(AWS CLI)

    En todos los ejercicios de esta gua se presupone que est utilizando las credenciales de usuarioadministrador (adminuser) en su cuenta para realizar las operaciones. Para obtener instrucciones acercade cmo crear un usuario administrador en su cuenta de AWS, consulte Configuracin de una cuenta deAWS y creacin de un usuario administrador (p. 4) y, a continuacin, siga los pasos para descargar yconfigurar la AWS Command Line Interface (AWS CLI).

    Para configurar la AWS CLI

    1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas de lagua AWS Command Line Interface Gua del usuario.

    Configuracin inicial de la AWS Command Line Interface Configuracin de la AWS Command Line Interface

    2. Aada un perfil con nombre para el usuario administrador en el archivo de configuracin de la AWSCLI. Puede utilizar este perfil cuando ejecute los comandos de la AWS CLI. Para obtener msinformacin sobre la creacin de este perfil, consulte Perfiles con nombre.

    [profile adminuser]aws_access_key_id = adminuser access key IDaws_secret_access_key = adminuser secret access keyregion = aws-region

    Para ver una lista de las regiones de AWS disponibles, consulte Regions and Endpoints en la guaReferencia general de Amazon Web Services.

    3. Verifique la configuracin introduciendo los siguientes comandos en el smbolo del sistema.

    Pruebe el comando de ayuda para verificar que la AWS CLI est instalada en su equipo:

    aws help

    Pruebe un comando de Lambda para verificar que el usuario puede obtener acceso a AWSLambda. Este comando muestra las funciones de Lambda de la cuenta, si las hay. La AWS CLIutiliza las credenciales de adminuser para autenticar la solicitud.

    aws lambda list-functions --profile adminuser

    Paso siguienteInstalar SAM CLI (p. 7)

    Instalar SAM CLISAM CLI es una herramienta que permite tambin un desarrollo iterativo ms rpido del cdigo de susfunciones Lambda, que se explica en Prueba local de aplicaciones sin servidor mediante SAM CLI (enversin beta pblica) (p. 103). Para utilizar SAM CLI, primero debe instalar Docker.

    7

    https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.htmlhttps://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.htmlhttps://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.htmlhttps://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.htmlhttps://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.htmlhttps://docs.aws.amazon.com/general/latest/gr/rande.html

  • AWS Lambda Gua para desarrolladoresInstalar Docker

    Instalar DockerDocker es una plataforma de contenedores de software de cdigo abierto que permite crear, administrary probar aplicaciones, independientemente de que ejecute en Linux, Mac o Windows. Para obtener msinformacin e instrucciones e descarga, consulte Docker.

    Cuando se ha instalado Docker, SAM CLI proporciona automticamente una imagen personalizada deDocker denominada docker-lambda. Esta imagen est diseada especficamente por un socio deAWS para simular el entorno de ejecucin real de AWS Lambda. Este entorno incluye software instalado,bibliotecas, permisos de seguridad, variables de entorno y otras caractersticas que se describen enEntorno de ejecucin de Lambda y bibliotecas disponibles (p. 425).

    Puede invocar la funcin de Lambda localmente utilizando docker-lambda. En este entorno, lasaplicaciones sin servidor se ejecutan y funcionan de forma muy similar a como lo hacen en el tiempo deejecucin de AWS Lambda, sin que tenga que volver a implementar el tiempo de ejecucin. Su ejecuciny desempeo de este entorno tienen en cuenta aspectos como los tiempos de espera y el uso de lamemoria.

    Important

    Dado que se trata de un entorno simulado, no se garantiza que los resultados de las pruebaslocales coincidan exactamente con los del tiempo de ejecucin real de AWS.

    Para obtener ms informacin, consulte Docker Lambda en GitHub. (Si no tiene una cuenta de GitHub,puede crearla de forma gratuita y, a continuacin, acceder a Docker Lambda).

    Instalacin de SAM CLILa forma ms sencilla de instalar SAM CLI es utilizar pip.

    Puede ejecutar SAM CLI en entornos Linux, Mac o Windows. La forma ms sencilla de instalar SAM CLI esutilizar pip.

    Para utilizar pip, debe tener Python instalado y aadido a la ruta de entorno del sistema.

    Note

    En un entorno Windows, pip se ejecuta desde el directorio python-version\Scripts.

    pip install aws-sam-cli

    A continuacin, compruebe que la instalacin se ha realizado correctamente.

    sam --version

    Debera ver algo similar a lo siguiente:

    SAM CLI, version 0.3.0

    Para empezar a utilizar SAM CLI con sus aplicaciones sin servidor, consulte Prueba local de aplicacionessin servidor mediante SAM CLI (en versin beta pblica) (p. 103)

    Paso siguienteCreacin de una funcin de Lambda sencilla y exploracin de la consola (p. 9)

    8

    https://www.docker.comhttps://github.com/lambci/docker-lambdahttps://github.com/https://pypi.org/project/pip/https://pypi.org/project/pip/https://://www.python.org/

  • AWS Lambda Gua para desarrolladoresCreacin de una funcin de Lambdasencilla y exploracin de la consola

    Creacin de una funcin de Lambda sencilla yexploracin de la consola

    En este ejercicio de introduccin, primero crea una funcin de Lambda utilizando la consola de AWSLambda. A continuacin, deber invocar la funcin de Lambda de forma manual utilizando los datos delevento de muestra. AWS Lambda ejecuta la funcin de Lambda y devuelve los resultados. Seguidamente,podr verificar los resultados de la ejecucin, incluidos los logs creados por la funcin de Lambda y variasmtricas de CloudWatch.

    A medida que siga los pasos, tambin se familiarizar con la consola de AWS Lambda lo que le permitir:

    Explorar los proyectos. Cada proyecto incluye cdigo y configuraciones de muestra que le permiten crearfunciones de Lambda con tan solo unos clics.

    Ver y actualizar la informacin de la configuracin de la funcin de Lambda. Invocar una funcin de Lambda de forma manual y examinar los resultados en la seccin Execution

    results. Monitorizar las mtricas de CloudWatch en la consola.

    Preparacin para la introduccinEn primer lugar, inscrbase en una cuenta de AWS y cree un usuario administrador en ella. Para obtenerinstrucciones, consulte Configuracin de una cuenta de AWS (p. 4).

    Paso siguiente

    Creacin de una funcin de Lambda sencilla (p. 9)

    Creacin de una funcin de Lambda sencillaSiga los pasos de esta seccin para crear una funcin de Lambda sencilla.

    Para crear una funcin de Lambda

    1. Inicie sesin en la Consola de administracin de AWS y abra la consola de AWS Lambda.2. Tenga en cuenta que AWS Lambda ofrece una funcin Hello World sencilla en la introduccin

    bajo el nombre How it works e incluye una opcin Run, que le permite invocar la funcin como unaintroduccin general. En este tutorial se presentan opciones adicionales para crear, probar y actualizarsus funciones de Lambda, as como otras caractersticas proporcionadas por la consola de Lambda, yse ofrecen enlaces a cada una de ellas para que las examine con detenimiento.

    Elija Create a function en la seccin Get Started para continuar.

    Note

    Si no se ha creado ninguna funcin de Lambda, la consola nicamente muestra la pgina GetStarted. Si ya ha creado alguna funcin, ver la pgina Lambda > Functions. En la pgina delista, elija Create a function para ir a la pgina Create function.

    3. En la pgina Create function (Crear funcin), se muestran tres opciones:

    Author from scratch Proyectos Repositorio de aplicaciones sin servidor

    9

  • AWS Lambda Gua para desarrolladoresCreacin de una funcin de Lambda sencilla

    Para obtener ms informacin sobre cmo utilizar el repositorio de aplicaciones sin servidor, consulteel artculo en el que se explica qu es AWS Serverless Application Repository.

    a. Si desea revisar los proyectos, elija el botn Blueprints, que mostrar los proyectos disponibles.Tambin puede utilizar Filter para buscar proyectos especficos. Por ejemplo:

    Introduzca S3 en Filtro para obtener nicamente la lista de proyectos disponibles para procesareventos de Amazon S3.

    Introduzca dynamodb en Filtro para obtener una lista de los proyectos disponibles paraprocesar eventos de Amazon DynamoDB.

    b. En este ejercicio de introduccin, seleccione el botn Author from scratch.4. En Author from scratch, haga lo siguiente:

    En Name*, especifique el nombre de la funcin de Lambda. En Runtime* (Tiempo de ejecucin*), elija Python 3.6. En Role*, elija Create new role from template(s): Escriba un nombre para el rol en Role Name*. Deje el campo Policy templates (Plantillas de poltica) en blanco. Para los fines de esta introduccin,

    la funcin Lambda tendr los permisos de ejecucin necesarios.

    Note

    Para ver un anlisis detallado de las polticas de seguridad de AWS Lambda, consulteAutenticacin y control de acceso de AWS Lambda (p. 372).

    Elija Create Function.5. En la nueva pgina nombre-funcin, tenga en cuenta lo siguiente:

    En el panel Add triggers, puede elegir un servicio que active automticamente su funcin de Lambdaeligiendo alguna de las opciones del servicio mostradas.

    a. En funcin del servicio que seleccione, el sistema le pedir que proporcione informacinpertinente para dicho servicio. Por ejemplo, si selecciona DynamoDB, debe proporcionar losiguiente:

    10

    https://docs.aws.amazon.com/serverlessrepo/latest/devguide//what-is-serverlessrepo.html

  • AWS Lambda Gua para desarrolladoresCreacin de una funcin de Lambda sencilla

    El nombre de la tabla de DynamoDB. Tamao del lote La posicin inicial

    b. En este ejemplo, no configure un desencadenador.

    En Cdigo de la funcin anote el cdigo que se indica. Devuelve un saludo "Hello from Lambda"sencillo.

    Handler muestra el valor lambda_function.lambda_handler. Se trata de nombre-de-archivo.funcin-de-controlador. La consola guarda el cdigo de muestra en el archivolambda_function.py y, en el cdigo. lambda_handler es el nombre de la funcin que recibeel evento como parmetro cuando se invoca la funcin de Lambda. Para obtener ms informacin,consulte Controlador de funciones de Lambda (Python) (p. 52).

    Observe el IDE (entorno de desarrollo integrado) incrustado. Para obtener ms informacin,consulte Creacin de funciones mediante el editor de la consola de AWS Lambda (p. 112).

    6. Otras opciones de configuracin de esta pgina incluyen:

    Environment variables: en las funciones de Lambda, le permiten pasar ajustes de forma dinmicaal cdigo de la funcin y a las bibliotecas, sin necesidad de realizar cambios en el cdigo. Paraobtener ms informacin, consulte Variables de entorno (p. 411).

    Tags: son pares clave-valor que se asocian a los recursos de AWS para organizarlos mejor. Paraobtener ms informacin, consulte Etiquetado de funciones de Lambda (p. 365).

    Execution role: le permite administrar la seguridad de la funcin, utilizando los roles y las polticasdefinidas o creando otros nuevos. Para obtener ms informacin, consulte Autenticacin y controlde acceso de AWS Lambda (p. 372).

    Basic settings: le permite determinar la asignacin de memoria y el lmite de tiempo de espera de lafuncin de Lambda. Para obtener ms informacin, consulte Lmites de AWS Lambda (p. 428).

    Network: le permite seleccionar una VPC a la que obtendr acceso la funcin. Para obtener msinformacin, consulte Configuracin de una funcin de Lambda para acceder recursos en unaAmazon VPC (p. 140).

    Debugging and error handling: le permite seleccionar un recurso Colas de mensajesfallidos (p. 419) para analizar los reintentos fallidos de invocacin de la funcin. Tambinle permite habilitar el rastreo activo. Para obtener ms informacin, consulte Uso de AWS X-Ray (p. 352).

    Concurrency: le permite asignar un lmite especfico de ejecuciones simultneas permitidas paraesta funcin. Para obtener ms informacin, consulte Lmite de ejecuciones simultneas en el nivelde funcin (p. 407).

    Auditing and compliance: registra las invocaciones de la funcin para anlisis de operaciones yriesgo, gobierno y conformidad. Para obtener ms informacin, consulte Uso de AWS Lambda conAWS CloudTrail (p. 239).

    Invocacin manual de la funcin de Lambda y verificacin de losresultados, los logs y las mtricasSiga estos pasos para invocar la funcin de Lambda utilizando los datos del evento de muestra que seproporcionan en la consola.

    1. En la pgina sufuncin, elija Test.2. En la pgina Configure test event, elija Create new test event y en Event template deje la opcin

    predeterminada Hello World. Escriba un nombre en Event name y examine la siguiente plantilla deeventos de ejemplo:

    11

  • AWS Lambda Gua para desarrolladoresCreacin de una funcin de Lambda sencilla

    { "key3": "value3", "key2": "value2", "key1": "value1"}

    Si lo desea, puede modificar las claves y los valores en el cdigo JSON de muestra, pero no cambiela estructura del evento. Si realiza alguna modificacin en las claves o los valores, debe actualizar elcdigo de muestra segn sea necesario.

    Note

    Si elige eliminar el evento de prueba, vaya a la pgina Configurar evento de prueba y, acontinuacin, elija Eliminar.

    3. AWS Lambda ejecuta la funcin en su nombre. El handler de la funcin de Lambda recibe el eventode muestra y, a continuacin, lo procesa.

    4. Si la ejecucin se realiza correctamente, puede ver los resultados en la consola.

    Tenga en cuenta lo siguiente:

    La seccin Execution result muestra el estado de ejecucin como succeeded y tambin muestra losresultados de la ejecucin de la funcin devueltos por la instruccin return.

    Note

    La consola utiliza siempre el tipo de invocacin RequestResponse (invocacinsncrona) al invocar una funcin de Lambda, lo que hace que AWS Lambda devuelvainmediatamente una respuesta. Para obtener ms informacin, consulte Tipos deinvocacin (p. 158).

    La seccin Summary muestra la informacin principal proporcionada en la seccin Log output (lalnea REPORT del log de ejecucin).

    La seccin Log output muestra los logs que genera AWS Lambda para cada ejecucin. Estos sonlos logs que escribe la funcin de Lambda en CloudWatch. La consola de AWS Lambda muestraestos logs para su comodidad.

    12

  • AWS Lambda Gua para desarrolladoresCreacin de una funcin de Lambda sencilla

    Tenga en cuenta que el enlace Click here muestra los logs en la consola de CloudWatch. Acontinuacin, la funcin aade logs a Amazon CloudWatch en el grupo de logs correspondiente a lafuncin de Lambda.

    5. Ejecute la funcin de Lambda varias veces para recopilar algunas mtricas que podr ver en elsiguiente paso.

    6. Elija la pestaa Monitoring para ver las mtricas de CloudWatch de la funcin de Lambda. Esta pginamuestra las mtricas de CloudWatch.

    Tenga en cuenta lo siguiente:

    El eje X muestra las ltimas 24 horas a partir de la hora actual. Invocation count muestra el nmero de invocaciones durante este intervalo.

    13

  • AWS Lambda Gua para desarrolladoresCreacin de una funcin de Lambda sencilla

    Invocation duration muestra cunto tiempo ha tardado la funcin de Lambda en ejecutarse. Muestrael tiempo de ejecucin mnimo, el mximo y el promedio.

    Invocation errors muestra el nmero de veces que ha fallado la funcin de Lambda. Puedecomparar el nmero de veces que se ha ejecutado la funcin y cuntas veces ha fallado (si es quelo ha hecho).

    Las mtricas Throttled invocations muestran si AWS Lambda ha restringido la invocacin de lafuncin de Lambda. Para obtener ms informacin, consulte Lmites de AWS Lambda (p. 428).

    Las mtricas de ejecuciones simultneas muestran el nmero de invocaciones simultneasde su funcin de Lambda. Para obtener ms informacin, consulte Administracin de lasimultaneidad (p. 406).

    La consola de AWS Lambda muestra estas mtricas de CloudWatch para su comodidad. Puedeverlas en la consola de Amazon CloudWatch haciendo clic en cualquiera de ellas.

    Para obtener ms informacin sobre estas mtricas y lo que significan, consulte Mtricas deCloudWatch de AWS Lambda (p. 350).

    14

  • AWS Lambda Gua para desarrolladoresCreacin de funciones de Lambda

    Funciones de LambdaSi es la primera vez que utiliza AWS Lambda, tal vez se pregunte cmo AWS Lambda ejecuta su cdigo.Cmo determina AWS Lambda la cantidad de memoria y los requisitos de CPU necesarios para ejecutarel cdigo de una funcin de Lambda? En las secciones siguientes se incluye informacin general acercade cmo funciona una funcin de Lambda.

    En las siguientes secciones se explica cmo se invocan las funciones que crea y cmo implementarlas ymonitorizarlas. Tambin le recomendamos que lea las secciones Cdigo de la funcin y Configuracin dela funcin de Prcticas recomendadas para trabajar con funciones de AWS Lambda (p. 420).

    Para empezar, le presentaremos el tema en el que se explican los aspectos fundamentales de creacin deuna funcin de Lambda, Creacin de funciones de Lambda (p. 15).

    Creacin de funciones de LambdaEl cdigo de aplicacin se carga en AWS Lambda, un servicio informtico, con el formato de una o variasfunciones Lambda, A su vez, AWS Lambda ejecuta el cdigo en su nombre. AWS Lambda se encarga deaprovisionar y administrar los servidores para ejecutar el cdigo tras la invocacin.

    Normalmente, el ciclo de vida de una aplicacin basada en AWS Lambda incluye la creacin de cdigo, laimplementacin del cdigo en AWS Lambda y, por ltimo, la monitorizacin y la solucin de problemas. Acontinuacin se muestran algunas preguntas generales que surgen en cada una de estas fases del ciclode vida:

    Creacin del cdigo de la funcin de Lambda: Qu lenguajes se admiten? Existe un modelo deprogramacin que debo seguir? Cmo puedo empaquetar el cdigo y las dependencias para cargarlosen AWS Lambda? Qu herramientas estn disponibles?

    Carga del cdigo y creacin de las funciones de Lambda: Cmo cargo el paquete de cdigo en AWS

    Lambda? Cmo indico a AWS Lambda dnde debe empezar a ejecutar el cdigo? Cmo puedoespecificar requisitos informticos como la memoria y el tiempo de espera?

    Monitorizacin y solucin de problemas: Qu mtricas estn disponibles para una funcin de Lambda

    que est en produccin? Si se producen errores, cmo puedo obtener logs o solucionar problemas?

    En las secciones siguientes se proporciona informacin introductoria, y la seccin de ejemplos, situada alfinal, contiene ejemplos funcionales que puede examinar.

    Creacin del cdigo de la funcin de LambdaPuede escribir el cdigo de la funcin de Lambda en los lenguajes admitidos por AWS Lambda. Paraver una lista de los lenguajes admitidos, consulte Entorno de ejecucin de Lambda y bibliotecasdisponibles (p. 425). Existen herramientas para la creacin de cdigo, como la consola de AWS Lambdael IDE de Eclipse y el IDE de Visual Studio. Sin embargo, las herramientas y las opciones disponiblesdependen de lo siguiente:

    El lenguaje que elija para escribir el cdigo de la funcin de Lambda. Las bibliotecas que utilice en el cdigo. El tiempo de ejecucin de AWS Lambda proporciona algunas de

    las bibliotecas, y el usuario debe cargar las bibliotecas adicionales que utilice.

    15

  • AWS Lambda Gua para desarrolladoresImplementacin de cdigo y

    creacin de una funcin de Lambda

    En la siguiente tabla se muestran los lenguajes y las herramientas y opciones disponibles que puedeutilizar.

    Idioma Herramientas y opciones para crear cdigo

    Node.js Consola de AWS Lambda Visual Studio, con el complemento del IDE (consulte AWS Lambda

    Support in Visual Studio) Su propio entorno de desarrollo Para obtener ms informacin, consulte Implementacin de cdigo

    y creacin de una funcin de Lambda (p. 16).

    Java Eclipse, con AWS Toolkit for Eclipse (consulte Uso de AWSLambda con AWS Toolkit for Eclipse)

    Su propio entorno de desarrollo Para obtener ms informacin, consulte Implementacin de cdigo

    y creacin de una funcin de Lambda (p. 16).

    C# Visual Studio, con el complemento del IDE (consulte AWS LambdaSupport in Visual Studio)

    .NET Core (consulte la gua de instalacin de .NET Core) Su propio entorno de desarrollo Para obtener ms informacin, consulte Implementacin de cdigo

    y creacin de una funcin de Lambda (p. 16).

    Python Consola de AWS Lambda Su propio entorno de desarrollo Para obtener ms informacin, consulte Implementacin de cdigo

    y creacin de una funcin de Lambda (p. 16).

    Go Su propio entorno de desarrollo Para obtener ms informacin, consulte Implementacin de cdigo

    y creacin de una funcin de Lambda (p. 16).

    Adems, independientemente del lenguaje que elija, existe un patrn para escribir el cdigo de unafuncin de Lambda. Por ejemplo, cmo escribir el mtodo del controlador de la funcin de Lambda (esdecir, el primer mtodo al que AWS Lambda llama cuando comienza a ejecutar el cdigo), cmo sepasan los eventos al controlador, las instrucciones que se pueden utilizar en el cdigo para generar logsen CloudWatch Logs, cmo interactuar con el tiempo de ejecucin de AWS Lambda y cmo obtenerinformacin, como por ejemplo, el tiempo que queda hasta que se agote el tiempo de espera y cmocontrolar las excepciones. La seccin Modelo de programacin (p. 18) proporciona informacin paracada uno de los lenguajes admitidos.

    Note

    Cuando se familiarice con AWS Lambda, consulte los Casos de uso (p. 185), que proporcionaninstrucciones paso a paso para ayudarle a explorar la experiencia integral.

    Implementacin de cdigo y creacin de una funcinde LambdaPara crear una funcin de Lambda, primero tiene que empaquetar el cdigo y las dependencias en unpaquete de implementacin. A continuacin, cargue el paquete de implementacin en AWS Lambda paracrear la funcin de Lambda.

    16

    https://aws.amazon.com/blogs/developer/aws-lambda-support-in-visual-studio/https://aws.amazon.com/blogs/developer/aws-lambda-support-in-visual-studio/https://docs.aws.amazon.com/AWSToolkitEclipse/latest/ug/lambda.htmlhttps://docs.aws.amazon.com/AWSToolkitEclipse/latest/ug/lambda.htmlhttps://aws.amazon.com/visualstudio/https://aws.amazon.com/visualstudio/https://www.microsoft.com/net/core

  • AWS Lambda Gua para desarrolladoresMonitorizacin y solucin de problemas

    Temas Creacin de un paquete de implementacin: organizacin del cdigo y las dependencias (p. 17) Carga de un paquete de implementacin: creacin de una funcin de Lambda (p. 17) Prueba de una funcin de Lambda (p. 17)

    Creacin de un paquete de implementacin: organizacin delcdigo y las dependenciasEn primer lugar, debe organizar el cdigo y las dependencias adecuadamente y crear un paquete deimplementacin. Las instrucciones para crear un paquete de implementacin dependen del lenguajeelegido para escribir el cdigo. Por ejemplo, puede utilizar complementos como Jenkins (para Node.js yPython) y Maven (para Java) para crear los paquetes de implementacin. Para obtener ms informacin,consulte Creacin de un paquete de implementacin (p. 80).

    Si crea funciones de Lambda mediante la consola, esta crea el paquete de implementacinautomticamente y, a continuacin, lo carga para crear la funcin de Lambda.

    Carga de un paquete de implementacin: creacin de unafuncin de LambdaAWS Lambda proporciona la operacin CreateFunction (p. 448), que se utiliza para crear una funcin deLambda. Puede utilizar la consola de AWS Lambda, la AWS CLI y los SDK de AWS para crear una funcinde Lambda. Internamente, todas estas interfaces llaman a la operacin CreateFunction.

    Adems de proporcionar el paquete de implementacin, puede proporcionar la informacin deconfiguracin al crear la funcin de Lambda, incluidos los requisitos informticos de la funcin de Lambda,el nombre del mtodo del controlador de la funcin de Lambda y el tiempo de ejecucin, que dependedel lenguaje elegido para escribir el cdigo. Para obtener ms informacin, consulte Funciones deLambda (p. 15).

    Prueba de una funcin de LambdaSi la funcin de Lambda est diseada para procesar eventos de un tipo determinado, puede utilizar losdatos del evento de muestra para probar la funcin de Lambda utilizando uno de los siguientes mtodos:

    Probar la funcin de Lambda en la consola. Probar la funcin de Lambda mediante la AWS CLI. Puede utilizar el mtodo Invoke para invocar la

    funcin de Lambda y pasarle los datos del evento de muestra. Pruebe la funcin de Lambda localmente mediante Prueba local de aplicaciones sin servidor mediante

    SAM CLI (en versin beta pblica) (p. 103).

    La consola proporciona los datos del evento de muestra. Los mismos datos tambin estn disponibles enel tema Eventos de muestra publicados por los orgenes de eventos (p. 174), y puede utilizarlos en laAWS CLI para invocar la funcin de Lambda.

    Monitorizacin y solucin de problemasCuando la funcin de Lambda est en produccin, AWS Lambda la monitoriza automticamente en sunombre, e informa sobre las mtricas en Amazon CloudWatch. Para obtener ms informacin, consulteAcceso a las mtricas de Amazon CloudWatch para AWS Lambda (p. 346).

    Para ayudarle a solucionar problemas relacionados con los errores de una funcin, Lambda registra todaslas solicitudes gestionadas por la funcin, y almacena automticamente los logs generados por el cdigo

    17

  • AWS Lambda Gua para desarrolladoresEjemplos de aplicaciones basadas en AWS Lambda

    en Amazon CloudWatch Logs. Para obtener ms informacin, consulte Acceso a los logs de AmazonCloudWatch para AWS Lambda (p. 348).

    Ejemplos de aplicaciones basadas en AWS LambdaEsta gua proporciona varios ejemplos con instrucciones paso a paso. Si es la primera vez que utiliza AWSLambda, le recomendamos que pruebe los siguientes ejercicios:

    Introduccin (p. 3): el ejercicio de introduccin proporciona una experiencia basada en la consola. Seproporciona cdigo de muestra para sus motores de tiempo de ejecucin preferidos. Tambin puedeprogramar en la consola mediante el Editor de cdigo, cargar el cdigo en AWS Lambda y probarlomediante los datos de evento de ejemplo proporcionados en la consola.

    Casos de uso (p. 185): si no sabe escribir el cdigo mediante la consola, debe crear sus propios

    paquetes de implementacin y utilizar la AWS CLI (o los SDK) para crear la funcin de Lambda. Paraobtener ms informacin, consulte Creacin del cdigo de la funcin de Lambda (p. 15). La mayorade los ejemplos de la seccin Casos de uso utilizan la AWS CLI. Si es la primera vez que utiliza AWSLambda, le recomendamos que pruebe uno de estos ejercicios.

    Temas relacionadosLos siguientes temas aportan informacin adicional.

    Modelo de programacin (p. 18)

    Creacin de un paquete de implementacin (p. 80)

    Control de versiones y alias de las funciones de AWS Lambda (p. 307)

    Uso de Amazon CloudWatch (p. 344)

    Modelo de programacinPuede escribir cdigo para la funcin de Lambda en cualquiera de los lenguajes que admite AWS Lambda.Independientemente del lenguaje que elija, hay un patrn comn para escribir cdigo para una funcin deLambda que incluye los siguientes conceptos clave:

    Controlador: el controlador es la funcin que AWS Lambda llama para iniciar la ejecucin de la funcinde Lambda. El controlador se identifica al crear la funcin de Lambda. Cuando se invoca una funcinde Lambda, AWS Lambda comienza a ejecutar el cdigo llamando a la funcin de controlador. AWSLambda pasa los datos de eventos a este controlador como primer parmetro. El controlador debeprocesar los datos de eventos entrantes y puede invocar otras funciones o mtodos del cdigo.

    El objeto context y cmo interacta con Lambda durante el tiempo de ejecucin: AWS Lambda tambin

    pasa un objeto de contexto a la funcin de controlador como segundo parmetro. A travs de esteobjeto context, el cdigo puede interactuar con AWS Lambda. Por ejemplo, el cdigo puede encontrar eltiempo que falta para que AWS Lambda finalice la ejecucin de la funcin de Lambda.

    Adems, para lenguajes como Node.js, hay una plataforma asncrona que utiliza devolucionesde llamada. AWS Lambda proporciona mtodos adicionales en este objeto context. Puede utilizarestos mtodos del objeto context para indicar a AWS Lambda que termine la funcin de Lambda y,opcionalmente, devuelva valores al intermediario.

    18

    https://docs.aws.amazon.com/lambda/latest/dg/code-editor.html

  • AWS Lambda Gua para desarrolladoresModelo de programacin

    Registro: la funcin de Lambda puede contener instrucciones de registro. AWS Lambda escribe estos

    logs en CloudWatch Logs. Las instrucciones de lenguaje especficas generan entradas de log quedependen del lenguaje que se utilice para crear el cdigo de la funcin de Lambda.

    Excepciones: la funcin de Lambda debe comunicar el resultado de la ejecucin de la funcin a

    AWS Lambda. Segn el lenguaje que se utilice para crear el cdigo de la funcin de Lambda, existendiferentes maneras de finalizar una solicitud correctamente o de notificar a AWS Lambda que se haproducido un error durante la ejecucin. Si se invoca la funcin de forma sncrona, AWS Lambda reenvael resultado de vuelta al cliente.

    Note

    El cdigo de la funcin de Lambda debe escribirse sin estado y no debe tener afinidad conla infraestructura informtica subyacente. El cdigo debe prever que el acceso al sistema dearchivos local, los procesos secundarios y los artefactos similares estarn limitados a la duracinde la solicitud. El estado persistente debe almacenarse en Amazon S3, Amazon DynamoDB uotro servicio de almacenamiento en la nube.La obligatoriedad de utilizar funciones sin estadopermite que AWS Lambda lance tantas copias de la funcin como sean necesarias para escalarde acuerdo con la velocidad de los eventos y las solicitudes entrantes. Es posible que estasfunciones no siempre se ejecuten en la misma instancia informtica con cada solicitud. Unainstancia determinada de la funcin de Lambda puede ser utilizada ms de una vez por AWSLambda. Para obtener ms informacin, consulte Prcticas recomendadas para trabajar confunciones de AWS Lambda (p. 420)

    Los siguientes temas especficos del lenguaje proporcionan informacin detallada:

    Modelo de programacin (Node.js) (p. 19) Modelo de programacin para crear funciones de Lambda en Java (p. 30) Modelo de programacin para crear funciones de Lambda en C# (p. 70) Modelo de programacin para crear funciones de Lambda en Python (p. 52) Modelo de programacin para crear funciones de Lambda en Go (p. 60)

    Modelo de programacin (Node.js)Actualmente, AWS Lambda admite los siguientes tiempos de ejecucin de Node.js:

    Tiempo de ejecucin v8.10 de Node.js (tiempo de ejecucin = nodejs8.10) Tiempo de ejecucin v6.10 de Node.js (tiempo de ejecucin = nodejs6.10) Tiempo de ejecucin v4.3 de Node.js (tiempo de ejecucin = nodejs4.3)* Tiempo de ejecucin v0.10.42 de Node.js (tiempo de ejecucin = nodejs)*

    Important

    *Actualmente, Node v0.10.42 y Node v4.3estn marcados como obsoletos. Para obtener msinformacin, consulte Poltica de soporte del tiempo de ejecucin (p. 424). Debe migrar lasfunciones existentes a las versiones del entorno de Node.js ms recientes disponibles en AWSLambda (nodejs.8.10o nodejs6.10) tan pronto como sea posible.

    Al crear una funcin de Lambda, puede especificar el tiempo de ejecucin que desea utilizar. Para obtenerms informacin, consulte el parmetro runtime de CreateFunction (p. 448).

    19

  • AWS Lambda Gua para desarrolladoresModelo de programacin

    En las secciones siguientes se explica cmo se aplican los conceptos fundamentales y los patrones deprogramacin comunes al crear cdigo de funciones de Lambda en Node.js. El modelo de programacindescrito en las siguientes secciones se aplica a ambas versiones de tiempo de ejecucin admitidas,excepto donde se indique.

    Temas Controlador de la funcin de Lambda (Node.js) (p. 20) El objeto context (Node.js) (p. 22) Registro (Node.js) (p. 25) Errores de funciones (Node.js) (p. 27)

    Controlador de la funcin de Lambda (Node.js)AWS Lambda invoca su funcin Lambda a travs de un objeto handler. Un handler representa elnombre de la funcin Lambda, y sirve de punto de entrada que AWS Lambda utiliza para ejecutar el cdigode funcin. Por ejemplo:

    exports.myHandler = function(event, context) { ...}

    myHandler: este es el nombre de la funcin que invoca AWS Lambda. Suponga que guarda el cdigocomo helloworld.js. A continuacin, myHandler es la funcin que contiene el cdigo de la funcinLambda y helloworld es el nombre del archivo que representa el paquete de implementacin. Paraobtener ms informacin, consulte Creacin de un paquete de implementacin (Node.js) (p. 81).

    AWS Lambda admite dos tipos de invocacin: RequestResponse o synchronous execution: AWS Lambda devuelve el resultado de la llamada

    a la funcin al cliente que invoca la funcin Lambda. Si el cdigo de controlador de la funcin Lambdano especifica un valor de retorno, AWS Lambda devolver null automticamente para dicho valor.

    Evento o ejecucin asncrona: AWS Lambda descartar de los resultados de la llamada a la funcin.Note

    Si descubre que su funcin Lambda no procesa el evento con invocacin asncrona, puedeinvestigar el error utilizando Colas de mensajes fallidos (p. 419).

    Los orgenes de eventos pueden ser un tipo de servicio de AWS compatible o aplicacionespersonalizadas que invoca la funcin Lambda. Para ver ejemplos, consulte Eventos de muestrapublicados por los orgenes de eventos (p. 174)

    context: AWS Lambda usa este parmetro para proporcionar detalles de la ejecucin de la funcinLambda. Para obtener ms informacin, consulte El objeto context (Node.js) (p. 22).

    Uso del parmetro callback

    Los tiempos de ejecucin v6.10y v8.10de Node.js admiten el parmetro opcional callback. Puedeutilizarlo para devolver informacin de forma explcita al intermediario. La sintaxis general es:

    callback(Error error, Object result);

    Donde:

    error: es un parmetro opcional que puede utilizar para proporcionar los resultados de la ejecucin conerrores de la funcin de Lambda. Cuando una funcin de Lambda se ejecuta satisfactoriamente, puedepasar null como primer parmetro.

    20

    https://docs.aws.amazon.com/lambda/latest/dg/programming-model-v2.htmlhttps://docs.aws.amazon.com/lambda/latest/dg/programming-model-v2.html

  • AWS Lambda Gua para desarrolladoresModelo de programacin

    result: es un parmetro opcional que puede utilizar para proporcionar el resultado de una ejecucinsatisfactoria de la funcin. El resultado proporcionado debe ser compatible con JSON.stringify. Si seproporciona un error, este parmetro se ignora.

    Si no utiliza callback en el cdigo, AWS Lambda lo llamar implcitamente y el valor de retorno sernull.

    Cuando se llama a la devolucin de llamada (de forma explcita o implcita), AWS Lambda contina lainvocacin de la funcin de Lambda hasta que el bucle de eventos de est vaco.

    A continuacin se muestran devoluciones de llamada de ejemplo:

    callback(); // Indicates success but no information returned to the caller.callback(null); // Indicates success but no information returned to the caller.callback(null, "success"); // Indicates success with information returned to the caller.callback(error); // Indicates error with error information returned to the caller.

    AWS Lambda trata cualquier valor distinto de null para el parmetro error como una excepcingestionada.

    Tenga en cuenta lo siguiente:

    Independientemente del tipo de invocacin especificado en el momento de la invocacin de la funcin deLambda (consulte Invoke (p. 486)), el mtodo de devolucin de llamada registra automticamente larepresentacin de cadena de valores de error distintos de null en el flujo de Amazon CloudWatch Logsasociado a la funcin de Lambda.

    Si la funcin de Lambda se invoc de forma sncrona (utilizando el tipo de invocacinRequestResponse), la devolucin de llamada devolver un cuerpo de la respuesta como se indica acontinuacin: Si error es null, el cuerpo de la respuesta se establee en la representacin de cadena de result. Si error es distinto de null, el cuerpo de la respuesta contendr el valor de error.

    Note

    Cuando se llame a callback(error, null) (y callback(error)), Lambda registrar losprimeros 256KB del objeto de error. Para un objeto de error ms grande, AWS Lambda trunca ellog y muestra el texto Truncated by Lambda junto al objeto de error.

    Si utiliza el tiempo de ejecucin versin 8.10, puede incluir la palabra clave async:

    exports.myHandler = async function(event, context) { ... // return information to the caller. }

    Ejemplo

    Observe el siguiente cdigo de ejemplo de Node.js.

    exports.myHandler = function(event, context, callback) { console.log("value1 = " + event.key1); console.log("value2 = " + event.key2); callback(null, "some success message"); // or

    21

  • AWS Lambda Gua para desarrolladoresModelo de programacin

    // callback("some error type"); }

    Este ejemplo tiene la funcin myHandler.

    En la funcin, las instrucciones console.log() registran algunos de los datos de eventos entrantes enCloudWatch Logs. Cuando se llama al parmetro callback, la funcin Lambda solo finaliza despus deque el bucle de eventos pasado est vaco.

    Si desea utilizar la caracterstica async que proporciona el tiempo de ejecucin v8.10, tenga en cuenta lasiguiente muestra de cdigo:

    exports.myHandler = async function(event, context) { console.log("value1 = " + event.key1); console.log("value2 = " + event.key2); return "some success message; // or // throw new Error(some error type); }

    Para cargar y probar este cdigo como una funcin de Lambda (consola)

    1. En la consola, cree una funcin de Lambda utilizando la siguiente informacin:

    Utilice el proyecto hello-world. El ejemplo usa nodejs6.10 como tiempo de ejecucin, pero tambin puede seleccionar nodejs8.10.

    El cdigo de muestra proporcionado funciona con cualquier versin.

    Para obtener instrucciones acerca de cmo crear una funcin de Lambda utilizando la consola,consulte Creacin de una funcin de Lambda sencilla (p. 9).

    2. Sustituya el cdigo de la plantilla por el cdigo proporcionado en esta seccin y cree la funcin.3. Pruebe la funcin de Lambda utilizando la plantilla Sample event template denominada Hello

    Worldproporcionada en la consola de Lambda.

    El objeto context (Node.js)

    Mientras se est ejecutando una funcin de Lambda, es posible interactuar con AWS Lambda para obtenerinformacin til sobre el tiempo de ejecucin, como por ejemplo:

    Cantidad de tiempo restante para que AWS Lambda termine la funcin de Lambda (el tiempo de esperaes una de las propiedades de configuracin de las funciones de Lambda).

    El grupo de logs y el flujo de logs de CloudWatch asociados a la funcin de Lambda que se estejecutando.

    El ID de la solicitud de AWS devuelto al cliente que invoc la funcin de Lambda. Puede utilizar el ID dela solicitud para cualquier consulta de seguimiento con AWS Support.

    Si se invoca la funcin de Lambda a travs de AWS Mobile SDK, se puede obtener ms informacinsobre la aplicacin mvil llamando a la funcin de Lambda.

    AWS Lambda proporciona esta informacin a travs del objeto context, que el servicio pasa comosegundo parmetro al controlador de la funcin de Lambda. Para obtener ms informacin, consulteControlador de la funcin de Lambda (Node.js) (p. 20).

    Las siguientes secciones proporcionan una funcin de Lambda de ejemplo que utiliza el objeto context y,a continuacin, enumera todos los mtodos y atributos disponibles.

    22

  • AWS Lambda Gua para desarrolladoresModelo de programacin

    Ejemplo

    Observe el siguiente ejemplo de Node.js. El controlador recibe informacin del tiempo de ejecucin atravs un parmetro decontext.

    console.log('Loading function');

    exports.handler = function(event, context, callback) { //console.log('Received event:', JSON.stringify(event, null, 2)); console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); console.log('remaining time =', context.getRemainingTimeInMillis()); console.log('functionName =', context.functionName); console.log('AWSrequestID =', context.awsRequestId); console.log('logGroupName =', context.log_group_name); console.log('logStreamName =', context.log_stream_name); console.log('clientContext =', context.clientContext); if (typeof context.identity !== 'undefined') { console.log('Cognito identity ID =', context.identity.cognitoIdentityId); } callback(null, event.key1); // Echo back the first key value // or // callback("some error type"); };

    El cdigo del controlador de este ejemplo registra parte de la informacin del tiempo de ejecucin de lafuncin de Lambda en CloudWatch. Si invoca la funcin utilizando la consola de Lambda, esta mostrarlos logs en la seccin Log output. Puede crear una funcin de Lambda utilizando este cdigo y probarlamediante la consola.

    Para probar este cdigo en la consola de AWS Lambda

    1. En la consola, cree una funcin de Lambda mediante el proyecto hello-world. En runtime, elijanodejs6.10. Para obtener instrucciones al respecto, consulte Creacin de una funcin de Lambdasencilla (p. 9).

    2. Pruebe la funcin. Tambin puede actualizar el cdigo para obtener ms informacin de contexto.

    Mtodos del objeto context (Node.js)

    El objeto context proporciona los siguientes mtodos.

    context.getRemainingTimeInMillis()

    Devuelve el tiempo aproximado que falta para terminar la ejecucin (antes de que se agote el tiempo deespera) de la funcin de Lambda que se est ejecutando.


Top Related