
在我的 .bashrc 文件末尾有以下内容:
docker login -u AWS -p $(aws --region us-east-2 ecr get-login-password) 636602586062.dkr.ecr.us-east-2.amazonaws.com
但是,每当我打开一个新 shell 时都会出现此错误:
INFO[0000] Error logging in to endpoint, trying next endpoint error="login attempt to https://636602586062.dkr.ecr.us-east-2.amazonaws.com/v2/ failed with status: 403 Forbidden"
login attempt to https://636602586062.dkr.ecr.us-east-2.amazonaws.com/v2/ failed with status: 403 Forbidden
如果我在提示后手动运行该命令,它会正常工作,但它在 .bashrc 文件中不起作用。
凭据是通过执行 设置的aws configure
。aws
而 CLI 工具则是通过以下方式安装的:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
关于为什么它不起作用以及我该怎么做才能修复它,您有什么想法吗?
如果有必要的话,我正在运行 Ubuntu 22.04。
谢谢!
答案1
您使用的命令不符合文档推荐的格式,-p
提供密码的选项不安全。
要以非交互方式运行 docker login 命令,您可以设置 --password-stdin 标志以通过 STDIN 提供密码。使用 STDIN 可防止密码进入 shell 的历史记录或日志文件。
命令应该是:
aws --region us-east-2 ecr get-login-password | docker login 636602586062.dkr.ecr.us-east-2.amazonaws.com -u AWS --password-stdin
或者
aws --region us-east-2 ecr get-login-password | docker login -u AWS --password-stdin 636602586062.dkr.ecr.us-east-2.amazonaws.com
上述命令不使用交互式 shell。
我承认我不知道为什么你的命令在文件中不起作用.bashrc
,无论如何它与aws
没有在中产生输出的命令subshell
有关.bashrc
(因为你用 打开了一个子shell $(...)
)。
希望这个回答能帮到你。