【发布时间】:2017-10-01 18:31:27
【问题描述】:
Lambda 函数可以访问它们自己的/tmp 目录中的磁盘空间。我的问题是,我在哪里可以直观地查看/tmp 目录?
我正在尝试将文件下载到/tmp 目录以读取它们,并将新文件写入其中。我实际上希望看到我正在使用的文件在执行期间正确存储在 /tmp 中。
谢谢
【问题讨论】:
标签: python python-2.7 amazon-web-services aws-lambda
Lambda 函数可以访问它们自己的/tmp 目录中的磁盘空间。我的问题是,我在哪里可以直观地查看/tmp 目录?
我正在尝试将文件下载到/tmp 目录以读取它们,并将新文件写入其中。我实际上希望看到我正在使用的文件在执行期间正确存储在 /tmp 中。
谢谢
【问题讨论】:
标签: python python-2.7 amazon-web-services aws-lambda
正如之前的答案所建议的,您可能希望在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 异步进行下载和上传。
【讨论】:
Each Lambda function receives 500MB of non-persistent disk space in its own /tmp directory.
尝试使用S3 存储桶存储文件并从AWS Lambda 函数中读取文件,您应确保AWS Lambda 角色有权访问S3 存储桶。
【讨论】:
在 lambda 执行结束后,您无法“查看”/tmp 目录。
Lambda 在分布式架构中工作,执行后所有使用的资源(包括存储在/tmp 中的所有文件)都会被释放。
因此,如果您想检查您的文件,您可能需要考虑使用 EC2 或 S3。
如果你只是想检查s3下载是否成功,在执行过程中,你可以试试:
import os
os.path.isfile('/tmp/' + filename)
【讨论】:
/tmp目录,S3就足够了。
Each Lambda function receives 500MB of non-persistent disk space in its own /tmp directory. 有没有办法在 lambda 执行时查看 /tmp 目录?
s3client.download_file(bucket_name, obj.key, '/tmp/'+filename)。想要检查正在下载的文件是否实际上存储在 /tmp 目录中。我没有办法检查。日志甚至没有显示任何错误。
os.path.isfile('/tmp/' + filename)。您可能还想实际打开文件并检查内容。使用with open('/tmp/' + filename) as fp: 语法。