CloudFormation으로 Elastic Container Registry 저장소 생성

8287 단어 cloudawsdocker

Amazon ECR이란 무엇입니까?



Container Registry는 분산 및 관리를 위한 중앙 집중식 방법입니다container images. Amazon ECR은 단순히 AWS가 제공하는 컨테이너 레지스트리이며 Docker Hub와 마찬가지로 퍼블릭 및 프라이빗 이미지를 생성할 수 있습니다.

아마존 ECR이 필요한 이유



생태계



일부 팀은 모든 서비스를 동일한 생태계에 유지하는 것을 선호합니다. 이 경우 AWS를 사용하면 사용자 액세스를 훨씬 쉽게 관리하고 제어할 수 있습니다. 예를 들어 Kubernetes(컨테이너 오케스트레이션의 사실상의 표준) 대신 Docker Hub 또는 Amazon Elastic Container Service(완전 관리형 컨테이너 오케스트레이션 서비스) 대신 ECR을 사용할 수 있습니다. 대신 Amazon Elastic Kubernetes Service와 함께 AWS에서 Kubernetes를 사용할 수 있습니다.

속도 제한



ECR을 사용하는 다른 이유가 하나 이상 있습니다. 팀에서 무료 Docker Hub를 사용하는 경우 이미지를 AWS CodeBuild와 같은 것으로 가져오는 동안 속도 제한에 부딪힐 수 있습니다. 속도 제한은 익명인 경우 IP 주소당 6시간당 100회 풀로 설정되고 Docker ID가 있는 인증된 사용자의 경우 6시간당 200회 풀로 설정됩니다.


이를 극복하는 가장 저렴한 방법은 이미지를 AWS 계정 ECR에 추가하고 대신 사용하는 것입니다.

ECR 저장소 생성



ECR console에서 수동으로 ECR 저장소를 생성할 수 있지만 여기서는 CloudFormation 방법에 중점을 둘 것입니다.ecr.yml라는 파일을 만들고 그 안에 아래 템플릿을 붙여넣을 수 있습니다.

AWSTemplateFormatVersion: "2010-09-09"

Description: >
  This template creates ECR resources

Parameters:
  IAMUserName:
    Type: String
    Description: IAM User Name
    Default: "YOUR_USER_NAME"
    AllowedPattern: "[a-zA-Z0-9-_]+"
    ConstraintDescription: must be a valid IAM user name  

Resources:
  ECRRepository:
    Type: AWS::ECR::Repository
    Properties:
      RepositoryName: !Ref AWS::StackName
      RepositoryPolicyText:
        Version: "2012-10-17"
        Statement:
          - Sid: "AllowPushPull"
            Effect: Allow
            Principal:
              AWS:
                !Join [
                  "",
                  [
                    "arn:aws:iam::",
                    !Ref AWS::AccountId,
                    ":user/",
                    !Ref IAMUserName
                  ],
                ]
            Action:
              - "ecr:GetDownloadUrlForLayer"
              - "ecr:BatchGetImage"
              - "ecr:BatchCheckLayerAvailability"
              - "ecr:PutImage"
              - "ecr:InitiateLayerUpload"
              - "ecr:UploadLayerPart"
              - "ecr:CompleteLayerUpload"

Outputs:
  ECRRepository:
    Description: ECR repository
    Value: !Ref ECRRepository


위의 템플릿은 리포지토리를 생성하고 YOUR_USER_NAME 매개변수에 지정된 IAM 사용자에게 리포지토리를 사용하는 데 필요한 권한을 증명하는 역할을 합니다. YOUR_USER_NAME를 실제 IAM 사용자 이름으로 바꾸지 않으면 생성에 실패합니다.
템플릿을 배포하려면 다음을 실행합니다.

aws cloudformation deploy --template-file ecr.yml --stack-name ecr-repository --capabilities CAPABILITY_NAMED_IAM --profile default --parameter-overrides IAMUserName=YOUR_USER_NAME


그러면 다음과 유사한 출력이 표시됩니다.


다음을 실행하여 스택 생성 상태를 확인할 수 있습니다.

AWS cloudformation describe-stacks --stack-name ecr-repository


성공적으로 생성된 경우 StackStatusCREATE_COMPLETE로 다음과 유사한 출력을 얻어야 합니다.

기본 프로필이 설정된 지역에서 CloudFormation console을 확인할 수도 있습니다.

그런 다음 ECR 콘솔에 리포지토리가 있어야 합니다.

대청소



예상치 못한 청구를 피하기 위해 필요하지 않은 리소스를 항상 정리하십시오.
저장소를 삭제하려면 다음을 실행하십시오.

aws cloudformation delete-stack --stack-name ecr-repository


스택의 상태를 확인하여 삭제가 성공했는지 확인합니다.

AWS cloudformation describe-stacks --stack-name ecr-repository


다음과 유사한 응답을 받아야 합니다.


확인하려면 AWS 콘솔에서 다시 확인할 수 있습니다.

좋은 웹페이지 즐겨찾기