AWS Lambda 函数 (Python) - 如何使用外部库?
AWS Lambda Function (Python) - How to use external libraries?
我正在尝试使用以下代码创建 Lambda 函数 (Python):
import json
import qrcode
from PIL import Image, ImageDraw
import boto3
def lambda_handler(event, context):
input_data = "https://m.media-amazon.com/images/I/81xuW7h1tkL._AC_SL1500_.jpg"
qr = qrcode.QRCode(
version=1,
box_size=10,
border=5)
qr.add_data(input_data)
qr.make(fit=True)
img = qr.make_image(fill='black', back_color='white')
file_name = "qrcode001.png"
img.save(file_name)
string = "WhatAmIGoodFor"
encoded_string = string.encode("utf-8")
bucket_name = "mys3bucket"
s3_path = "qrcode/" + file_name
s3 = boto3.resource("s3")
s3.Bucket(bucket_name).put_object(Key=s3_path, Body=encoded_string)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
我将所有需要的模块安装在如下相同的文件夹中:
并通过 CLI 创建如下:
aws lambda create-function --function-name generate_ticket \
--zip-file fileb://Archive.zip --handler lambda_function.lambda_handler --runtime python3.9 \
--role arn:aws:iam::999999999:role/service-role/generate_ticket-role-hj1kcybi
如何在我的 Lambda 函数中正确使用外部库?
Python 模块不应位于文件夹中。它们应该与 lambda_function.py
处于同一级别,然后将它们压缩在一起。
如果你没有很多依赖项,这没关系,但是如果有更多的额外库,你的 lambda 函数冷启动会变慢,所以最好创建一个包含你的依赖项的 lambda 层并附加它层到 lambda 函数。层的配置,可以在official documentation
中查看详情
我正在尝试使用以下代码创建 Lambda 函数 (Python):
import json
import qrcode
from PIL import Image, ImageDraw
import boto3
def lambda_handler(event, context):
input_data = "https://m.media-amazon.com/images/I/81xuW7h1tkL._AC_SL1500_.jpg"
qr = qrcode.QRCode(
version=1,
box_size=10,
border=5)
qr.add_data(input_data)
qr.make(fit=True)
img = qr.make_image(fill='black', back_color='white')
file_name = "qrcode001.png"
img.save(file_name)
string = "WhatAmIGoodFor"
encoded_string = string.encode("utf-8")
bucket_name = "mys3bucket"
s3_path = "qrcode/" + file_name
s3 = boto3.resource("s3")
s3.Bucket(bucket_name).put_object(Key=s3_path, Body=encoded_string)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
我将所有需要的模块安装在如下相同的文件夹中:
并通过 CLI 创建如下:
aws lambda create-function --function-name generate_ticket \
--zip-file fileb://Archive.zip --handler lambda_function.lambda_handler --runtime python3.9 \
--role arn:aws:iam::999999999:role/service-role/generate_ticket-role-hj1kcybi
如何在我的 Lambda 函数中正确使用外部库?
Python 模块不应位于文件夹中。它们应该与 lambda_function.py
处于同一级别,然后将它们压缩在一起。
如果你没有很多依赖项,这没关系,但是如果有更多的额外库,你的 lambda 函数冷启动会变慢,所以最好创建一个包含你的依赖项的 lambda 层并附加它层到 lambda 函数。层的配置,可以在official documentation
中查看详情