【发布时间】:2019-08-17 23:43:55
【问题描述】:
我正在尝试通过运行 bash 脚本在 Ubuntu 18.04 终端中设置通过 AWS CLI 向 AWS 发出请求所需的环境变量,而不必在 shell 中使用 export 手动设置我的环境变量。
我已经确认,当我从 shell 设置环境变量并通过 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 中使用导出手动设置变量时得到的输出)
~$ 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 错误。
对此的任何帮助或指示将不胜感激。
【问题讨论】:
-
运行
aws configure list | tr -d '\r'有帮助吗? -
如何运行脚本?您需要
source脚本才能在当前 shell 会话中设置环境变量。 -
是的,我正在寻找要在当前 shell 中运行的脚本,并且在我运行脚本后会显示环境变量。
-
您的采购正常,但可以通过添加以下行来帮助未来的用户:
(return 0 2>/dev/null) || { printf "%s\n" "Start in current shell with" " source $0" ; exit 1 ; } -
使用
aws configure list | tr -d '\r'使输出看起来几乎正确。 (将编辑问题以显示输出)但当我尝试运行 AWS CLI 命令时,我仍然收到签名不匹配错误。
标签: bash environment-variables aws-cli