Amazon ECR 레지스트리에 요청하기

Amazon ECR 레지스트리에 요청하기

IPv4 전용 엔드포인트 또는 이중 스택(dual-stack, IPv4 및 IPv6) 엔드포인트를 사용해 Amazon ECR 프라이빗 레지스트리에서 OCI 이미지, Docker 이미지, OCI 호환 아티팩트를 push, pull, 삭제, 조회, 관리할 수 있습니다. IPv4 네트워크에서 요청하려면 이중 스택 또는 IPv4 엔드포인트를 사용할 수 있습니다. IPv6 네트워크에서 요청하려면 이중 스택 엔드포인트를 사용하세요. Amazon ECR 퍼블릭 레지스트리에 IPv4 및 이중 스택 엔드포인트로 요청하는 방법에 대한 자세한 내용은 Making requests to Amazon ECR Public registries를 참조하세요. IPv6로 Amazon ECR에 접근하는 데는 추가 비용이 없습니다. 요금에 대한 자세한 내용은 Amazon Elastic Container Registry pricing을 참조하세요.

출처: 문서

본문

Amazon ECR 엔드포인트는 IPv4 전용 엔드포인트 또는 이중 스택 엔드포인트 지원 외에도 속성으로 지정됩니다. 이러한 속성에는 다음이 포함될 수 있습니다.

  • 리전 (Region) – 각 엔드포인트는 특정 리전에 한정됩니다.
  • 유형 (Type) – 엔드포인트 선택은 AWS SDK를 사용하는지 또는 OCI 호환 및 Docker 명령줄 인터페이스를 사용하는지에 따라 달라집니다.
  • 보안 (Security) – 일부 리전에서 Amazon ECR은 FIPS 규격 엔드포인트를 제공합니다. FIPS 규격 Amazon ECR 엔드포인트 목록에 대한 자세한 내용은 Federal Information Processing Standard (FIPS) 140-3을 참조하세요.

AWS CLI와 AWS SDK에서 Amazon ECR API 호출을 처리하는 IPv4, 이중 스택, Docker, OCI 클라이언트가 지원하는 서비스 엔드포인트에 대한 자세한 내용은 Service endpoints를 참조하세요.

IPv6로 요청 시작하기

IPv6로 Amazon ECR 레지스트리에 요청하려면 이중 스택 엔드포인트를 사용해야 합니다. IPv6로 Amazon ECR 레지스트리에 접근하기 전에 다음 요구 사항을 확인하세요.

  • 클라이언트와 네트워크가 IPv6를 지원해야 합니다.
  • Amazon ECR은 IPv6에서 다음 요청 유형을 지원합니다.
    • OCI 및 Docker 클라이언트 요청: <registry-id>.dkr-ecr.<aws-region>.on.aws
    • AWS API 요청: ecr.<aws-region>.api.aws
  • 소스 IP 주소 필터링을 사용하는 AWS Identity and Access Management(IAM) 또는 레지스트리 정책을 IPv6 주소 범위를 포함하도록 업데이트해야 합니다.
  • IPv6를 사용하면 서버 액세스 로그에 원격 IP 주소가 IPv6 형식으로 표시됩니다. 기존 도구, 스크립트, 소프트웨어를 업데이트해 이러한 IPv6 형식 IP 주소를 구문 분석하세요.

참고

로그 파일의 IPv6 주소 존재와 관련된 문제가 발생하면 AWS Support에 문의하세요.

IP 주소 호환성 테스트

Linux/Unix 또는 Mac OS X을 사용한다면 다음 예처럼 curl 명령을 사용해 이중 스택 엔드포인트에 IPv6로 접근할 수 있는지 테스트할 수 있습니다.

예제

curl --verbose https://ecr.us-west-2.api.aws

다음 예와 유사한 정보가 반환됩니다. IPv6로 연결되면 연결된 IP 주소는 IPv6 주소입니다.

