이번 게시글에서는 ECS 배포중에 발생한 ResourceInitializationError: unable to pull secrets or registry auth... 오류를 해결한 과정을 작성하겠다.
발생한 오류이다. 이 오류는 Private Subnet 환경에 위치한 ECS Fargate 또는 퍼블릭 IP를 사용하지 않는 ECS Fargate가 ECR의 Docker 이미지를 pull할 수 없기 때문에 발생한다.
발생한 오류를 해결하는 방안은 아래와 같이 3가지가 있다.
사진과 같이 VPC Endpoint를 설정하는 것이다. VPC Endpoint는 Private 네트워크에 있는 인스턴스에서 VPC 외부의 AWS 서비스와 통신이 필요한 경우 사용한다.
다른 방법으로는 NAT Gateway를 구성하는 것이다. NAT 게이트웨이는 NAT(네트워크 주소 변환) 서비스이다. 프라이빗 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있도록 해준다.
마지막 방법으로는 Fargate 태스크에 퍼블릭 IP를 할당하는 것이다. 사실 이 오류는 보안적인 이유로 Private Subnet을 사용하려다가 발생한 경우가 많다. 퍼블릭 IP를 사용하게 되면 Task가 Public Subnet에 위치하게 되므로, 보안 측면에서는 덜 선호되는 방법이다.