问题描述
使用 goofys 挂载 TOS 失败,日志报错 ERROR Unable to access bucket_demo。
问题分析
凭证文件格式问题导致无法正常被解析 AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY,导致的权限不足。
解决方案
1.查看 goofys 的具体日志报错信息,查看日志中信息如下:
s3.ERROR code=NoCredentialProviders msg=no valid providers in chain,main.ERROR Unable to access 'bucket_demo': NoCredentialProviders: no valid providers in chain. Deprecated.#012#011For verbose messaging see aws.Config.CredentialsChainVerboseErrors
2. 查看对应的用户在 TOS 上的权限,确认用户权限是没有问题的
3. 因为 goofys 输出的日志信息有限,所以使用 aws cli 排查用户凭证问题
下载 aws cli 的客户端
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o"awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
执行 Listbuckets 操作,查看具体的报错信息
aws s3 ls --endpoint-url=http://tos-s3-cn-beijing.volces.com
报错信息如下:
Unable to parse config file: /root/.aws/credentials
由此可以判断出,上传失败的原因为 credentials 的文件格式问题导致无法解析
4. 备份原来的credentials, 按照如下格式重新编辑
$ cat ~/.aws/credentials
[default]
aws_access_key_id = AKID123*****8KFS
aws_secret_access_key = MY-SECRET-KEY
5. 测试权限没有问题后,执行挂载操作
./goofys --debug_fuse --debug_s3 --file-mode=0777 --dir-mode=0777 --endpoint https://tos-s3-cn-beijing.ivolces.com <bucket:prefix> <mountpoint>
如果您有其他问题,欢迎您联系火山引擎技术支持服务