【问题标题】:Can I use create a share between an EC2 instances and my local machine?我可以使用在 EC2 实例和我的本地计算机之间创建共享吗?
【发布时间】:2020-07-06 12:05:27
【问题描述】:

只是为了给你一个背景......我是 aws 世界和所有提供的服务的新手。

我有一个遗留应用程序,我需要与客户端共享一些二进制文件,并且我试图将 ec2 实例 (Amazon Linux AMI) 与 samba 一起使用,以将其映射到 Windows 本地计算机。 作为试用,我能够与另一个 ec2 实例(相同的 vpc)建立连接。但是我无法用我的 Windows 机器甚至我拥有的 linux 虚拟机来做到这一点。 此概念 ec2 实例的入站规则已完全开放(允许所有流量)。

主要问题

有可能吗?与(通过 Internet)本地计算机共享 ec2 实例之间的文件系统?


只是说: S3 存储不是一个选项。 而且在我所在的地区,FSX 仍未实施,出于延迟原因,这是不行的。

请尽可能多地提问,我会尽快回复。 亲切的问候。

【问题讨论】:

  • 是的,Linux 和 Windows 都支持导出文件共享。谷歌搜索 Samba (Linux) 或 CIFS (Window)。我为未来的读者列出了两者。但是,除非您小心,否则您可能会将您的系统暴露在 Internet 上。更好的选择是使用基于 SSH GUI 的程序,该程序为云中的远程系统提供文件访问 (SFTP)。我使用的 BitVise 效果很好。
  • 感谢您的回答,但我的问题是基于 aws 问题。我确实(大部分)知道 samba 是如何工作的,我确实有几个覆盆子躺在我公寓的某个地方,并使用 samba 来共享文件和东西。再次感谢您
  • 这不是 AWS 问题,因为 AWS 不提供从您的实例内部提供文件的服务。这是操作系统和防火墙/安全问题。

标签: amazon-web-services amazon-ec2 samba


【解决方案1】:

TL;DR - 有可能,但没有“简单”的解决方案(在我看来)。

我想到了两种您可以实施的可能解决方案,我们开始吧...

1:AWS EFS、AWS Direct Connect 和 Docker

可能的解决方案是使用AWS Elastic File System (EFS)、AWS Direct ConnectDocker Linux 容器。

缺点

  1. 如果您是第一次接触上述 AWS 服务或 Docker,那么了解它们将是一段旅程
  2. EFS pricing - 没那么便宜,而且还需要考虑入站和出站流量,最好使用定价页面中的计算器
  3. EFS performance - 如果您只共享文件,那应该没问题,但如果您希望获得高速,请记住它不是 EBS 卷,因此要获得更高的速度,您需要支付更多的钱
  4. AWS Direct Connect pricing - 您还需要考虑到这一点
  5. 安全性 - 我不确定您的数据有多敏感,但您需要确保创建一个非常严格的 VPC,具有安全组和网络访问列表规则 - 阅读VPC Security Best Practices

实施解决方案的步骤

关注Walkthrough: Create and Mount a File System On-Premises with AWS Direct Connect and VPN,还有,这里是如何与Docker结合的步骤

  1. (可选)为了让它更容易一点 - 对于 Windows 来“支持”Linux 文件系统,您应该使用Windows Git Bash。如果您不确定如何在 Windows Git Bash 中使用安装 3rd-party 应用程序(如aws-vault),请阅读此blog post
  2. 创建一个EFS in AWS,并将其挂载到您的 EC2 实例上,阅读有关它的更多信息here
  3. 使用 AWS Direct Connect 从本地 Windows 计算机连接到 VPC
  4. 在本地机器上安装Docker for Windows
  5. 创建一个Docker Volume,并将相同的EFS 挂载到该卷-a good example for this step
  6. 测试它 - SSH 到您的 EC2 实例,在 EFS 卷上创建一个文件,然后在您的本地 Docker Linux 容器中检查该文件是否出现在 EFS 卷上

我省略了安全步骤,因为您希望自己的解决方案有多严格。

2:使用 S3 作为共享文件系统

你可以试试这个工具s3fs-fuse,但你仍然需要使用 Docker Linux 容器,因为你在 Windows 上。我还没有测试它,但它看起来很有希望。你可以阅读这个blog post,这是一个关于如何做到这一点的分步教程,还分享了一些其他可能的解决方案。

【讨论】:

  • 非常感谢,我一定会全力以赴。我做了一个证明概念,在我的windows机器上使用docker(因为客户电脑有windows)并且无法使其双向工作......一旦我安装samba共享我的windows中的卷停止进行任何更新。
  • 那么您已经测试了两个建议的解决方案,但都没有工作?如果是这样,请您分享为什么它不起作用?你得到了什么错误?
  • 抱歉耽搁了。实际上,我测试的是概念证明。第一阶段:我设置了 2 个容器,一个作为 samba 服务器,另一个作为 samba 客户端,测试它们,工作正常。第二:对于 samba 服务器容器,我将卷(-v 标志)保存到我的 windows 计算机上的路径,两个容器都可以正常工作。最后阶段:我坚持 samba 客户端与 samba 客户端共享的卷,即使容器之间工作正常,windows 中的卷也会停止更新 samba 服务器中所做的更改
  • 我不确定我是否理解您所说的“我保留卷”是什么意思 - 您是在使用绑定堆,是在创建卷还是在使用绑定挂载? docs.docker.com/storage/bind-mounts/… ,听起来你需要使用绑定挂载,而不是 -v 标志,你熟悉吗?
  • 对不起,持久卷,kubernetes f*@%me up。实际上不知道您可以在没有 swarm 的情况下使用 --mount 。我尝试它也没有工作,@ 987654342@,一旦我挂载它主机fs停止更新,samba服务器工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2018-05-01
  • 2021-09-29
相关资源
最近更新 更多