我试图通过运行bash脚本来设置通过Ubuntu 18.04终端中的AWS CLI向AWS发出请求所必需的环境变量,而不是必须在shell中使用export手动设置环境变量。
我已经确认,当我从外壳程序设置环境变量并通过AWS凭证文件运行时,我正在使用的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中使用export手动设置变量时得到的输出)
~$ 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
但这会导致SignatureDoesNotMatch错误。
对此的任何帮助或指示,将不胜感激。
答案 0 :(得分:0)
您的file="/path/to/accessKeys.csv"
是Windows格式(带有\r
)。
密钥已设置为*****j6YS\r
。
您可以将最后一行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}" )