如何使 s3fs 与 IAM 角色协同工作?

如何使 s3fs 与 IAM 角色协同工作?

我们正在使用 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 的干净差异

干杯

相关内容