【问题标题】:S3FS not recognizing AWS ID and secret as environment variablesS3FS 未将 AWS ID 和密钥识别为环境变量
【发布时间】:2019-04-29 10:16:37
【问题描述】:

使用 S3FS v1.83(和 v1.84),我从我为使用 s3fs 命令而编写的脚本中的文件中获取环境变量。不幸的是,S3FS 看不到 AWS 密钥和秘密环境变量,即使它们在环境中也是如此。我正在使用带有最新软件包更新的 CentOS 7.5。

在命令行上将它们作为变量传递是可行的,导出它们也是可行的,但不能获取文件。

BUCKET_NAME=[bucketname]
MOUNT_LOCATION=[mountlocation]
AWSACCESSKEYID=XXXXXXXXXX
AWSSECRETACCESSKEY=XXXXXXXXX                                                     

获取文件后,在我的脚本中,我只需使用存储桶名称和挂载位置调用 s3fs。这是脚本的 sn-p:

CONFIG_FILE_LOCATION=/root/.aws_backup_config
if [ -a $CONFIG_FILE_LOCATION ]; then
   source $CONFIG_FILE_LOCATION
else                                                                                                                                                                                                                                     
   echo "AWS Backup configuration does not exist at
$CONFIG_FILE_LOCATION"                                                                                                                                                              
   exit 1                                                                                                                                                                                                                           
fi                                                                                                                                                                                                                                       
echo "Mounting S3 bucket at $MOUNT_LOCATION"                                                                                                                                                                                                 
echo $AWSACCESSKEYID
echo $AWSSECRETACCESSKEY

#Mount the S3 Bucket at MOUNT_LOCATION
s3fs $BUCKET_NAME $MOUNT_LOCATION
S3FS_RC=$?                                                                                                                                                                                                                               
if [ $S3FS_RC != 0 ]; then
     echo "Failed to mount bucket! Something isn't configured correctly! Check server messages log."

似乎是什么问题?

【问题讨论】:

    标签: linux amazon-web-services centos s3fs


    【解决方案1】:

    s3fs 确实支持 AWSACCESSKEYIDAWSSECRETACCESSKEY 凭据,但 a regression 阻止了它的使用。 1.85 将包含a fix 用于此问题。

    【讨论】:

      【解决方案2】:

      s3fs 不使用 ENV 来识别凭据。 它们应该存储在:

      回显 ACCESS_KEY_ID:SECRET_ACCESS_KEY > ${HOME}/.passwd-s3fs

      chmod 600 ${HOME}/.passwd-s3fs

      【讨论】:

      • 我使用它作为一种解决方法,但根据这里的源代码:github.com/s3fs-fuse/s3fs-fuse/blob/master/src/s3fs.cpp#L4176 它应该是从环境中获取的。
      • 根据您提供的 s3fs 尝试从以下位置获取凭证的链接:AWSACCESSKEYID 和 AWSSECRETACCESSKEY。所有 AWS 服务(cli、boto3 使用 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY)。正如我所见,s3fs 定义了它自己的环境变量,与 AWS 相关工具不同。
      • 回到我原来的问题,当我通过在脚本中获取文件将 AWSSECRETKEYID 和 AWSSECRETACCESSKEY 指定为环境变量时,为什么 s3fs 看不到?
      • 文件结构是 AWSSECRETKEYID:AWSSECRETACCESSKEY,源文件不会导出任何环境变量。 export AWSSECRETKEYID=$(cat ~/.passwd-s3fs | awk '{split($0,a,":"); print a[1]}'),第二个变量 AWSSECRETACCESSKEY 的情况相同(更改为 '.. .print [2]')
      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      相关资源
      最近更新 更多