AWS CLI执行脚本报错:找不到配置文件myawsprofile,求解决方案
解决AWS配置文件找不到的问题
先检查拼写错误
你创建的配置文件是myawsprofile,但脚本里写的是--profile myawssprofile(多了一个s),这是最可能直接触发错误的原因,先把脚本里的配置文件名修正为myawsprofile。
如果修正拼写后仍报错,再看以下核心原因和解决办法:
核心原因:sudo执行时切换到root用户,读取的是root的配置文件
你用普通用户执行aws configure --profile myawsprofile时,配置文件存在于普通用户家目录(比如/home/你的用户名/.aws/config和/home/你的用户名/.aws/credentials),但sudo会切换到root用户,root的家目录是/root/,里面没有你创建的配置文件,因此报错。
解决办法1:不用sudo执行脚本
如果你的普通用户有执行该AWS命令的权限,直接运行:
bash myscript
无需使用sudo。
解决办法2:让root读取普通用户的配置文件
复制普通用户的配置文件到root家目录,并修改权限:
sudo cp -r ~/.aws /root/ sudo chown -R root:root /root/.aws
这样root用户就能找到myawsprofile配置。
解决办法3:执行sudo时保留当前用户环境
用-E参数让sudo继承当前用户的环境变量(包括HOME),这样AWS CLI会读取普通用户家目录下的.aws配置:
sudo -E bash myscript
注意:这种方式要确保当前用户的环境变量对root操作是安全的。
解决办法4:在脚本里指定配置文件路径
在AWS命令前显式指定配置文件和凭证文件的路径,比如你的普通用户名为ubuntu,修改脚本里的命令为:
#!/bin/sh AWS_CONFIG_FILE=/home/ubuntu/.aws/config AWS_SHARED_CREDENTIALS_FILE=/home/ubuntu/.aws/credentials aws ec2 run-instances --image-id ami-ubuntu --count 1 --instance-type t2.micro --key-name mypemfile --security-group-ids sg-mine --subnet-id subnet-mine --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=AWSTEST}]" --output text --profile myawsprofile
把/home/ubuntu替换成你实际的普通用户家目录路径。
内容的提问来源于stack exchange,提问作者Germano
相关产品推荐
相关产品推荐

