使用AWS对对接者进行身份验证的推荐方式使用以下命令来推送/拉动图像:
aws ecr get-login-password --region us-east-1 |
docker login --username AWS --password-stdin AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com问题是它不适用于powershell,从而导致以下错误:
Error response from daemon: login attempt to https://AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/v2/
failed with status: 400 Bad Request它适用于CMD,但不适用于Powershell。在搜索解决方案之后,我发现问题在于,获得密码的脚本的第一部分附加了一个新行,这将导致脚本的第二部分失败。我寻找了一种方法,把第一节的那条新行去掉,但没有成功。这样做是行不通的:
echo $(aws ecr get-login-password --region us-east-1) |
docker login --username AWS --password-stdin AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com让它工作的唯一方法是将脚本分成两个命令,如下所示:
$password = aws ecr get-login-password --region us-east-1
docker login --username AWS --password $password AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com问题是,这种方法会产生以下警告:
WARNING! Using --password via the CLI is insecure. Use --password-stdin.有什么想法/解决办法吗?谢谢。
编辑:链接到github问题:https://github.com/aws/aws-tools-for-powershell/issues/270
发布于 2022-06-14 10:46:33
使用powershell脚本将图像推送到AWS的Jenkins管道解决了这个问题。我同意这与换行线有关。使用.Trim()或-replace‘\r\\n\z’似乎对管道进入-密码-stdin后传递的内容没有任何影响。
我仍然希望上传输出出现在Jenkins日志中,因此我现在已经切换到使用下面的解决方法。
docker login --username AWS --password (Get-ECRLoginCommand).Password https://AWS_ACCOUNT_ID.dkr.ecr.eu-west-2.amazonaws.com它仍然给出了使用密码的警告,但将其保存在PowerShell中。
发布于 2022-06-08 02:51:20
在这件事上浪费了几个小时之后,我终于找到了解决办法。正如我前面提到的,这在CMD中工作得很好,所以我想我应该尝试从PowerShell运行CMD。原来你可以这样做:cmd.exe \c "your command"
然后我试了一下,结果成功了:
cmd.exe \c "aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com"https://stackoverflow.com/questions/72525283
复制相似问题