AWS Lambda的执行环境是一个虚拟机容器,其存储是基于本地磁盘,而不是分布式文件系统。因此,在Lambda函数执行期间,仅能访问到部分下载的网络文件的内容。
要解决这个问题,可以考虑以下方法:
import requests
def lambda_handler(event, context):
url = "https://example.com/file.txt"
response = requests.get(url, stream=True)
for chunk in response.iter_content(chunk_size=1024):
# 处理文件块,可以将文件块保存到AWS S3或其他存储服务中
process_chunk(chunk)
import boto3
def lambda_handler(event, context):
s3 = boto3.resource('s3')
bucket_name = 'your-bucket-name'
key = 'file.txt'
s3.download_file(bucket_name, key, '/tmp/file.txt')
with open('/tmp/file.txt', 'r') as file:
# 处理文件内容
process_file(file)
请注意,在使用临时存储的方法中,需要确保Lambda函数有足够的权限来访问临时存储服务。