显示来自远程 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 实例的文件列表的主要内容,如果未能解决你的问题,请参考以下文章