programing

이미지를 Amazon ECR에 푸시할 수 없음 - "기본 인증 자격 증명 없음"으로 실패함

lastmoon 2023. 8. 5. 10:53
반응형

이미지를 Amazon ECR에 푸시할 수 없음 - "기본 인증 자격 증명 없음"으로 실패함

도커 이미지를 Amazon ECR 레지스트리에 푸시하려고 합니다. 11을 사용하고 . 빌드 도커클라이커도 1.9.1을습있다니빌드고사.a34a1d5사용합니다aws ecr get-login --region us-east-1도커 로그인 자격 증명을 가져옵니다. 저는 다음과 같은 합니다.

docker login -u AWS -p XXXX -e none https://####.dkr.ecr.us-east-1.amazonaws.com
WARNING: login credentials saved in /Users/ar/.docker/config.json
Login Succeeded

그러나 이미지를 푸시하려고 하면 다음 오류가 발생합니다.

$ docker push ####.dkr.ecr.us-east-1.amazonaws.com/image:latest
The push refers to a repository [####.dkr.ecr.us-east-1.amazonaws.com/image] (len: 1)
bcff5e7e3c7c: Preparing 
Post https://####.dkr.ecr.us-east-1.amazonaws.com/v2/image/blobs/uploads/: no basic auth credentials

나는 aws 사용자에게 올바른 권한이 있는지 확인했습니다.또한 해당 사용자가 리포지토리에 푸시할 수 있도록 허용했는지 확인했습니다.그것이 문제가 되지 않았는지 확인하기 위해 모든 사용자에게 전체 액세스를 허용하도록 레지스트리를 설정했습니다.아무것도 변하지 않습니다."no basic auth credentials"오류입니다. 모든 트래픽이 암호화되어 있기 때문에 디버깅을 시작하는 방법을 모르겠습니다.

갱신하다

그래서 저는 제 문제의 근본 원인을 깨달았을 때 호머 심슨 도오의 시간을 가졌습니다.여러 AWS 계정에 액세스할 수 있습니다.비록 내가 사용하고 있었지만,aws configure에 대한 자격 하기 위해 환경 변수 내 저 소 를 장 설 계 증 는 설 다 aws CLI 제 사 있 니 습 었 고 하 용 를 수 변 환 경 로 위 실 해 하정정대명기자한격정을 .AWS_ACCESS_KEY_ID그리고.AWS_SECRET_ACCESS_KEY그래서 내가 했을 때aws ecr get-login잘못된 계정에 대한 로그인을 반환하고 있었습니다.제안된 답변 중 일부를 사용해 보기 위해 돌아가기 전까지는 계정 번호가 다르다는 것을 알아차리지 못했습니다.환경 변수를 제거하면 모든 것이 올바르게 작동합니다.이 오류가 발생하면 로그인하고 있는 리포지토리가 이미지에 적용한 태그와 일치하는지 확인하는 것이 이 이야기의 모토라고 생각합니다.

$(aws ecr get-login --region us-east-1)당신을 위해 모든 것이 이루어질 것입니다.

2021년 7월 업데이트:

get-login이제 AWS CLI 버전 1에서는 더 이상 사용되지 않습니다.CLI AWS CLI 2를 .get-login-password.

의 출력을 파이프로 연결할 수 있습니다.get-login-passwordECR 레지스트리에 대한 도커 인증을 위한 도커 로그인 명령:

aws ecr get-login-password | docker login --username AWS --password-stdin ####.dkr.ecr.us-east-1.amazonaws.com

은 이당은할합니다있야어수제신▁to▁be합▁able다니▁now▁should▁you이있제를 할 수 있을 것입니다.docker pushECR 레지스트리로 바로 이동합니다.

갱신하다

2 - AWS CLI 버전 2 -aws ecr get-login는 더 이상 사용되지 않으며 올바른 방법은 입니다.

과 같습니다.docker login -u AWS -p $(aws ecr get-login-password --region us-east-1) xxxxxxxx.dkr.ecr.us-east-1.amazonaws.com

제 경우 이는 Windows용 Docker와 Windows Credential Manager 지원에 대한 버그였습니다.

.~/.docker/config.json그리고 그것을 제거합니다."credsStore": "wincred"참가 신청

자격 이 그면자증기록다니됩다에음에 됩니다.config.json은 나중에 다시 해야 합니다나중에 다시 로그인해야 합니다.

GitHub에서 티켓 #22910과 #24968을 통해 이 버그를 추적할 수 있습니다.

꼭 합격하세요.--profile=XXXaws ecr get-login.

저도 이 문제가 있었습니다.실행한 후 반환된 명령을 실행하는 것을 잊었습니다.

aws ecr get-login --region ap-southeast-2

를 포함하는 큰 했습니다.docker login바로 거기서 명령합니다!나는 깨닫지 못했어.다음과 같은 것을 반환해야 합니다.

docker login -u AWS -p <your_token_which_is_massive> -e none <your_aws_url>

이 명령을 복사하여 붙여넣은 다음과 같은 도커 푸시 명령을 실행합니다.

docker push 8888888.blah.blah.ap-southwest-1.amazonaws.com/dockerfilename

이것은 권한을 열지 않았더라도 작동했어야 합니다.문서: 개인 레지스트리 인증을 참조하십시오.

[편집: 사실 저도 두 번째 테스트를 할 때 권한 문제가 있었습니다.Docker push to AWS ECR private repo failing with 잘못된 형식의 JSON)을 참조하십시오.]

