将文件上传到tmp目录lambda

时间:2019-08-12 11:22:19

标签: python-3.x amazon-web-services lambda google-cloud-platform

我有一个Lambda函数,可在发生S3上传时触发。然后下载到/ tmp,然后发送到GCP存储。问题在于,日志文件最多可以包含900 MB,因此Lambda函数中的/ tmp存储上没有足够的空间。有没有解决的办法?

我尝试发送到内存,但是我认为内存是只读的。 也有关于安装ef的讨论,但不确定是否可以使用。

从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))

这是cloudwatch日志中针对lambda函数的错误。

[错误] OS错误:[错误28]设备上没有剩余空间 追溯(最近一次通话):   lambda_handler中的文件“ /var/task/lambda_function.py”,第30行     s3.download_file(s3_bucket_name,file_key,'/ tmp /

1 个答案:

答案 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 

我希望能对您有所帮助。