【发布时间】:2019-12-18 23:27:42
【问题描述】:
我有一个在 S3 上传发生时触发的 Lambda 函数。然后它会下载到 /tmp,然后发送到 GCP 存储。问题是日志文件最大可达 900 MB,因此 Lambda 函数中的 /tmp 存储空间不足。有没有解决的办法?
我尝试发送到内存,但我相信内存是只读的。 还有关于安装 efs 的讨论,但不确定这是否有效。
从 S3 事件中检索存储桶名称和 file_key
logger.info(event)
s3_bucket_name = event['Records'][0]['s3']['bucket']['name']
file_key = event['Records'][0]['s3']['object']['key']
logger.info('Reading {} from {}'.format(file_key, s3_bucket_name))
logger.info(s3_bucket_name)
logger.info(file_key)
# s3 download file
s3.download_file(s3_bucket_name, file_key, '/tmp/{}'.format(file_key))
# upload to google bucket
bucket = google_storage.get_bucket(google_bucket_name)
blob = bucket.blob(file_key)
blob.upload_from_filename('/tmp/{}'.format(file_key))
这是来自 lambda 函数的 cloudwatch 日志中的错误。
[ERROR] OSError: [Errno 28] 设备上没有剩余空间 回溯(最近一次通话最后): 文件“/var/task/lambda_function.py”,第 30 行,在 lambda_handler 中 s3.download_file(s3_bucket_name, file_key, '/tmp/
【问题讨论】:
标签: python-3.x amazon-web-services lambda google-cloud-platform