그럼에도 불구하고 저는 같은 문제를 겪었습니다. 이유는 모르겠지만 get-authorization-token에 대한 문서에 설명된 보다 장황한 인증 메커니즘을 성공적으로 사용했습니다.

AWS CLI 및 도커 버전:

$ aws --version
aws-cli/1.9.17 Python/2.7.6 Linux/3.16.0-38-generic botocore/1.3.17
$ docker --version
Docker version 1.9.1, build a34a1d5

인증 토큰('도커 암호')을 가져옵니다.

aws ecr get-authorization-token --region us-east-1 --output text \
    --query authorizationData[].authorizationToken | base64 -d | cut -d: -f2

영역을 으로 참고: 내 ~/.aws/config를 설정해야 했습니다.--region us-east-1.

)############AWS 계로 ID ):

docker login -u AWS https://############.dkr.ecr.us-east-1.amazonaws.com/
password: <paste the very long password from above>
email: <I left this blank>

이미지를 test):

docker tag test:latest ############.dkr.ecr.us-east-1.amazonaws.com/test:latest
docker push ############.dkr.ecr.us-east-1.amazonaws.com/test:latest
The push refers to a repository [910732017890.dkr.ecr.us-east-1.amazonaws.com/test] (len: 1)
d5122f58a2e1: Pushed 
7bddbca3b908: Pushed 
latest: digest: sha256:bc0b521fd398bd1a2ef58a289dcb910334608723fd570e7bddb36eacd0060363 size: 4378

사용:

eval $(aws ecr get-login --no-include-email | sed 's|https://||')

밀기 전에

누군가에게 도움이 된다면,

내 문제는 내가 그것을 사용해야 한다는 것이었습니다.--profile옵션을 선택하여 자격 증명 파일의 적절한 프로필로 인증합니다.

다음으로, 나는 생략했습니다.--region [region_name]명령. "기본 인증 자격 증명 없음" 오류가 발생했습니다.

제가 해결할 수 있는 방법은 다음과 같은 명령어를 변경하는 것이었습니다.

aws ecr get-login

대상:

aws --profile [profile_name] ecr get-login --region [region_name]

예:

aws --profile foo ecr get-login --region us-east-1

누군가에게 도움이 되길 바랍니다!

Windows의 wincred 자격 증명 관리자에 알려진 버그가 있습니다.생성된 로그인 명령에서 'https://'을(를) 제거하면 이 문제가 해결됩니다.

docker login -u AWS -p <password> <aws_account_id>.dkr.ecr.<region>.amazonaws.com

대신에

docker login -u AWS -p <password> https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com

문제 해결 페이지도 참조하십시오.

저도 같은 문제를 경험했습니다.

