将请求的结果进行缓存,可以有效减少对 ApiGateway 的请求。在 Lambda 函数中可以使用第三方库如 redis 来实现缓存功能。当有数量较少的请求时,可以考虑使用函数内存作为缓存,代码示例:
import redis cache = redis.Redis(host='example.com', port=6379, db=0) def lambda_handler(event, context): key = event['key'] if cache.exists(key): return cache.get(key) result = expensive_operation() # 执行昂贵的操作 cache.set(key, result) return result
可以尝试使用异步请求(如 SNS,SQS,Kinesis 等)来处理处理一些请求,而不是等待 ApiGateway 立即返回结果。这样可以将请求发送到后台处理,然后立即响应给 ApiGateway 结果已经在后台处理中了。代码示例:
import boto3 client = boto3.client('sns') def lambda_handler(event, context): data = {'key': event['key']} response = client.publish(TopicArn='arn:aws:sns:us-west-2:1234567890:my-topic', Message=json.dumps(data)) return "Response sent!"
使用 Lambda Function 的并发调用功能即可同时调用多个 Lambda Function 实例处理请求。这意味着,更多的请求可以同时执行以提高性能和响应时间。代码示例:
import boto3 client = boto3.client('lambda') def lambda_handler(event, context): data = {'key': event['key'], 'async': True} response = client.invoke(FunctionName='process_data', InvocationType='Event', Payload=json.dumps(data)) return "Response sent!"