AWS:将S3存储桶挂载到EC2实例上(稍后进行FTP隧道)

9

我想做什么?

步骤1:将S3存储桶挂载到EC2实例。

步骤2:在EC2实例上安装FTP服务器,并将ftp请求隧道化到存储桶中的文件。

我到目前为止做了什么?

  • 创建存储桶
  • 创建具有开放输入端口的安全组(FTP:20,21 - SSH:22 - 更多一些)
  • 连接到EC2

以下是代码:

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/s3fs/s3fs-1.74.tar.gz
tar -xvzf s3fs-1.74.tar.gz
yum update all
yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel curl-devel libxml2-devel openssl-devel mailcap
cd s3fs-1.74
./configure  --prefix=/usr
make
make install
vi /etc/passwd-s3fs # set access:secret keys
chmod 640 /etc/passwd-s3fs
mkdir /s3bucket
cd /s3bucket

cd 的回答是:传输端点未连接

不知道出了什么问题。也许我使用的用户不对?但目前除了 root 用户外,我只有一个用户(用于测试目的)。

下一步将是 ftp 隧道,但现在我想让它正常工作。


1
检查您的系统日志,如果这没有帮助,请启用调试。 - Michael - sqlbot
3个回答

4


1

第一点

虽然另一个回答者说S3不适用于此,但不能说桶无法被挂载(但我认为最好找到更好的解决方法)。

话虽如此,您可以使用s3fuse在EC2中挂载S3存储桶。有很多很好的理由不这样做,在此详细说明

第二点

从那里开始,只需设置标准FTP服务器,因为该存储桶现在对您的系统而言就像是任何其他文件系统(大多数情况下)。

vsftpd可能是一个不错的选择。我会尝试两种方法,然后发布单独的问题以解决遇到的任何特定问题,但这应该给你一个大致的概述。 (实际上,我不会尝试任何一种方法,而是通过使用API消耗应用程序代码来使用S3,但仍然)。


2
这个解决方案存在一些问题,正如我在这里提到的,但你所担心的问题并不在其中。 "对我来说最大的问题是这是第三方对API的不支持使用。稳定性可能会成为一个问题。" 这并不准确。S3 API是公开的、有文档的,而且这个应用程序和其他任何应用程序一样有效。问题实际上是试图将S3用作它不是的东西——它不是一个文件系统,而且存在着不可避免的阻抗差距,无法完全弥合。 - Michael - sqlbot
1
“(如果AWS对API进行重大更改,库将无法正常工作,直到更新为止)”也不是一个现实的问题。如果直接针对底层API进行开发不受支持,那么文档也不会如此详尽。在过去的10年中,S3 REST API没有引入任何破坏性更改。服务的所有演变都是完全向后兼容的。即使对象版本控制被引入,也不会破坏不知道版本控制的现有代码。 - Michael - sqlbot
所以,有几点需要注意的是,一个应用程序与其他任何应用程序一样有效,并不能真正防止应用程序在其所使用的API发生大规模更改时无法及时更新。这些更改不需要从一个版本到下一个版本就会产生破坏性影响,只需要在消费应用程序能够更新之前就会产生破坏性影响。我认为,对于意外使用API的应用程序来说,遭受这种破坏性变化的风险要大得多。话虽如此...我必须承认,我没有意识到S3 API自2006年以来就没有更新过,所以在这里可能不是一个主要问题! - Tom Manterfield
实际上,事实证明他们已经有了一个破坏性的变化;SOAP over HTTP 被移除了。我认为你的观点仍然站得住脚,API 的稳定水平似乎足够高,这不应该是主要关注点,所以我进行了编辑以反映这一点。 - Tom Manterfield
1
我故意说“REST” API。 :) 谢谢你听我说。+1。只要你知道这些问题,这个有限的应用实际上非常完美。我使用proftpd和s3fs至少已经有几年了。我完全意识到设置的不理想性,并在早期时时刻刻保持警惕以防止出现意外行为,但我从来没有遇到过问题。这确实是一个可行的用例,尽管许多其他用例可能会有问题。您甚至可以使用控制台或API创建对象,设置x-amz-meta-uid/-gid/-mode元数据,s3fs将将其解释为文件所有者/组/权限。 - Michael - sqlbot
1
哈,你真的做到了!我必须承认,我去过一些地方使用它而没有遇到太多问题。然而,有一个名字类似的库却是另一回事,这让我对任何这些解决方案都有相当强烈的厌恶感。我想我对非标准(或至少不常见)技术的真正问题在于,你经常会发现可用的支持跳崖了。不过,就像你说的那样,只要你知道自己在做什么! - Tom Manterfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接