显示来自远程 EC2 实例的文件列表

Posted

技术标签:

【中文标题】显示来自远程 EC2 实例的文件列表【英文标题】:Displaying a list of files from a remote EC2 instance 【发布时间】:2022-01-11 09:35:22 【问题描述】:

我正在运行两个 AWS EC2 实例(Ubuntu):

一个管理界面 (1),用户可以在其中查看驻留在另一个实例 (2) 上的目录中的文件列表。

在本地测试时,我可以使用基本的 php 脚本从我的站点中的另一个目录查看文件:

$path = "upload_directory/“;
$files = scandir($path);
foreach($files as $file) 
    if ($file[0] != '.') $nothidden[] = $file;

for ($x=0;$x<count($nothidden);$x++)
$'file'.$x = $nothidden[$x]; echo $nothidden[$x];

但是,当我在另一个实例(与文件所在位置不同的实例)上运行脚本时,这显然不起作用,其中 $path 已更改:

$path = "http://xx.xxx.xxx.xx/upload_directory/

我不完全确定我的下一步应该是什么。这仅仅是更改包含文件的目录上的出站安全设置的情况,还是比这更复杂的问题?

不幸的是,目前将这两个实例结合起来并不是一个实用的解决方案。

【问题讨论】:

如果您在实例之间共享文件,为什么不将文件存储在 S3 或 EFS 中? 嗨马尔辛。存储文件的实例还执行其他功能,所以我的偏好是将它们保留在那里。如果不可能,那么我将不得不考虑使用 S3 存储桶之类的替代方案。 EFS 允许您从多个实例无缝访问文件,因为它只是一个网络文件系统。 好的,所以这听起来比依赖另一个实例更有效的文件存储方式。假设我可以实现它,问题仍然存在 - 我是否能够使用上述方法显示文件,或者我仍然需要使用安全性?谢谢。 我不确定你的代码是做什么的。但是,如果您使用 EFS,那么生成指向它的链接的实例并不重要。 【参考方案1】:

使用来自https://github.com/s3fs-fuse/s3fs-fuse 的指令安装 S3FS。

挂载为本地文件系统并配置对 S3 存储桶具有读写权限的 aws 密钥

/usr/local/bin/s3fs -o allow_other bucket /mnt/s3fs/pathlocal

在两个 ec2 上。 在两个 ec2 上执行以下操作:

如果 EC2 附加了对 S3 存储桶具有读写权限的 IAM 配置文件

/usr/local/bin/s3fs -o allow_other bucket /mnt/s3fs/pathlocal -o iam_role='role-name'

您可以在 /etc/rc.local 中添加挂载脚本以在启动时自动挂载。

【讨论】:

以上是关于显示来自远程 EC2 实例的文件列表的主要内容,如果未能解决你的问题,请参考以下文章

我们如何使用 python boto3 获取挂载到 EC2 实例的所有文件系统(EFS)的列表?

EC2 重启后自动运行 .bat 文件,无需远程连接

来自远程服务器的 jQuery 文件树

远程桌面连接到 ec2 实例

从另一个远程服务器 SSH 到 AWS ec2 实例?

如何使用 Amazon PHP SDK 2 获取 EC2 实例列表?