CloudFormation으로 Elastic Container Registry 저장소 생성
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
성공적으로 생성된 경우
StackStatus
의 CREATE_COMPLETE
로 다음과 유사한 출력을 얻어야 합니다.기본 프로필이 설정된 지역에서 CloudFormation console을 확인할 수도 있습니다.
그런 다음 ECR 콘솔에 리포지토리가 있어야 합니다.
대청소
예상치 못한 청구를 피하기 위해 필요하지 않은 리소스를 항상 정리하십시오.
저장소를 삭제하려면 다음을 실행하십시오.
aws cloudformation delete-stack --stack-name ecr-repository
스택의 상태를 확인하여 삭제가 성공했는지 확인합니다.
AWS cloudformation describe-stacks --stack-name ecr-repository
다음과 유사한 응답을 받아야 합니다.
확인하려면 AWS 콘솔에서 다시 확인할 수 있습니다.
Reference
이 문제에 관하여(CloudFormation으로 Elastic Container Registry 저장소 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/femilawal/creating-an-elastic-container-registry-repo-with-cloudformation-f5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)