在Lambda函数中生成Boto3 ECR授权令牌时不起作用

时间:2019-06-18 13:45:21

标签: amazon-web-services aws-lambda boto3

我正在尝试创建一个用于获取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'”

0 个答案:

没有答案