docker-compose + AWS ECR(azon Elastic Container Registry) AWS CLI의 다중 계정 관리 정보

AWS CLI 계정 관리


  • AWS ECR에 Docker image를 푸시하려고 할 때 회사용과 개인용 계정 관리하는 것이 조금 어려웠기 때문에 메모
  • 결론:
    로컬 ~/.aws/credentials 파일로 관리

  • docker-compose를 사용하여 ECR에 이미지를 푸시 할 때 조금 어색했기 때문에 메모
  • 결론:
    여러 번 분할하여 이미지를 푸시해야합니다


  • ※ AWS CLI2가 설치되어 있는 전제

    참고:
    이 기사에서 많은 것을 알았으므로 인용하겠습니다.
    awscli 설정 전환

    AWS CLI에서 여러 계정 관리



    모치베



    회사에서도 AWS 계정을 사용하고 있지만, 개인 개발에서도 ECR에 push하고 싶다. 하지만 push하려고하면 그 회사 계정으로 push 할 수 없습니다! 적인 오류가 나온다.

    계정 관리



    다음 파일은 이러한 방식으로 두 가지 이상의 계정을 관리합니다.

    최종적으로 이 파일이 이하와 같은 형태가 되어 있으면 좋기 때문에 vim로 써도 좋다고 생각한다.
    이 기사에서는 다른 방법을 소개하고 있다.

    ~/.aws/credentials
    [default]
    aws_access_key_id=***********AI
    aws_secret_access_key=**************************hi
    region = ap-northeast-1
    
    [profile test-user]
    aws_access_key_id = ************HI
    aws_secret_access_key = *************************3MA
    region=us-west-2
    

    ~/.aws/credentials에 새 계정을 등록하는 방법



    공식 사이트에 실려 있었기 때문에 그쪽을 기재
    참고 : htps : // / cs. 아 ws. 아마존. 이 m/그럼_jp/cぃ/ぁてst/うせrぐいで/cぃーこんふぃぐれーふぃぇs. HTML


    $ aws configure
    

    그렇다면 (AWS CLI가 이미 설치되어 있으면) Access Key나 Secret Access Key를 표준 입력으로 요구하므로 IAM을 작성했을 때 표시되는 key를 입력한다.

    Default region name, Default output format에 대해서는 임의의 값을.

    위 작업이 끝난 후
    $ cat ~/.aws/credentials
    

    라든지로 확인해 보면 새로운 정보가 추가되어 있을 것.

    키 저장



    새롭게 IAM을 작성했을 때는, IAM의 작성 완료 화면에서 aws_access_key_id, aws_secret_access_key의 2개가 발행되어 new_account_credentials.csv

    ecr에 push 할 때의 권한



    ecr에 push할 때는 각각 개인마다 IAM을 작성하여 ecr에 push할 수 있는 권한을 붙여 push할 수 있도록 한다
    푸시 할 수있는 권한은 여기
    AmazonEC2ContainerRegistryFullAccess
    AmazonEC2ContainerRegistryPowerUser
    AmazonEC2ContainerRegistryReadOnly
    

    참고:
    htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마조네 CR / ㅁ st / 우세 r 구이데 / 에cr_ 마나게 d_ 뽀시에 s. HTML

    계정 전환


    export AWS_DEFAULT_PROFILE=test-user
    

    부터
    aws s3 list
    


    aws ecr get-login
    등 임의의 로그인 명령 등을 실행
    test-user 는 [default] 등으로 둘러싸인 ~/.aws/credentials 파일의 값을 입력합니다.

    이곳에서도 할 수있는 것 같습니다.


    aws s3 list --profile test-user
    

    docker-compose + ECR



    글쎄, 여기는 쉽게.
    몰랐기 때문에 기재하지만, Docker image를 ECR에 push할 때는 aws cli를 올바른 계정으로 전환한 후 아래의 커맨드를 실행하면 push할 수 있다.

    하지만 docker-compose의 경우 어떻게해야합니까? ?
    라고 생각했으므로 조금 조사해 보았지만, 별로 정보 없었다. . . (3분 정도밖에 조사하지 않았지만)

    결론
    docker-compose의 경우는 단번에 복수의 image를 만들기 때문에 여러 번 push 작업을 할 필요가 있다.
    어쩌면 다른 방법이 있을지도 모르기 때문에 알고 계시다면 알려주세요.

    그래서 예를 들어
    이런 느낌의 환경을 Docker에 올릴 때는 api-server, db-server(Model), mysql의 3개의 image를 docker-compose로 만들 필요가 있다.



    이 경우 각 서비스마다 ECR로 리포지토리를 작성하여 각 환경에 push하도록 한다.

    조금 귀찮기 때문에 더 좋은 방법, 편한 스크립트라든지 쓰면 좋은 것일까? 라고는 생각하지만 모르겠습니다.
    # タグをつける
    $ docker tag hello-world:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
    
    # ECRにpushする
    $ docker push aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
    

    산출:
    The push refers to a repository [aws_account_id.dkr.ecr.us-east-1.amazonaws.com/hello-world] (len: 1)
    e9ae3c220b23: Pushed
    a6785352b25c: Pushed
    0998bf8fb9e9: Pushed
    0a85502c06c9: Pushed
    latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
    

    참고 : htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마조네 CR / ㅁ st / 우세 r 굿이 / 껄껄 gs r r dc ぃ. HTML

    이상.

    좋은 웹페이지 즐겨찾기