我正在尝试通过运行 bash 脚本来设置通过 Ubuntu 18.04 终端中的 AWS CLI 向 AWS 发出请求所需的环境变量,而不必在 shell 中使用导出手动设置我的环境变量。
我已经确认我正在使用的 AWS 凭证仍然处于活动状态,因为当我从 shell 设置环境变量时,它们也可以通过 AWS 凭证文件工作。所以我认为将值传递给环境变量的方式一定有问题。
我尝试过用引号包围,但由于我是新手,我不知道下一步该去哪里。
#!/bin/bash
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
file="/path/to/accessKeys.csv"
cnt=0
export AWS_DEFAULT_REGION=us-east-1
export AWS_DEFAULT_OUTPUT=text
while IFS=, read var1 var2
do
if [ $cnt = 1 ]
then
echo $cnt
export AWS_ACCESS_KEY_ID=$var1
export AWS_SECRET_ACCESS_KEY=$var2
fi
cnt=$(($cnt + 1))
done < $file
当我运行AWS配置列表时,我得到以下输出
:~$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************C4JA env
env **********6YS
region us-east-1 env AWS_DEFAULT_REGION
当我运行 env 以查看环境变量时,AWS_SECRET_ACCESS_KEY似乎是正确的,尽管我期望从 AWS 配置列表获得输出(当我在 shell 中使用导出手动设置变量时,我得到的输出)
~$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************C4JA env
secret_key ****************j6YS env
region us-east-1 env AWS_DEFAULT_REGION
AWS configure list | tr -d 'r'
输出
:~$ aws configure list | tr -d 'r'
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************C4JA env
secret_key ****************6YS env
region us-east-1 env AWS_DEFAULT_REGION
但这会产生签名不匹配错误。
任何帮助或指示将不胜感激。
您的file="/path/to/accessKeys.csv"
是Windows格式(带r
)。
密钥已设置为*****j6YSr
。
您可以将done < $file
的最后一行替换为
done < <(tr -d 'r' < "${file}" )
或者只得到第二行
done < <(sed -n '2s/r*//p' "${file}" )
你不需要循环
IFS=, read -d'' -r AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY < <(sed -n '2s/r*//p' "${file}" )