我有一个Lambda函数,可在发生S3上传时触发。然后下载到/ tmp,然后发送到GCP存储。问题在于,日志文件最多可以包含900 MB,因此Lambda函数中的/ tmp存储上没有足够的空间。有没有解决的办法?
我尝试发送到内存,但是我认为内存是只读的。 也有关于安装ef的讨论,但不确定是否可以使用。
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))
这是cloudwatch日志中针对lambda函数的错误。
[错误] OS错误:[错误28]设备上没有剩余空间 追溯(最近一次通话): lambda_handler中的文件“ /var/task/lambda_function.py”,第30行 s3.download_file(s3_bucket_name,file_key,'/ tmp /
答案 0 :(得分:1)
storage_client = storage.Client()
bucket = storage_client.get_bucket("YOUR_BUCKET_NAME")
blob = bucket.blob("file/path.csv") #file path on your gcs
blob.upload_from_filename("/tmp/path.csv") #tmp file
我希望能对您有所帮助。