我正在尝试创建一个用于获取ecr docker登录名的api端点,每当我在本地计算机上运行代码时,登录名便允许我从映像存储库中提取。但是,每当我点击api端点时,登录名都不允许我从存储库中提取信息。
我已经查阅了aws cli“ get-login”源代码,并且我的端点代码几乎相同。我不知道为什么登录仅在本地计算机上生成时才起作用。
@get
def get_docker_login(event, context, session):
client = boto3.client('ecr')
response = client.get_authorization_token(registryIds=[<registry_id>])
token = response['authorizationData'][0]['authorizationToken']
pre_decode = base64.b64decode(token)
user, password = pre_decode.decode("utf-8").split(':')
endpoint = response['authorizationData'][0]['proxyEndpoint']
login_cmd = f"docker login -u {user} -p {password} {endpoint}"
return {"login": login_cmd}
无论登录是在本地计算机上生成还是由api生成,我都会获得成功的docker登录。区别在于当我调用docker pull时。每当我通过api登录名登录后提取时,都会收到以下消息:“守护程序的错误响应:拒绝对的提取访问,存储库不存在或可能需要'docker login'”