새 AWS 자격 증명(액세스 키)을 생성하고 새 자격 증명으로 AWS CLI를 재구성하여 문제를 해결했습니다.

예상보다 일찍,aws ecr get-login --region us-east-1잘못된 EC 레지스트리 URL을 사용하여 도커 로그인 명령을 생성했습니다.

  1. ECR 레지스트리를 먼저 생성했는지 확인합니다.
    Instructions에 .
  2. 도커 로그인 명령 실행(Mac/Linux의 eval은 잘라낸 후 붙여넣기를 건너뜁니다.
    eval $(aws ecr get-login --region us-east-1)
    --profile multiple AWS AWS 파일 이름 --profile 파일 이름
    eval $(aws ecr get-login --region us-east-1 --profile your-profile)
  3. docker build -t image-name .
  4. docker tag image-name:latest ############.dkr.ecr.us-east-1.amazonaws.com/image-name:latest
  5. docker push ############.dkr.ecr.us-east-1.amazonaws.com/image-name:latest

오류가 발생한 경우 모든 명령을 다시 실행해야 합니다!사용할 자격 증명aws ecr get-login일시적이며 만료됩니다.

PowerShellWindows에서는 다음을 사용합니다.

Invoke-Expression $(aws ecr get-login --no-include-email)

도커 CLI는 기본 IAM 인증 방법을 지원하지 않습니다.도커 밀당당기기 요청을 인증하고 승인하려면 다음 단계를 수행합니다.

단계 - 1

AWS 자격 증명이 제대로 구성되었는지 확인합니다.AWS 자격 증명을 구성하려면 다음 명령을 실행하고 AWS 자격 증명을 지정합니다.

aws configure

단계 - 2

get-login-password(권장)를 사용하여 도커를 Amazon ECR 개인 레지스트리에 인증할 수 있습니다.

Linux 및 msc

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

창문용의

(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.<your region>.amazonaws.com

또는

--get-refix 방법을 사용할 수도 있지만 자격 증명을 표시할 수도 있습니다(권장하지 않음).

리눅스 및 Mac용

$(aws ecr get-login --region <your region> --no-include-email)

창문용의

Invoke-Expression -Command (Get-ECRLoginCommand -Region <your region>).Command

로그인 성공이 완료된 경우 이동할 수 있습니다.그렇지 않으면 오류가 있는 문서를 참조합니다.

단계 - 3

이미지를 재포에 푸시

  1. 이미지 태그 지정

    도커 태그 <aws_account_id>.dkr.dkr..amazonaws.com/my-web-app

  2. 다음 명령을 사용하여 이미지를 푸시합니다.

    도커 푸시 <aws_account_id>.dkr.dkr..amazonaws.com/my-web-app

참고: 토큰 기반 로그인이며 생성된 인증 토큰은 12H에만 유효합니다.

다른 원인으로 이 문제가 발생했습니다.내 AWS 계정과 연결되지 않은 레지스트리(클라이언트의 ECR 레지스트리)에 푸시해야 했습니다.내 ID: IAM ID(": IAM ID")를 탭 아래에 수 했습니다.arn:aws:iam::{AWS ACCT #}:user/{Username} 교장으로서.일반적인 단계로 로그인하려고 했습니다.

$(aws ecr get-login --region us-west-2 --profile profilename)
docker push {Client AWS ACCT #}.dkr.ecr.us-west-1.amazonaws.com/imagename:latest

물론 그 결과는no basic auth credentials알고 보니,aws ecr get-login사용자를 사용자의 로그인과 관련된 레지스트리에 대한 ECR에 로그인합니다. 이는 나중에 생각해 보면 의미가 있습니다.해결책은 다음과 같습니다.aws ecr get-login로그인할 레지스트리를 선택합니다.

$(aws ecr get-login --region us-west-2 --profile profilename --registry-ids {Client AWS ACCT #})

다음에 그이로후.docker push잘 작동합니다.

제 경우에는, 달리기를 한 후에aws ecr get-login --no-include-email --region ***** 그 의 출력을 금 그 로 명 어 형 을 의 습 니 했 다 복 사 식 출 방 력 의 령 로 ▁form ▁the ▁of ▁i▁is 니 습 ▁with 다 했 ▁copied ▁of 방 ▁command 금docker login -u *** -p ************프롬프트에 붙여넣습니다.밀어내기가 진행되었습니다.

방금 업데이트에서 Get-login이 AWS에서 제거되었습니다. 대신 get-login-password를 사용하십시오.

sudo docker login -u AWS -p $(aws ecr get-login-password --region <region> - 
-profile <profile>) <account id>.dkr.ecr.eu-north-1.amazonaws.com 

기본 자격 증명을 사용하는 경우 --profile 플래그를 제거하는 것을 잊지 마십시오.

AWS 문서에는 다음 명령을 실행하도록 나와 있습니다(ap-southern-2 region의 경우).

aws ecr get-login --region ap-southeast-2

제가 이 문제에 부딪혔을 때, 그 문서들을 근거로 당신이 이 명령의 결과를 단말기에 입력하고 실행해야 한다는 것이 명확하지 않았습니다.

제가 할 수 있었던 수정은 결과를 클립보드에 복사하는 것이었습니다.

aws ecr get-login --region ap-southeast-2 | pbcopy

결과를 명령줄에 붙여넣고 실행

다음 명령을 실행한 후:

(aws ecr get-login --no-include-email --region us-west-2)

출력에서 도커 로그인 명령을 실행합니다.

docker login -u AWS -p epJ....

도커가 ECR에 로그인하는 방법입니다.

offaws-cli 에▁the......

로그인을 할 때 키 또는 합니다. 파일: ~/.docker/config.json 파일.

를 를키저경우 아래에 https://7272727.dkr.ecr.us-east-1.amazonaws.com의 서버를 에 키 합니다.7272727.dkr.ecr.us-east-1.amazonaws.com것은 아니다.https://7272727.dkr.ecr.us-east-1.amazonaws.com.

로그인합니다.

eval $(aws ecr get-login --no-include-email --region us-east-1 --profile yourprofile | sed 's|https://||')

명령을 실행하면 다음과 같은 메시지가 표시됩니다.'Login Succeeded'은 좋은 사람이 됩니다.
해야 합니다.

이 오류는 일반적으로 ECR 로그인이 실패한 경우 발생합니다.Windows 시스템을 사용하고 있으며 관리자 모드에서 "Powershell"을 사용하여 ecr에 먼저 로그인했습니다.

Invoke-Expression $(aws ecr get-login --no-include-email)

"Login successed"(로그인 성공)

저는 같은 문제에 직면했고 제가 한 실수는 잘못된 복구 경로를 사용한 것이었습니다.

예:docker push xxxxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/jenkins:latest

위의 경로에서 이것이 제가 실수를 한 곳입니다."dkr.ecr.us-east-1.amazonaws.com""west""를 사용하고 있었습니다.east"일단 제가 실수를 고친 후에, 저는 성공적으로 이미지를 밀어낼 수 있었습니다.

다음 명령은 나에게 유용합니다.

sudo $(aws ecr get-login --region us-east-1 --no-include-email)

그런 다음 다음 명령을 실행합니다.

sudo docker tag e9ae3c220b23(image_id) aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app

sudo docker push aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app

도커 이미지를 ECR에 푸시하는 매우 간단한 방법은 Amazon ECR 도커 자격 증명 도우미입니다.제공된 가이드에 따라 설치하고 업데이트하기만 하면 됩니다.~/.docker/config.json다음과 같이 표시됩니다.

{
    "credsStore": "ecr-login"
}

그리고 당신은 당신의 이미지들을 밀어 넣을 수 있을 것입니다.docker login.

Mac OSX의 경우

TL;DR "auth" 키가 자격 증명 저장소 키와 정확히 일치하는지 확인합니다.

  • 도커 구성을 확인합니다.

cat ~/.docker/config.json

샘플 결과:

{
    "auths": {
        "https://55511155511.dkr.ecr.us-east-1.amazonaws.com": {}
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.5 (darwin)"
    },
    "credsStore": "osxkeychain"
}

"auths" 값은 빈 개체이며 도커가 "osxkeychain" 자격 증명 저장소를 사용하고 있습니다.

  • Mac의 "Keychain Access" 앱을 열고 "Docker Credentials" 이름 찾기

enter image description here

에 하십시오.Where: 취재

  • 다음을 확인합니다.auths 입력 키력~/.docker/config.json는 합니다일과 일치합니다.Where:키 체인 액세스의 필드입니다.

에 약에만.auths가 ~/.docker/config.json 키와 .Where:체인의 에는 키체의필드, 아은마도당신인이 표시될 수 .Login Succeededdocker login...하지만 여전히.ERROR: Service 'web' failed to build: Get https://55511155511.dkr.ecr.us-east-1.amazonaws.com/v2/path/to/image/latest: no basic auth credentials잡아당기려고 할 때.

제 경우에는, 추가해야 했습니다.https://

원래의

    "auths": {
        "55511155511.dkr.ecr.us-east-1.amazonaws.com": {}
    },

고정된.

    "auths": {
        "https://55511155511.dkr.ecr.us-east-1.amazonaws.com": {}
    },

가 나처럼 않는 를 대비하여 것. F 은 F 매뉴얼입니다.
나는 위에서 제안된 모든 단계를 따랐습니다.

aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin 123456789.dkr.ecr.eu-west-1.amazonaws.com

항상 .
다음 이름의 레지스트리를 만들었습니다.

123456789.dkr.ecr.eu-west-1.amazonaws.com/my.registry.com/namespace 

그리고 알파인이라는 이미지를 푸시하려고 했습니다.

123456789.dkr.ecr.eu-west-1.amazonaws.com/my.registry.com/namespace/alpine:latest
2c6e8b76de: Preparing
9d4cb0c1e9: Preparing
1ca55f6ab4: Preparing
b6fd41c05e: Waiting
ad44a79b33: Waiting
2ce3c1888d: Waiting
no basic auth credentials   

전체 컨테이너 경로를 사용하여 ecr에 레지스트리를 만들어야 하므로 저를 대신하여 어리석은 실수입니다.
않고 경로를 하여 새 .

123456789.dkr.ecr.eu-west-1.amazonaws.com/my.registry.com/namespace/alpine

그리고 낮게 그리고 보라 밀어내기.

123456789.dkr.ecr.eu-west-1.amazonaws.com/my.registry.com/namespace/alpine:latest 
The push refers to repository [123456789.dkr.ecr.eu-west-1.amazonaws.com/my.registry.com/namespace/alpine]
0c8667b5b: Pushed
730460948: Pushed
1.0: digest: sha256:e1f814f3818efea45267ebfb4918088a26a18c size: 7

아주 잘 작동합니다.

OSX에서도 이 문제가 발생했습니다.올리버 잘츠부르크의 답변을 보고 ~/.docker/config.json을 확인했습니다.그것은 내가 가지고 있는 다른 AWS 계정의 여러 인증 자격 증명을 가지고 있었습니다.저는 파일을 삭제했고 get-login을 다시 실행한 후에 작동했습니다.

의 올바른 지역을 사용해야 합니다.aws ecr get-login리포지토리가 만들어진 영역과 일치해야 합니다.

여러 AWS 자격 증명(기본 및 개발)이 문제였습니다.개발자에게 배포하려고 했기 때문에 다음과 같이 작동했습니다.

$(aws ecr get-login --no-include-email --region eu-west-1 --profile dev | sed 's|https://||')

FWIW, 데비안 9, 도커 버전 18.06.1-ce, 빌드 e68fc7a:

$(aws ecr get-login | sed 's| -e none | |g')

여러 프로파일을 사용하는 경우 기본 프로파일이 아닌 프로파일에 로그인해야 하는 경우 다음 명령을 사용하여 로그인해야 합니다.

$(AWS_PROFILE=<YOUR PROFILE> aws ecr get-login --no-include-email --region eu-west-1)

언급URL : https://stackoverflow.com/questions/34689445/cant-push-image-to-amazon-ecr-fails-with-no-basic-auth-credentials

반응형