python直接写入S3存储桶

时间:2018-01-22 13:18:06

标签: python amazon-web-services amazon-s3 boto3

我有一个打印一些东西的python函数。我很想把它放到AWS Lambda上,并希望将这些内容直接打印到S3存储桶中的文件中。 所以要在S3存储桶文件中重定向stdout。 这就是我所说的功能:

recurse_for_values(top_vault_prefix, top_level_keys)

2 个答案:

答案 0 :(得分:2)

与Thomas L.几乎相同,但是使用io,这样你就不会在本地写任何文件(一切都在内存中)。

import io
import tinys3
f=io.StringIO(u"some initial text data")
conn = tinys3.Connection('yourAccessKey', 'yourSecretKey', tls=True)
conn.upload('yourS3Key', f, 'yourBucketName')
f.close()

OR

您可以使用类似S3FS(https://github.com/s3fs-fuse/s3fs-fuse)的东西将S3存储桶装载为磁盘,然后像对本地磁盘一样重定向输出,但我强烈反对此选项。 S3绝对不是文件系统,不应该这样使用。例如,它会向S3生成大量请求(从而产生成本)并且可能不那么可靠......

答案 1 :(得分:0)

您可以将日志写入本地文件,然后在脚本末尾与AWS S3同步。

import tinys3

log_file_object  = open(“logfile”, “w”)
log_file_object.write("Some logs...")
log_file_object.write("Some other logs...")
log_file_object.close()

conn = tinys3.Connection('S3_ACCESS_KEY','S3_SECRET_KEY',tls=True)
conn.upload('log_file_DDMMYYYY',f,'my_bucket')

您也可以使用boto3更新文件,但tinys3更易于用于微小的使用。 希望它可以提供帮助。