Necesito crear una función lambda usando la opción desde cero. Veo que hay 3 opciones en la aplicación de AWS. Revisé el documento de AWS Boto3 pero no pude encontrar la forma de seleccionar 3 formas de seleccionar.
Intenté buscar en Boto3 Doc. Mi código está fallando para la clave S3. ¿Cómo puedo crear una función lambda simple usando el código Boto3?
Mi código:
lambda_Client = boto3.client('lambda', aws_access_key_id=accessKey, aws_secret_access_key=secretKey,region_name=region) response =lambda_Client.create_function( Code={ 'S3Bucket': 's3bucket', 'S3Key': 'function.zip', #how can i create or fetch this S3Key }, Description='Process image objects from Amazon S3.', FunctionName='function_name', Handler='index.handler', Publish=True, Role='arn:aws:iam::123456789012:role/lambda-role', Runtime='nodejs12.x', ) print(response)Error: la clave GetObjet S3 no es válida.
¿Cómo puedo crear una clave s3 o hay una forma sencilla de crear una función AWS Lambda sin ninguna dependencia? ¡Por favor guíame!
Encontré muchos problemas al intentar crear una función lambda con un archivo zip, pero finalmente lo hice y funcionó.
Este código creará una función lambda a partir de un archivo ZIP:
Primero declaramos la ruta del archivo zip. Luego, en la función aws_file , lo convertimos en bytes para que Amazon pueda leerlo. Finalmente, lambda_creator lo cargará y creará la función lambda con los parámetros dados.
ZIPNAME = "code\\my-deployment-package.zip" def aws_file(): with open(ZIPNAME, 'rb') as file_data: bytes_content = file_data.read() return bytes_content def lambda_creator(name): lambda_client = boto3.client('lambda', aws_access_key_id=ACCESSKEY, aws_secret_access_key=SECRETKEY, region_name=REGION) response = lambda_client.create_function( Code={ 'ZipFile': aws_file() }, Description='Hello World Test.', FunctionName='Test-lambda', Handler='lambda_function.lambda_handler', Publish=True, Role='arn:aws:iam:: 123456789012:role/lambda-rol', Runtime='python3.8', ) return responseEsta clave provendría de cargar un objeto en Amazon S3, puede hacerlo mediante programación llamando a put_object a través del SDK de Boto3.
Un ejemplo aproximado de cómo utilizarlo sería el siguiente
import zipfile archive = zipfile.ZipFile('function.zip', 'w') zip.write('index.js', 'path/on/disk/index.js') ....... client.put_object(Body=archive, Bucket='bucket-name', Key='function.zip') lambda_Client = boto3.client('lambda', aws_access_key_id=accessKey, aws_secret_access_key=secretKey,region_name=region) response = lambda_Client.create_function( Code={ 'S3Bucket': 'bucket-name', 'S3Key': 'function.zip', #how can i create or fetch this S3Key }, Description='Process image objects from Amazon S3.', FunctionName='function_name', Handler='index.handler', Publish=True, Role='arn:aws:iam::123456789012:role/lambda-role', Runtime='nodejs12.x', )Usted especifica la clave cuando carga esto, asegúrese de comprimir su código cuando lo carga.
Alternativamente, use el atributo ZipFile en su lugar, de la documentación de Boto3 se indica lo siguiente.
El contenido codificado en base64 del paquete de implementación. Los clientes de AWS SDK y AWS CLI manejan la codificación por usted.