如何使用$HOME/.aws下的凭证配置s3fs而无需passwd-s3fs文件
s3fs使用~/.aws目录下凭证挂载的解决方案
核心问题原因
你之前操作失败的核心原因有两个:
- 你的AWS凭证存放在自定义的
[work]配置段,s3fs默认只会读取[default]段的凭证,没有显式指定profile的话会找不到凭证 - s3fs自定义密码文件的格式是
access_key:secret_key,和AWS标准ini格式的credentials文件不兼容,所以指定passwd_file为~/.aws/credentials无法正常解析
正确挂载命令
直接使用以下命令完成挂载:
s3fs companyname-us-south-analytics-ml-models /home/doug/Documents/Projects/companyname/Projects/companynameS3 \ -o profile=work \ -o endpoint=s3.us-south.cloud-object-storage.appdomain.cloud \ -o region=us-south
参数说明
profile=work:指定读取/.aws/credentials和/.aws/config中的[work]配置段,这是读取非默认配置凭证的核心参数,你之前写的-o work是错误格式endpoint:s3fs不会自动读取credentials文件中自定义的aws_s3_endpoint字段,需要显式传入region:同理不会自动读取config中的region配置,需要显式传入
前置检查项
运行命令前先确认权限配置符合要求,避免因为权限过宽导致s3fs拒绝读取凭证:
- ~/.aws目录权限设置为700:
chmod 700 ~/.aws - ~/.aws/credentials文件权限设置为600:
chmod 600 ~/.aws/credentials
简化配置方案(可选)
如果不想每次手动输入大量参数,可以将挂载配置写入/etc/fstab实现一键挂载或开机自动挂载:
- 编辑/etc/fstab,添加以下内容:
s3fs#companyname-us-south-analytics-ml-models /home/doug/Documents/Projects/companyname/Projects/companynameS3 fuse _netdev,allow_other,profile=work,endpoint=s3.us-south.cloud-object-storage.appdomain.cloud,region=us-south 0 0
- 执行
mount /home/doug/Documents/Projects/companyname/Projects/companynameS3即可完成挂载,重启后也会自动加载。
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