* About to connect() to ecr.us-west-2.api.aws port 443 (#0)
* Trying IPv6 address... connected
* Connected to ecr.us-west-2.api.aws (IPv6 address) port 443 (#0)
> Host: ecr.us-west-2.api.aws
* Request completely sent off

Microsoft Windows 7 또는 Windows 10을 사용한다면 다음 예처럼 ping 명령을 사용해 이중 스택 엔드포인트에 IPv4 또는 IPv6로 접근할 수 있는지 테스트할 수 있습니다.

ping ecr.us-west-2.api.aws

이중 스택 엔드포인트를 사용한 IPv6 요청

이중 스택 엔드포인트를 사용해 IPv6로 Amazon ECR API 호출을 할 수 있습니다. IPv4를 사용하든 IPv6를 사용하든 Amazon ECR API 작업의 기능과 성능은 동일하게 유지됩니다.

AWS Command Line Interface(AWS CLI)와 AWS SDK를 사용할 때는 파라미터나 플래그로 이중 스택 엔드포인트로 전환하거나, config 파일에서 기본 Amazon ECR 엔드포인트를 재정의하도록 이중 스택 엔드포인트를 직접 지정해 IPv6를 활성화할 수 있습니다. 또한 명령을 사용해 구성 변경을 할 수 있으며, 이는 기본 프로필에서 use_dualstack_endpoint를 true로 설정합니다. use_dualstack_endpoint에 대한 자세한 내용은 Dual-stack and FIPS endpoints를 참조하세요.

예제: 명령을 사용한 구성 변경

aws configure set default.ecr.use_dualstack_endpoint true

예제: AWS CLI를 사용한 IPv6 요청

aws ecr describe-repositories --region us-west-2 --endpoint-url https://ecr.us-west-2.api.aws

docker CLI에서 Amazon ECR 엔드포인트 사용하기

Amazon ECR 리포지토리에 로그인하고 이미지에 태그를 지정한 후에는 OCI 이미지와 Docker 이미지를 Amazon ECR 레지스트리로 push하고 pull할 수 있습니다. 다음 예는 이중 스택 엔드포인트에서 docker push 및 docker pull 명령을 보여줍니다.

예제: IPv4 엔드포인트를 사용한 Docker 이미지 push

docker push <registry-id>.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag

예제: 이중 스택 엔드포인트를 사용한 Docker 이미지 push

docker push <registry-id>.dkr-ecr.us-west-1.on.aws/my-repository:tag

예제: IPv4 엔드포인트를 사용한 Docker 이미지 pull

docker pull <registry-id>.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag

예제: 이중 스택 엔드포인트를 사용한 Docker 이미지 pull

docker pull <registry-id>.dkr-ecr.us-west-1.on.aws/my-repository:tag

IAM 정책에서 IPv6 주소 사용하기

IPv6로 레지스트리에 접근하기 전에 IP 주소 필터링을 사용하는 IAM 사용자 및 Amazon ECR 레지스트리 정책에 IPv6 주소 범위가 포함되도록 하세요. IP 주소 필터링 정책이 IPv6 주소를 처리하도록 업데이트되지 않으면 클라이언트가 IPv6를 사용하기 시작할 때 레지스트리에 대한 접근을 잘못 잃거나 얻을 수 있습니다. IAM으로 액세스 권한을 관리하는 방법에 대한 자세한 내용은 Identity and Access Management for Amazon Elastic Container Registry를 참조하세요.

IP 주소를 필터링하는 IAM 정책은 IP Address Condition Operators를 사용합니다. 다음 레지스트리 정책 예는 IP 주소 조건 연산자를 사용해 허용된 IPv4 주소의 54.240.143.* 범위를 식별하는 방법을 보여줍니다. 이 범위 밖의 IP 주소는 레지스트리(exampleregistry)에 대한 접근이 거부됩니다. 모든 IPv6 주소는 허용 범위 밖에 있으므로 이 정책은 IPv6 주소가 exampleregistry에 접근하는 것을 방지합니다.

JSON

{
  "Version":"2012-10-17",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "ecr:*",
      "Resource": "arn:aws:ecr:*:*:repository/exampleregistry/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.0/24"}
      } 
    } 
  ]
}

IPv4(54.240.143.0/24)와 IPv6(2001:DB8:1234:5678::/64) 주소 범위를 모두 허용하려면 다음 예와 같이 레지스트리 정책의 Condition 요소를 수정합니다. 이 Condition 블록 형식을 사용해 IAM 사용자 및 레지스트리 정책을 모두 업데이트할 수 있습니다.

       "Condition": {
         "IpAddress": {
            "aws:SourceIp": [
              "54.240.143.0/24",
               "2001:DB8:1234:5678::/64"
            ]
         }
       }

중요

IPv6를 사용하기 전에 IP 주소 필터링을 사용하는 모든 관련 IAM 사용자 및 레지스트리 정책을 업데이트해야 합니다. 레지스트리 정책에서 IP 주소 필터링을 사용하는 것을 권장하지 않습니다.

IAM 콘솔(https://console.aws.amazon.com/iam/)에서 IAM 사용자 정책을 검토할 수 있습니다. IAM에 대한 자세한 내용은 IAM User Guide를 참조하세요.

더 알아보기 (Learn more)

  • Amazon ECR 서비스 엔드포인트
  • Amazon ECR 프라이빗 레지스트리
  • Amazon ECR IAM 액세스