Amazon ECS 컨테이너 에이전트에서 프라이빗 리포지토리 자격 증명을 업데이트하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 9월 24일

환경 변수 또는 AWS Secrets Manager를 통해 제공되는 Amazon Elastic Container Service(Amazon ECS) 컨테이너 에이전트에서 프라이빗 리포지토리 자격 증명을 업데이트하고 싶습니다.

간략한 설명

환경 변수 또는 Amazon ECS 작업 정의의 Secrets Manager를 통해 Amazon ECS 컨테이너 에이전트에 프라이빗 리포지토리 자격 증명을 제공할 수 있습니다. 다음 옵션 중 하나를 선택하십시오.

  • 인스턴스 사용자 데이터 및 환경 변수를 사용하여 프라이빗 리포지토리 자격 증명을 제공하는 경우 환경 변수를 통해 프라이빗 리포지토리 자격 증명 업데이트 섹션의 단계를 따르십시오.
  • Secrets Manager를 사용하여 프라이빗 리포지토리 자격 증명을 제공하는 경우 AWS Secrets Manager로 프라이빗 리포지토리 자격 증명을 업데이트 섹션의 단계를 따르십시오.

​해결 방법

환경 변수를 통해 프라이빗 리포지토리 자격 증명을 업데이트

1.    컨테이너 인스턴스에 연결하십시오.

2.    Amazon ECS 컨테이너 에이전트에 Docker 자격 증명을 제공하는 방법을 찾으려면 다음 명령을 실행하십시오.

$ cat /etc/ecs/ecs.config

이 명령은 /etc/ecs/ecs.config 파일의 내용을 반환합니다.

ECS_ENGINE_AUTH_TYPE 변수의 값이 docker로 설정된 경우, 평문을 통해 Docker 자격 증명을 Amazon ECS 컨테이너 에이전트로 직접 전달하고 있는 것입니다. 계속하려면 평문으로 자격 증명 설정 섹션의 단계를 따르십시오.

변수가 dockercfg로 설정된 경우, Docker 로그인 명령에 의해 생성된 Docker 생성 인증 값으로 Docker 자격 증명을 전달하고 있는 것입니다. 계속하려면 새 Docker 인증 값 얻기 섹션의 단계를 따르십시오.

평문으로 자격 증명 설정

1.    ECS_ENGINE_AUTH_DATA 변수를 업데이트하려면 다음 명령을 실행하십시오.

$ sudo vi /etc/ecs/ecs.config

2.    vi 편집기에서 ECS_ENGINE_AUTH_DATA 변수의 값을 현재 Docker 사용자 이름, 암호 및 평문의 전자 메일 주소로 업데이트하십시오. 예:

ECS_CLUSTER=TestECSCluster
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"user","password":"Password","email":"awsSampleEmail@amazon.com"}}

계속하려면 ECS 컨테이너 에이전트 다시 시작 섹션의 단계를 따르십시오.

새 Docker 인증 값 얻기

1.    Docker에 로컬로 로그인하려면 다음 명령을 실행한 다음, 새 자격 증명을 입력하십시오.

$ docker login

2.    config.json 파일을 연결하려면 다음 명령을 실행한 다음, Docker에서 생성된 인증 키 값을 복사하십시오.

$ cat ~/.docker/config.json

3.    ECS_ENGINE_AUTH_DATA 변수를 업데이트하려면 다음 명령을 실행하십시오.

$ sudo vi /etc/ecs/ecs.config

4.    vi 편집기에서 ECS_ENGINE_AUTH_DATA 변수의 값을 2단계의 Docker 인증 키 값으로 업데이트하십시오. 예:

ECS_CLUSTER=TestECSCluster
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth","a2vpdGhhd3M6UGFzc3dvcmQ="}}

계속하려면 ECS 컨테이너 에이전트 다시 시작 섹션의 단계를 따르십시오.

ECS 컨테이너 에이전트 다시 시작

1.    Amazon ECS 컨테이너 에이전트를 다시 시작하려면 컨테이너 인스턴스가 실행 중인 Amazon 머신 이미지(AMI)를 기반으로 다음 명령 중 하나를 실행하십시오.

Amazon Linux ECS 최적화 AMI:

$ sudo stop ecs && sudo start ecs

Amazon Linux 2 ECS 최적화 AMI:

$ sudo systemctl restart ecs

참고: ECS 클러스터의 다른 컨테이너 인스턴스에서 /etc/ecs/ecs.config 파일을 업데이트하려면 환경 변수를 통해 프라이빗 리포지토리 자격 증명 업데이트 섹션으로 돌아가십시오. 그런 다음, 각 컨테이너 인스턴스에 대한 업데이트 프로세스를 따르십시오.

계속하려면 업데이트된 프라이빗 리포지토리 자격 증명 테스트 섹션의 단계를 따르십시오.

AWS Secrets Manager로 프라이빗 리포지토리 자격 증명 업데이트

1.    Secrets Manager 콘솔을 여십시오.

2.    보안 암호를 입력한 다음 보안 값 검색을 선택하십시오.

3.    편집을 선택하십시오.

4.    프라이빗 레지스트리에 저장된 자격 증명을 업데이트한 다음, 저장을 선택하십시오.

계속하려면 업데이트된 프라이빗 리포지토리 자격 증명 테스트 섹션의 단계를 따르십시오.

업데이트된 프라이빗 리포지토리 자격 증명 테스트

다음 단계에서는 업데이트된 이미지를 클러스터에 배포하는 상황을 가정합니다.

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 클러스터를 선택한 다음, 사용자의 클러스터를 선택하십시오.

3.    사용자의 서비스를 선택한 다음, 업데이트를 선택하십시오.

4.    새 배포 실행 확인란을 선택하십시오.

5.    최소 정상 비율50을 입력하십시오.

6.    설치 마법사의 나머지 단계를 완료한 다음, 서비스 업데이트를 선택하십시오.

7.    서비스 보기를 선택하십시오.

8.    배포 탭에서 새 배포를 확인하십시오 Amazon ECS는 이전 배포에서 작업을 서서히 중단한 다음, 새로운 이미지 가져오기를 시도하면서 새 배포에서 작업을 다시 시작하십시오.

참고: 8단계에서는 클러스터에 롤링 업데이트 배포 유형을 성공적으로 수행하기에 충분한 리소스가 있다고 가정합니다.

9.    작업 탭을 선택한 다음, 개별 작업 및 상태를 확인하십시오.

작업 상태가 실행 중(Running)으로 설정된 경우, 서비스가 오류 없이 성공적으로 이 작업을 업데이트한 것입니다.

작업 상태가 실행 중(CannotPullContainerError)(Running (CannotPullContainerError))으로 설정된 경우, 서비스가 이 작업을 업데이트했지만 오류가 발생한 것입니다. Amazon ECS 컨테이너 에이전트는 새 컨테이너 이미지를 가져올 수 없으며 이전에 캐시된 이미지를 사용하고 있습니다. 자격 증명이 업데이트되었는지 확인한 다음, 다른 서비스 배포 업데이트를 수행하십시오.

참고: 작업의 전체 세부 사항을 표시하고 "pull access denied" 오류를 확인하려면 개별 작업 상태에 대한 드롭다운 화살표를 선택하십시오. 예:

CannotPullContainerError: Error response from daemon: pull access denied for user/reponame, repository does not exist or may require 'docker login'

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?