【发布时间】:2013-05-01 23:13:43
【问题描述】:
我正在处理一个托管在 Amazon Web Services 上的项目。服务器设置由两个 EC2 实例、一个 Elastic Load Balancer 和一个额外的 Elastic Block Store 组成,Web 应用程序驻留在其中。该项目应该使用 S3 来存储用户上传的文件。为了这个问题,我将S3存储桶称为static.example.com
我尝试过使用s3fs (https://code.google.com/p/s3fs/wiki/FuseOverAmazon)、RioFS (https://github.com/skoobe/riofs) 和s3ql (https://code.google.com/p/s3ql/)。 s3fs 将挂载文件系统,但不允许我写入存储桶(我在 SO 上提出了这个问题:如何使用 FUSE 挂载具有适当权限的 S3 卷)。 RioFS 将挂载文件系统并让我从 shell 写入存储桶,但使用 PHP 保存的文件不会出现在存储桶中(我在 GitHub 上打开了项目的问题)。 s3ql 将挂载bucket,但是bucket中已经存在的文件都不会出现在文件系统中。
这些是我使用的挂载命令:
s3fs static.example.com -ouse_cache=/tmp,allow_other /mnt/static.example.com
riofs -o allow_other http://s3.amazonaws.com static.example.com /mnt/static.example.com
s3ql mount.s3ql s3://static.example.com /mnt/static.example.com
我也尝试过使用这个 S3 类:https://github.com/tpyo/amazon-s3-php-class/ 和这个 FuelPHP 特定的 S3 包:https://github.com/tomschlick/fuel-s3。我能够让 FuelPHP 包列出可用的存储桶和文件,但将文件保存到存储桶失败(但没有出错)。
您是否曾经在本地 linux 文件系统上挂载过 S3 存储桶并使用 PHP 成功将文件写入存储桶?你用了什么工具?如果您使用上述工具之一,您使用的是哪个版本?
编辑
我被告知,我在 GitHub 上使用 RioFS 打开的问题已经解决。虽然我决定使用 S3 REST API 而不是尝试将存储桶作为卷挂载,但现在看来 RioFS 可能是一个可行的选择。
【问题讨论】:
-
为什么投反对票?我需要更具体/更具体吗?
-
您为什么不使用S3 API 而不是尝试将其用作文件系统?
-
不是反对者,但我想知道他/她是否正在寻找您遇到问题的代码块。虽然我们这里确实有针对讨论性问题的政策,但这个问题对我来说似乎足够具体,所以 +1。
-
@StevenVondruska 我会调查的。谢谢。
-
@halfer 我认为人们对帖子标题的反应更多(我确实很沮丧!)而不是内容,这就是我再次尝试的原因。谢谢!