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를 사용할 수 있습니다.
![](https://s1.md5.ltd/image/db95f17dd560ff5b82120a177ab2bc86.jpg)
속도 제한
ECR을 사용하는 다른 이유가 하나 이상 있습니다. 팀에서 무료 Docker Hub를 사용하는 경우 이미지를 AWS CodeBuild와 같은 것으로 가져오는 동안 속도 제한에 부딪힐 수 있습니다. 속도 제한은 익명인 경우 IP 주소당 6시간당 100회 풀로 설정되고 Docker ID가 있는 인증된 사용자의 경우 6시간당 200회 풀로 설정됩니다.
![](https://s1.md5.ltd/image/326fd4d02b751eb5bd6b4fbeca6a852e.png)
이를 극복하는 가장 저렴한 방법은 이미지를 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
그러면 다음과 유사한 출력이 표시됩니다.
![](https://s1.md5.ltd/image/aef2c20805f58b03ea8fdd300239152b.png)
다음을 실행하여 스택 생성 상태를 확인할 수 있습니다.
AWS cloudformation describe-stacks --stack-name ecr-repository
성공적으로 생성된 경우
StackStatus
의 CREATE_COMPLETE
로 다음과 유사한 출력을 얻어야 합니다.![](https://s1.md5.ltd/image/3d3673792738fa68b5b0459e6dbd507d.png)
기본 프로필이 설정된 지역에서 CloudFormation console을 확인할 수도 있습니다.
![](https://s1.md5.ltd/image/774744ed5dd360def35be46878cb6dca.png)
그런 다음 ECR 콘솔에 리포지토리가 있어야 합니다.
![](https://s1.md5.ltd/image/dcefa5b81c6cb64a4b15c9c857059c05.png)
대청소
예상치 못한 청구를 피하기 위해 필요하지 않은 리소스를 항상 정리하십시오.
저장소를 삭제하려면 다음을 실행하십시오.
aws cloudformation delete-stack --stack-name ecr-repository
스택의 상태를 확인하여 삭제가 성공했는지 확인합니다.
AWS cloudformation describe-stacks --stack-name ecr-repository
다음과 유사한 응답을 받아야 합니다.
![](https://s1.md5.ltd/image/638f370fb66bd35e89edf06399a81e04.png)
확인하려면 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.)