如何使用从AWS ECR获得的授权令牌来执行docker pull



如何使用从AWS ECR获得的授权令牌执行docker pull

下面的调用为您获取TOKEN

TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')

如何传递此令牌信息以在AWS ECR 中提取私有docker映像

从文档:https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html

若要获得授权令牌,必须使用GetAuthorizationToken API操作以检索base64编码的包含用户名AWS和编码的授权令牌密码

因此auth令牌包含用户和密码作为base64编码字符串。然后您可以使用docker login登录到私有回购。命令如下:docker login --username userNameFromToken --password passwordFromToken aws_account_id.dkr.ecr.region.amazonaws.com

不过,我建议您使用get login password cli来简化这一过程。

再次从相同的文档中,你所要做的就是:

aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

你应该有docker cli登录。

然后你可以使用docker pull aws_account_id.dkr.ecr.region.amazonaws.com/your-repo-name:tag这样的命令来拉动

由于您正在使用授权令牌,这可能对您有效:

docker login -u AWS -p $(aws ecr get-authorization-token --profile *profileName* --region *your-region* --output text --query 'authorizationData[].authorizationToken' | base64 --decode | cut -c 5- ) ****.dkr.ecr.**-****-*.amazonaws.com

我要做的是获取授权令牌,对其进行base64解码,并从中删除前4个字符,因为base64解码的字符串的形式是username(AWS(:encoded_password。因此,我们将使用cut命令删除AWS:

参考资料:aws ecr说"无法从非TTY设备执行交互式登录";在从"复制cmd之后;Amazon Container Services";

最新更新