如何使 s3fs 与 IAM 角色一起工作?

sri*_*ram 11 ubuntu mount amazon-s3 amazon-ec2 s3fs

我们使用 IAM 角色来维护机器。我们现在计划将 s3 安装到我们的 ec2 实例并根据我们的需要进行处理。我们一直在使用 s3fs 工具进行安装。

但这似乎不适用于 IAM 角色。有什么方法可以让 s3fs 与 IAM 角色一起工作?有没有人做过这个?

提前致谢。

小智 8

这对我有用 iam_role=auto

这是我的/etc/fstab条目

s3fs#my_bucket /s3mount_path fuse _netdev,allow_other,iam_role=auto 0 0

只需确保您的 IAM 角色具有适当的权限


nte*_*rry 5

手册页中似乎有一个 iam_role 选项:

iam_role(默认为无角色)- 设置 IAM 角色,该角色将从实例元数据中提供凭证。

对源代码的粗略概述表明它将获取令牌并在它们到期时轮换......

此外,请参阅https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials了解有关获取这些凭证、令牌等的详细信息你自己

  • 这对我有用。我启动了一个服务器角色为“allowS3Full”的 EC2,然后在该服务器上使用命令行``s3fs -o iam_role='allowS3Full' -o use_cache=/tmp/s3fs mybucket /mnt`` (3认同)

小智 5

也许有点晚了,但因为大多数答案都很旧了;只是想分享现在有效的命令:-

因此,要使用 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
Run Code Online (Sandbox Code Playgroud)

现在,例如,如果我的存储桶名称是“Test-Bucket”,文件夹路径是“/root/Test-Bucket”,我的 IAM 角色名称是“ec2_to_s3”,并且我拥有 s3 存储桶的区域是“亚洲” -Pacific Mumbai”,那么上面指定的命令将用作:-

$ 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
Run Code Online (Sandbox Code Playgroud)

这样铲斗就安装成功了。

现在,如果您希望存储桶在系统重新启动时自行安装;您需要将此字符串添加到“/etc/fstab”中。

<bucket-name> /<folder-path>/<folder-name> fuse.s3fs _netdev,allow_other,use_path_request_style,iam_role=auto 0 0
Run Code Online (Sandbox Code Playgroud)

现在,按照前面的示例,需要在“/etc/fstab”中添加的字符串将是:-

Test-Bucket /root/Test-Bucket fuse.s3fs _netdev,allow_other,use_path_request_style,iam_role=auto 0 0
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...


Eri*_*ond 1

除了访问密钥 ID 和秘密访问密钥之外,IAM 角色还需要使用令牌。

这意味着需要修改 s3fs 源的当前状态才能支持 IAM 角色。

幸运的是,s3fs 是在 GPLv2 下发布的,因此您可以自由地这样做。