【问题标题】:Python/AWS Lambda Function: How to view /tmp storage?Python/AWS Lambda 函数:如何查看 /tmp 存储?
【发布时间】:2017-10-01 18:31:27
【问题描述】:

Lambda 函数可以访问它们自己的/tmp 目录中的磁盘空间。我的问题是,我在哪里可以直观地查看/tmp 目录?

我正在尝试将文件下载到/tmp 目录以读取它们,并将新文件写入其中。我实际上希望看到我正在使用的文件在执行期间正确存储在 /tmp 中。

谢谢

【问题讨论】:

    标签: python python-2.7 amazon-web-services aws-lambda


    【解决方案1】:

    正如之前的答案所建议的,您可能希望在S3 bucket 中创建一个/tmp 目录,并在最终清理之前将您的临时处理文件下载/上传到此/tmp 目录。

    您可以执行以下操作(此处不显示详细过程):

    import boto 
    s3 = boto3.client("s3")
    s3.put_object(Bucket=Your_bucket_name,Key=tmp/Your_file_name)
    

    /tmp 下载文件的方式是:

    s3.download_file(Your_bucket_name, Your_key_name, Your_file_name)
    

    在您下载文件并处理后,您想通过以下方式再次上传到/tmp

    s3.upload_file(Your_file_name, Your_bucket_name, Your_key_name)
    

    您可以在Your_key_name 中添加您的/tmp/

    那么您应该可以从这个sample 轻松列出存储桶:

    for key in bucket.list():
            print "{name}\t{size}\t{modified}".format(
                    name = key.name,
                    size = key.size,
                    modified = key.last_modified,
                    )
    

    确保通过this boto async package 异步进行下载和上传。

    【讨论】:

    • 不,我实际上是从 S3 存储桶下载文件,并希望将下载的文件临时存储在 /tmp 中。只是想确保我实际使用的是 /tmp 目录。来自网站Each Lambda function receives 500MB of non-persistent disk space in its own /tmp directory.
    【解决方案2】:

    尝试使用S3 存储桶存储文件并从AWS Lambda 函数中读取文件,您应确保AWS Lambda 角色有权访问S3 存储桶。

    【讨论】:

      【解决方案3】:

      在 lambda 执行结束后,您无法“查看”/tmp 目录。

      Lambda 在分布式架构中工作,执行后所有使用的资源(包括存储在/tmp 中的所有文件)都会被释放。

      因此,如果您想检查您的文件,您可能需要考虑使用 EC2 或 S3。

      如果你只是想检查s3下载是否成功,在执行过程中,你可以试试:

      import os
      os.path.isfile('/tmp/' + filename)
      

      【讨论】:

      • EC2不仅仅是检查文件,如果他只想要一个他想访问的/tmp目录,S3就足够了。
      • @joarleymoraes 我实际上是从 S3 存储桶下载文件,并希望将下载的文件临时存储在 /tmp 中。只是想确保我实际使用的是 /tmp 目录。从站点Each Lambda function receives 500MB of non-persistent disk space in its own /tmp directory. 有没有办法在 lambda 执行时查看 /tmp 目录?
      • 好的,知道了。你是如何下载文件的?下载文件的函数应该返回 tmp 文件名。
      • @joarleymoraes 像这样下载:s3client.download_file(bucket_name, obj.key, '/tmp/'+filename)。想要检查正在下载的文件是否实际上存储在 /tmp 目录中。我没有办法检查。日志甚至没有显示任何错误。
      • 您可以简单地检查:os.path.isfile('/tmp/' + filename)。您可能还想实际打开文件并检查内容。使用with open('/tmp/' + filename) as fp: 语法。
      猜你喜欢
      • 1970-01-01
      • 2020-12-31
      • 2017-10-21
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 2016-12-07
      • 2013-03-09
      • 2016-07-07
      相关资源
      最近更新 更多