【问题标题】:upload files to tmp directory lambda上传文件到 tmp 目录 lambda
【发布时间】: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


    【解决方案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 
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 2022-11-07
      • 1970-01-01
      • 2021-04-19
      • 2017-02-24
      • 2014-04-03
      • 2018-07-12
      • 1970-01-01
      • 2012-03-05
      相关资源
      最近更新 更多