Saltar a contenido

Amazon AWS - Lambda

Nada puede ser más sencillo que interactuar con las funciones Lambda que con el complemento BotCity para AWS Lambda.

Administra invocaciones síncronas y asíncronas de funciones lambda.

Instalación

pip install botcity-aws-lambda-plugin

Importación del complemento

Después de instalar este paquete, el siguiente paso es importar el paquete en tu código y comenzar a usar las funciones.

from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

Configuración de la conexión

Note

Hay dos formas diferentes de autenticación.

1. Creando la carpeta .aws en el directorio principal, debes crear dos archivos.

# ~/.aws/config
[default]
region=<region_code>
# ~/.aws/credentials
[default]
aws_access_key_id=<your_aws_access_key_id>
aws_secret_access_key=<your_aws_secret_access_key>

2. Pasando las credenciales en el constructor de la clase.

# Using the `.aws` folder
lambda_funtion = BotAWSLambdaPlugin()

# Alternative using the credentials as constructor arguments
lambda_funtion = BotAWSLambdaPlugin(
    use_credentials_file=False,
    access_key_id='<your_aws_access_key_id>',
    secret_access_key='<your_aws_secret_access_key>',
    region_name='<region_code>'
)

Operaciones de Lambda

Listar todas las funciones

from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

aws = BotAWSLambdaPlugin()
print(aws.list_functions())

Obtener información de la función

Info

El parámetro nombre de la función puede ser solo el nombre o el nombre con alias.

mi-funcion (solo nombre), mi-funcion:v1 (con alias).

from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

aws = BotAWSLambdaPlugin()
print(aws.get_function(function_name='<lambda_name>'))

Invocación de Lambda

Invocación síncrona

Valor del parámetro nombre de la función

El parámetro nombre de la función puede ser solo el nombre o el nombre con alias.

mi-funcion (solo nombre), mi-funcion:v1 (con alias).

InvocationType

Puedes usar el parámetro InvocationType='Event' para invocar lambda de forma asíncrona, pero no recibirás el valor de respuesta.

from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

aws = BotAWSLambdaPlugin()
result = aws.invoke_function(function_name='<lambda_name>', payload={'name': 'Botcity'})
print(result)

Invocación asíncrona

Tipo de retorno

La función future_invoke_function devuelve una instancia de concurrent.futures.Future.

import time
from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

aws = BotAWSLambdaPlugin()
future_result = aws.future_invoke_function(function_name='<lambda_name>', payload={'name': 'Botcity'})

while not future_result.done():
    print('waiting...')
    time.sleep(1)

print('Invoke (result): ', future_result.result())

Operación de alias

Listar alias

Info

El parámetro nombre de la función es solo el nombre.

from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

aws = BotAWSLambdaPlugin()
print(aws.list_aliases(function_name='<lambda_name>'))

Obtener alias

from botcity.plugins.aws.lambda_functions import BotAWSLambdaPlugin

aws = BotAWSLambdaPlugin()
print(aws.get_alias(function_name='<lambda_name>', alias_name='<alias_name>'))