![如何使 s3fs 与 IAM 角色协同工作?](https://linux22.com/image/796247/%E5%A6%82%E4%BD%95%E4%BD%BF%20s3fs%20%E4%B8%8E%20IAM%20%E8%A7%92%E8%89%B2%E5%8D%8F%E5%90%8C%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我们正在使用 IAM 角色来维护机器。我们现在计划将 s3 安装到我们的 ec2 实例并根据需要进行处理。我们一直使用 s3fs 工具进行安装。
但这似乎不适用于 IAM 角色。有什么方法可以让 s3fs 与 IAM 角色配合使用吗?有人这样做过吗?
提前致谢。
答案1
这对我有用iam_role=自动
这是我的/etc/fstab入口
s3fs#my_bucket /s3mount_path fuse _netdev,allow_other,iam_role=auto 0 0
只需确保您的 IAM 角色具有适当的权限
答案2
手册页中似乎有一个 iam_role 选项:
iam_role(默认无角色) - 设置将从实例元数据提供凭证的 IAM 角色。
对源代码的粗略概述表明它将获取令牌并在其到期时进行轮换......
另请参阅https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials有关如何自行获取这些凭证、令牌等的详细信息
答案3
可能有点晚了,但由于大多数答案都很老了;只是想分享现在有效的命令:-
因此,要使用 IAM 角色手动挂载 s3 存储桶,您需要执行以下命令:-
$ sudo s3fs <bucket-name> /<folder-path>/<folder-name> -o iam_role="<Role-name>" -o url="https://s3-<region-name>.amazonaws.com" -o endpoint=<region-name> -o dbglevel=info -o curldbg
现在,例如如果我的存储桶名称是“Test-Bucket”,文件夹路径是“/root/Test-Bucket”,我的 IAM 角色名称是“ec2_to_s3”,而我拥有 s3 存储桶的区域是“亚太地区孟买”,那么上面指定的命令将用作:-
$ sudo s3fs Test-Bucket /root/Test-Bucket -o iam_role="ec2_to_s3" -o url="https://s3-ap-south-1.amazonaws.com" -o endpoint=ap-south-1 -o dbglevel=info -o curldbg
并且 bucket 将会被成功挂载。
现在,如果您希望存储桶在系统重启时自行挂载;您需要在“/etc/fstab”中添加此字符串。
<bucket-name> /<folder-path>/<folder-name> fuse.s3fs _netdev,allow_other,use_path_request_style,iam_role=auto 0 0
现在,按照前面的例子,需要在“/etc/fstab”中添加的字符串是:-
Test-Bucket /root/Test-Bucket fuse.s3fs _netdev,allow_other,use_path_request_style,iam_role=auto 0 0
希望这可以帮助...
答案4
如果你还没有找到解决方案,那么我已在 s3fs-c 中添加了 iam-role 支持
https://github.com/franc-carter/s3fs-c.git
有两个分支可能值得关注:-
iam-role:具有 iam 角色扩展
内存修复:它具有 iam 角色扩展,可以减少内存泄漏的数量
我做了基本的测试,但没有进行广泛的测试。重要的是,iam-role 分支没有内存修复,因为我正在尝试使其成为 pull-request 的干净差异
干杯