Amazon VPC를 사용하면 논리적으로 분리된 가상 네트워크인 Virtual Private Cloud(VPC)를 정의할 수 있다.

VPC에서 AWS 리소스를 시작할 수 있고 VPC의 리소스에서 외부의 리소스에 연결하도록 허용할 수 있다.

여기서는 Private Subnet의 ECS 인스턴스에서 ECR에 접근하여 이미지를 가져올 수 있도록 하는 것을 목표로 한다.

Security Group 단계를 수행하지 않았다면 보안 그룹 생성을 마치고 와주세요.

AWS PrivateLink 개념 - Amazon Virtual Private Cloud

Amazon ECR 인터페이스 VPC 엔드포인트(AWS PrivateLink) - Amazon ECR

Amazon ECS와 Amazon ECR의 AWS PrivateLink 설정 방법 | Amazon Web Services


443 포트 인바운드 설정

문서에도 써있지만 Endpoint에 설정한 보안 그룹은 443 포트 인바운드를 열어주어야 한다.

dev-sg-ecs-nestjs-guide-api 의 443 포트 인바운드 규칙을 편집하자.

VPC 에서 dev-vpc 의 CIDR을 10.0.0.0/16 으로 하였으니 소스를 VPC로 한정해주자.

Untitled


ECR Endpoint 생성

[VPC] - [Endpoint] 에서 [엔드포인트 생성] 버튼을 누른다.

Untitled

[이름 태그]dev-endpoint-head-ecr-api 로 정했다.

[서비스 범주][AWS 서비스] 로 한다.

[서비스] 에서 ecr 로 검색해서 아래 두 가지 서비스에 대해 엔드포인트를 만들어야 한다.

중복 선택이 되지 않으므로 엔드포인트 2개를 생성해야 한다.

[VPC] 는 앞서 만든 dev-vpc 를 선택했다.

[DNS 이름 활성화] 는 자동으로 선택되어 있어서 일단 켜두었다.

이미지의 설명대로 **[VPC]**에서 [DNS 호스트 이름 활성화][DNS 지원 활성화] 를 켜주어야 한다.

[서브넷] 은 각 AZ마다 Private Subnet을 선택해준다.

[보안 그룹]dev-sg-ecs-nestjs-guide-api 를 선택했다.

[정책] 이 이미지 아래쪽에 또 있는데 여기서는 따로 설정하지 않는다.

아마 보안을 위해 나중에는 설정하면 좋을 것 같지만, 지금은 거기까지 안해도 될 듯 하다.

[엔드포인트 생성] 버튼을 눌러서 마무리하고, dkr 을 위해 하나 더 생성하자.

Untitled

최종적으로는 다음과 같이 될 것이다.

처음에는 [상태][대기 중] 이니 잠시 활성화를 기다렸다가 사용하자.

Untitled


S3 Endpoint 생성

Amazon ECR은 S3에 이미지 계층을 저장하기 때문에 게이트웨이 엔드포인트가 필요하다.

[이름 태그]dev-endpoint-head-s3 로 정했다.

[서비스 범주][AWS 서비스] 로 한다.

[서비스] 에서 s3 로 검색하여 com.amazonaws.ap-northeast-2.s3 를 선택한다.

[유형][Gateway] 인 것을 선택하라.

[라우팅 테이블] 은 Private의 것을 선택했다.

[정책] 설정으로 보안을 높이는데, 문서를 따라 넣었다.

{
	"Statement": [
		{
			"Sid": "Access-to-specific-bucket-only",
			"Principal": "*",
			"Action": [
				"s3:GetObject"
			],
			"Effect": "Allow",
			"Resource": [
				"arn:aws:s3:::prod-region-starport-layer-bucket/*"
			]
		}
	]
}

Untitled


CloudWatch Endpoint 생성