Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Aws Lambda Es PDF
Aws Lambda Es PDF
#aws-
lambda
Tabla de contenido
Acerca de 1
Observaciones 2
Lambda está mejor diseñado para el procesamiento de datos sin servidor en tiempo real, com 2
Examples 2
Instalación o configuración 2
Examples 11
Introducción 12
Examples 12
Hoja de trucos 12
Función de muestra 12
Corriendo S3 12
Examples 14
Sintaxis 26
Parámetros 26
Observaciones 26
Nombres de archivos 26
Clave de registros 26
Más ejemplos y pruebas 26
Examples 27
Operación S3 PUT 27
Introducción 28
Observaciones 28
Examples 28
Introducción 35
Observaciones 35
Examples 35
Sin servidor 35
Examples 43
Creditos 45
Acerca de
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: aws-lambda
It is an unofficial and free aws-lambda ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official aws-lambda.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@zzzprojects.com
https://riptutorial.com/es/home 1
Capítulo 1: Empezando con aws-lambda
Observaciones
AWS Lambda es una configuración sin servidor para ejecutar funciones en la nube. Aprovecha las
tecnologías existentes de los servicios web de Amazon para escalar y ejecutar infinitamente solo
cuando sea necesario en su propio entorno aislado. Con Lambda, puede cargar su código,
configurarlo para que se ejecute en función de una variedad de desencadenantes y luego retirar
automáticamente el proceso cuando se complete. Opera en un modelo de pago por uso y es
extremadamente rentable y fácil de escalar.
AWS Lambda admite el código escrito en Node.js (JavaScript), Python, Java (compatible
con Java 8) y C # (.NET Core). Su código puede incluir bibliotecas existentes, incluso las
nativas.
• Aplicaciones móviles
• Otros servicios de AWS (incluida la implementación REST con Amazon API Gateway)
Examples
Instalación o configuración
https://riptutorial.com/es/home 2
1. Inicie sesión en su consola de AWS y haga clic en Lambda en la pestaña Servicios .
2. En Funciones , podrás crear una función Lambda usando el mismo botón etiquetado.
3. Aparecerá una pantalla donde puede seleccionar un plano. Estos son simplemente puntos
de partida para las funciones Lambda existentes para comenzar rápidamente con Lambda.
https://riptutorial.com/es/home 3
4. En la siguiente pantalla puede configurar cualquier desencadenante que desee utilizar para
"desactivar" esta función Lambda. Puede elegir entre ningún desencadenante (a través de
la configuración manual más tarde, dependiendo de su tarea), API Gateway (para crear un
cliente REST sin servidor), Alexa Skills o una plétora de otros para activar la función que
creará.
https://riptutorial.com/es/home 4
5. Terminará la configuración en la siguiente pantalla al configurar el Nombre , la Descripción
, elegir un Tiempo de ejecución , optar por editar la función en línea, cargar un archivo .zip
o cargar un archivo desde Amazon S3, elegir un Rol (útil para permisos basados en
permisos). interacción entre los servicios de AWS), establezca la memoria y los límites, y
prepare su aplicación para su uso en vivo.
https://riptutorial.com/es/home 5
https://riptutorial.com/es/home 6
6. Por último, revisarás tu función y la crearás. Dado que Lambda utiliza el modelo de pago por
uso, no se incurre en cargadores hasta que empiece a usar su función recién creada.
https://riptutorial.com/es/home 7
Java AWS-Lambda S3 activado
Se puede adjuntar una función AWS-Lambda a un determinado evento de cubeta. Cada vez que
se crea o elimina un archivo / carpeta, un evento puede desencadenar la ejecución de la función
lambda.
Este es un proyecto lambda de una clase para imprimir el nombre de un archivo cargado. Para
maven necesitamos agregar esas dependencias:
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
https://riptutorial.com/es/home 8
<type>jar</type>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.3.0</version>
<type>jar</type>
</dependency>
</dependencies>
package com;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.event.S3EventNotification;
Además, omita "Configurar activadores" porque lo configuraremos desde una ubicación diferente.
En la página siguiente, ingrese un nombre para su primera función lambda, luego una pequeña
descripción y elija Java como tiempo de ejecución.
Para el "Tipo de entrada de código", elija "Cargar desde un archivo .ZIP" y luego seleccione su
archivo .zip en la siguiente ubicación para cargarlo.
La parte difícil en esta página es el campo Handler. En el campo del controlador, debe especificar
la ubicación de la clase en la que implementa el RequestHandler. Esta clase es el punto de
entrada para la lambda y su función Lambda no funcionará si no se especifica correctamente.
Para nuestro manejador de casos es "com.HelloWorld"
https://riptutorial.com/es/home 9
Elegiremos "ObjectCreated (All)" Tenga en cuenta que la función lambda y el depósito
deben estar en la misma región de Amazon
• Para "Enviar a", verifique la función Lambda y elija su función lambda de la lista.
Ahora, subiremos un archivo al contenedor que tiene el desencadenador lambda. Para ver los
resultados y registros de lambda, vaya a "CloudWatch", luego elija "Registros", luego elija su
función Lambda. Es posible que veas muchas entradas en "Log Streams", elige la última y ábrela.
Debería poder ver la salida de la ejecución lambda allí.
https://riptutorial.com/es/home 10
Capítulo 2: AWS Lambda activado por S3
Examples
Echo Input Args en Java
Puede obtener fácilmente esta información mediante la extracción de la entrada en la función del
controlador. Por ejemplo, en Java:
return output;
}
https://riptutorial.com/es/home 11
Capítulo 3: AWS Lambda con S3
Introducción
Los desarrolladores de Lambda manejarán los problemas que requieren el uso de otros recursos
de AWS. Este tema se centra en S3 (Servicio de almacenamiento simple), que normalmente se
utilizará para almacenar archivos estáticos y otras configuraciones. Esta documentación
considerará el uso de AWS-SDK en lambda, el acceso a los archivos en S3 desde Lambda y la
activación de las funciones Lambda cuando se activa un evento S3
Examples
Hoja de trucos
Función de muestra
Corriendo S3
const s3 = nuevo AWS.S3 ();
https://riptutorial.com/es/home 12
module.exports.myFunction = (event, context, callback) => {
try {
let client = redis.createClient(redis_options);
context.callbackWaitsForEmptyEventLoop = false;
client.on('connect', () => {
console.log('Connected:', client.connected);
});
client.on('end', () => {
console.log('Connection closed.');
});
client.on('ready', function () {
console.log('Connection ready.');
client.keys('*', (err, keys) => {
//always quit the redis client when no longer needed
//else the connection will be used up
client.quit();
const response = {
statusCode: 200,
body: keys,
};
https://riptutorial.com/es/home 13
Capítulo 4: AWS Lambda usando Python
Examples
¿Por qué AWS Lambda?
Esta es una de las funciones lambda más simples. Es equivalente al programa Hello World.
Para crear su primer programa siga los pasos mencionados a continuación.
https://riptutorial.com/es/home 14
4. Omitir seleccionar la sección de planos
5. En el gatillo de configuración, haga clic en el rectángulo punteado.
https://riptutorial.com/es/home 15
https://riptutorial.com/es/home 16
6. Seleccione API Gateway
7. Rellene los datos requeridos como en la imagen.
https://riptutorial.com/es/home 17
https://riptutorial.com/es/home 18
Nombre de API es el nombre de tu API que vas a construir. El Patrón de recursos es la
ruta URL que puede invocar a su función Lambda. Seleccione el método http requerido. En
nuestro ejemplo elegimos GET. En AWS, la puesta en escena se puede realizar de
diferentes formas, como prod, dev ... Le ayudará a diferenciar las funciones de prod y dev.
Para fines de demostración, permite elegir la seguridad como abierta (no se recomienda en
producción). Haga clic en Siguiente
Nombre de API es el nombre de tu API que vas a construir. El Patrón de recursos es la
ruta URL que puede invocar a su función Lambda. Seleccione el método http requerido. En
nuestro ejemplo elegimos GET. En AWS, la puesta en escena se puede realizar de
diferentes formas, como prod, dev ... Le ayudará a diferenciar las funciones de prod y dev.
Para fines de demostración, permite elegir la seguridad como abierta (no se recomienda en
producción). Haga clic en Siguiente
8. Configure la función de la siguiente manera
https://riptutorial.com/es/home 19
https://riptutorial.com/es/home 20
Proporcione el nombre de la función, la descripción de su función y el entorno de ejecución.
Estamos eligiendo Python como entorno de ejecución.
9. Modificar el código.
Aquí estamos imprimiendo el evento aws lambda en cloudtrail, que es gratuito. También
está devolviendo una cadena.
10. Proporcionar controlador de función Lambda y función
https://riptutorial.com/es/home 21
https://riptutorial.com/es/home 22
Asegúrese de que el nombre del controlador debe comenzar con lambda_function. También
cree un nuevo rol para ejecutar la función lambda. Seleccione la cantidad de memoria
principal requerida para ejecutar su función. Seleccione el tiempo de espera predeterminado
y haga clic en siguiente
11. Haga clic en crear función
12. Ahora su función está lista para ejecutarse. Haga clic en el enlace proporcionado por el aws
https://riptutorial.com/es/home 23
https://riptutorial.com/es/home 24
Cuando haga clic en el enlace, su función lambda se ejecutará en segundo plano y obtendrá
una salida en el navegador.
https://riptutorial.com/es/home 25
Capítulo 5: aws-lambda activado por S3
Sintaxis
• Deserializado objeto basado en JSON
• La tecla "Registros" tiene uno o más eventos reales
• Cada objeto de evento secundario contiene toda la información que necesita para
determinar qué ha cambiado
Parámetros
Parámetro Detalles
Records -> [] -> s3 -> bucket -> name El nombre del cubo S3.
Records -> [] -> s3 -> object -> key La ruta y el nombre del archivo.
Observaciones
Nombres de archivos
A diferencia de la mayoría de las rutas de archivo, el nombre de la clave S3 (esquema JSON:
$.Records[0].s3.object.key ) no incluye una barra diagonal $.Records[0].s3.object.key . Por lo
tanto, si tiene un archivo en la ruta s3://mybucket/path/file.txt , la clave será path/file.txt
Al menos en Python, el valor del campo clave es la URL UTF-8 codificada. Esto se nota cuando el
nombre de archivo contiene espacios o caracteres que no son ASCII. El campo debe ser una URL
decodificada, luego UTF-8 decodificada - Ver Obtener nombre de archivo no ASCII del evento de
notificación S3 en Lambda
Clave de registros
Es posible tener múltiples acciones iguales (o diferentes) dentro de la tecla "Records" del evento;
sin embargo, en la práctica, generalmente verá un evento por invocación de su función Lambda.
Puede modificar y enviar eventos de prueba desde la consola de AWS Lambda para ver cómo
responde su función.
https://riptutorial.com/es/home 26
Examples
Operación S3 PUT
{
"Records": [
{
"eventVersion": "2.0",
"eventTime": "1970-01-01T00:00:00.000Z",
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"s3": {
"configurationId": "testConfigRule",
"object": {
"eTag": "0123456789abcdef0123456789abcdef",
"sequencer": "0A1B2C3D4E5F678901",
"key": "HappyFace.jpg",
"size": 1024
},
"bucket": {
"arn": "arn:aws:s3:::mybucket",
"name": "sourcebucket",
"ownerIdentity": {
"principalId": "EXAMPLE"
}
},
"s3SchemaVersion": "1.0"
},
"responseElements": {
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
"x-amz-request-id": "EXAMPLE123456789"
},
"awsRegion": "us-east-1",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"eventSource": "aws:s3"
}
]
}
https://riptutorial.com/es/home 27
Capítulo 6: Cómo desarrollar aws-lambda (C
#) en una máquina local
Introducción
Como parte del movimiento Serverless , AWS anunció recientemente la compatibilidad con C #
para las funciones de AWS Lambda. En este artículo, le mostraré cómo desarrollar, instalar y
llamar a una simple función Lambda C # AWS utilizando Visual Studio 2015.
Antes de comenzar este ejemplo, primero vaya a la sección de Comentarios de este documento y
asegúrese de tener todos los componentes necesarios instalados.
Observaciones
Cada uno de estos componentes se ha desarrollado y publicado activamente, por lo tanto, revise
los enlaces y las versiones y actualice este documento cuando sea necesario.
Cada uno de estos puede tardar un tiempo en instalarse , así que tenga paciencia, haga uno por
vez para minimizar los errores.
Por último, es triste reiniciar Windows antes de iniciar el desarrollo, pero siempre es una buena
idea después de realizar importantes instalaciones de herramientas de desarrollo en un cuadro de
Windows.
Examples
Paso 1. Crea una nueva solución en Visual Studio.
https://riptutorial.com/es/home 28
3. A continuación se mostrará la pantalla Seleccionar plano . Seleccione Función vacía y
haga clic en el botón Finalizar:
4. Vaya a Herramientas -> NuGet Package Manager -> Package Manager Console.
5. En la ventana de la consola, escriba Install-Package Amazon.Lambda.Core
6. Haga clic con el botón derecho en su proyecto en el explorador de soluciones y seleccione
https://riptutorial.com/es/home 29
Restaurar paquetes. Este es el paso final de preparación antes de comenzar a escribir el
código.
/// <summary>
/// A simple function that takes a birth date and returns Age in years
/// </summary>
/// <param name="input"></param>
/// <returns>Age is years</returns>
///
[LambdaSerializer(typeof(SimpleSerializer))]
public string FunctionHandler(Dictionary<string, int> input)
{
var defaultMessage = "Age could not be determined.";
return defaultMessage;
}
}
using System.Collections.Generic;
using Amazon.Lambda.Core;
https://riptutorial.com/es/home 30
2. Agregue un archivo al proyecto llamado SimpleSerializer.cs
3. Coloque el siguiente código en ese archivo:
using System;
using System.IO;
using Amazon.Lambda.Core;
using Newtonsoft.Json;
namespace AWSLambdaFunctionAgeInYears
{
public class SimpleSerializer : ILambdaSerializer
{
public T Deserialize<T>(Stream requestStream)
{
string text;
using (var reader = new StreamReader(requestStream))
text = reader.ReadToEnd();
try
{
return JsonConvert.DeserializeObject<T>(text);
}
catch (Exception ex)
{
if (typeof(T) == typeof(System.String))
return (T)Convert.ChangeType(text, typeof(T));
throw ex;
}
throw ex;
}
}
}
}
https://riptutorial.com/es/home 31
var upperCase = function.FunctionHandler(null);
https://riptutorial.com/es/home 32
Paso 4. Invoque su función AWS Lambda desde Visual Studio
1. Después del paso 3 anterior, Visual Studio abrirá la ventana View Function con la función
cargada.
2. En la parte inferior izquierda de esta pantalla, ingrese el siguiente json en el cuadro de
entrada de muestra :
{
"month": "10",
"day": "28",
"year": "1979"
}
https://riptutorial.com/es/home 33
3. Último paso: haz clic en el botón verde Invocar . La función se ejecutará en AWS y la
respuesta se mostrará en la ventana de respuesta de la parte inferior derecha.
https://riptutorial.com/es/home 34
Capítulo 7: Framework Serverless
Introducción
El marco de aplicación de código abierto para crear fácilmente arquitecturas sin servidor en AWS
Lambda y más. Esta sección incluye, cómo configurar el marco sin servidor para el desarrollo de
aplicaciones con ejemplos relevantes.
Observaciones
"Sin servidor" es un marco: https://serverless.com/
Examples
Sin servidor
Ejemplo de un handler.js
'use strict';
// You can add more handlers here, and reference them in serverless.yml
serverless deploy
https://riptutorial.com/es/home 35
npm install serverless -g
1. serverless.yml
2. handler.js
3. evento.json
service: serverless-crud
provider:
name: aws
runtime: nodejs4.3
region: us-east-1
stage: dev
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource: "arn:aws:dynamodb:us-east-1:*:*"
functions:
create:
handler: handler.create
events:
- http:
path: todos
method: post
cors: true
readAll:
handler: handler.readAll
events:
- http:
path: todos
method: get
cors: true
readOne:
handler: handler.readOne
events:
https://riptutorial.com/es/home 36
- http:
path: todos/{id}
method: get
cors: true
update:
handler: handler.update
events:
- http:
path: todos/{id}
method: put
cors: true
delete:
handler: handler.delete
events:
- http:
path: todos/{id}
method: delete
cors: true
resources:
Resources:
TodosDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
-
AttributeName: id
AttributeType: S
KeySchema:
-
AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: 'todos'
Luego, debe definir la función lambda (por ejemplo, node.js) en el archivo handler.js para definirla.
'use strict';
https://riptutorial.com/es/home 37
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(result),
};
context.succeed(response);
});
};
context.succeed(response);
});
};
context.succeed(response);
});
};
context.succeed(response);
});
};
https://riptutorial.com/es/home 38
body: JSON.stringify(result),
};
context.succeed(response);
});
};
Luego tienes que crear nuevos archivos para definir tus funciones CRUD
Crear estos archivos
1. todos-create.js
2. todos-read-all.js
3. todos-read-one.js
4. todos-update.js
5. todos-delete.js
para todos-create.js
'use strict';
data.id = uuid.v1();
data.updatedAt = new Date().getTime();
const params = {
TableName: 'todos',
Item: data
};
Para todos-read-all.js
'use strict';
https://riptutorial.com/es/home 39
TableName: 'todos',
};
'use strict';
Para todos-update.js
'use strict';
data.id = event.pathParameters.id;
data.updatedAt = new Date().getTime();
const params = {
TableName : 'todos',
Item: data
};
https://riptutorial.com/es/home 40
Para todos-delete.js
'use strict';
Despliegue
Ahora puedes desplegar estos proyectos.
cd myService verifica que está en el directorio del proyecto y luego puede implementar su código
serverless deploy
curl https://XXXX.execute-api.region.amazonaws.com/dev/todos
curl https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id>
https://riptutorial.com/es/home 41
curl -X PUT https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id> --data '{ "body" :
"Understand Serverless" }'
https://riptutorial.com/es/home 42
Capítulo 8: kit de habilidades de alexa
Examples
Crear el kit de habilidades de Alexa utilizando Blueprint
Seleccione el entorno Runtime pero blueprint (código de muestra) solo para node.js y python
Hay dos ejemplos de configuraciones para el kit de habilidades alexa. Puedes filtrar esas cosas.
Por selección uno de estos blue print. Puede ver la ventana Configurar desencadenadores que
puede seguir rellenando el campo requerido.
https://riptutorial.com/es/home 43
Ahora puedes crear la función.
https://riptutorial.com/es/home 44
Creditos
S.
Capítulos Contributors
No
Empezando con
1 Ahmed Abouhegaza, alatar, Community
aws-lambda
AWS Lambda
2 Doug Schwartz
activado por S3
AWS Lambda
4 Nithin K Anil
usando Python
aws-lambda activado
5 Alastair McCormack, Marshall Anschutz
por S3
Cómo desarrollar
6 aws-lambda (C #) en Taterhead
una máquina local
kit de habilidades de
8 Niroshan Ranapathi
alexa
https://riptutorial.com/es/home 45