프라이빗 Elastic Beanstalk 환경 네트워크 구성의 VPC 엔드포인트 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

완전 프라이빗 AWS Elastic Beanstalk 환경의 네트워킹 문제를 해결하고 싶습니다.

간략한 설명

완전 프라이빗 환경은 다음과 같이 설정되며동일한 Amazon Virtual Private Cloud(VPC) 내에서만 웹 애플리케이션에 액세스할 수 있습니다.

  • 로드 밸런서 가시성: 프라이빗
  • 로드 밸런서 서브넷: 두 서브넷 모두 프라이빗
  • 인스턴스 퍼블릭 IP: 비활성화됨
  • 인스턴스 서브넷: 두 서브넷 모두 프라이빗

VPC 전반의 모든 통신은 구성된 VPC 엔드포인트를 통해 이루어집니다. 또한 VPC 내의 모든 통신은 라우팅 테이블의 로컬 경로를 통해 이루어집니다. 다음은 네트워킹 구성으로 인해 환경에서 발생할 수 있는 일반적인 오류입니다.

  • Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 Elastic Beanstalk와 통신하지 못했습니다. 통신 실패는 VPC의 구성 문제 또는 실패한 EC2 인스턴스로 인해 발생합니다. VPC 구성을 확인하고 환경을 다시 시작해 보세요.
  • 인스턴스가 허용된 명령 제한 시간 내에 응답하지 않았습니다.

해결 방법

완전 프라이빗 Elastic Beanstalk 환경을 만들 때는 구성을 다음과 같이 설정했는지 확인합니다.

  • 서로 다른 가용 영역에 2개 이상의 프라이빗 서브넷이 있는 VPC가 있어야 합니다.
  • VPC에 DNS 호스트 이름과 DNS 확인이 활성화되어 있어야 합니다. 이러한 기능을 활성화하면 퍼블릭 서비스 엔드포인트를 인터페이스 VPC 엔드포인트에 매핑하는 DNS 항목이 VPC에 추가됩니다.
  • VPC 외부의 AWS 서비스와 VPC 내부의 인스턴스가 이러한 엔드포인트를 통해 통신할 수 있도록 VPC 엔드포인트를 생성해야 합니다.

VPC 엔드포인트 확인

표준 Elastic Beanstalk 환경에는 성공적인 생성을 위해 다음과 같은 VPC 엔드포인트가 있어야 합니다.

  • com.amazonaws.your-region.elasticbeanstalk(Elastic Beanstalk 인터페이스 엔드포인트)
  • com.amazonaws.your-region.elasticbeanstalk-health(Elastic Beanstalk 상태 인터페이스 엔드포인트)
  • com.amazonaws.your-region.cloudformation(AWS CloudFormation 인터페이스 엔드포인트)
  • com.amazonaws.your-region.logs(로그 인터페이스 엔드포인트)
  • com.amazonaws.your-region.sqs(Amazon Simple Queue Service(Amazon SQS) 인터페이스 엔드포인트)
  • com.amazonaws.your-region.s3(Amazon Simple Storage Service(S3) 게이트웨이 엔드포인트)

64비트 Amazon Linux 2에서 실행되는 Docker 플랫폼의 실행 환경에는 다음과 같은 추가 VPC 엔드포인트가 있어야 합니다.

  • com.amazonaws.your-region.ecr.dkr
  • com.amazonaws.your-region.ecr.api

64비트 Amazon Linux 2에서 실행되는 Amazon Elastic Container Service(Amazon ECS) 플랫폼의 실행 환경에는 다음과 같은 추가 VPC 엔드포인트가 있어야 합니다.

  • com.amazonaws.your-region.ecs
  • com.amazonaws.your-region.ecr.api
  • com.amazonaws.your-region.ecr.dkr

참고: Docker 및 Multi-Docker 환경이 제대로 작동하도록 하려면 프라이빗 도커 이미지를 제공하세요.

보안 그룹 확인

인터페이스 VPC 엔드포인트를 생성할 때는 VPC 엔드포인트의 서브넷과 보안 그룹을 선택해야 합니다. 적절한 인바운드 규칙이 있는 프라이빗 서브넷과 보안 그룹을 선택해야 합니다.

인터페이스 VPC 엔드포인트에 연결된 보안 그룹에는 포트 443(HTTPS)에 대한 인바운드 규칙이 있어야 합니다.

인바운드 규칙:

유형프로토콜포트 범위소스
HTTPSTCP443클라이언트의 IP 주소(참고 참조)

참고: VPC 엔드포인트를 통해 들어오는 트래픽을 보호하려면 소스에서 클라이언트의 IP 주소 또는 네트워크만 지정하는 것이 좋습니다.

또한 인스턴스에 연결된 보안 그룹이 로드 밸런서 보안 그룹의 HTTP 트래픽을 허용하는지 확인합니다.

인바운드 규칙:

유형프로토콜포트 범위소스
HTTPTCP80로드 밸런서의 보안 그룹

로드 밸런서와 연결된 보안 그룹이 인바운드 규칙의 모든 HTTP 트래픽을 허용하는지 확인합니다.

인바운드 규칙:

유형프로토콜포트 범위소스
HTTPTCP800.0.0.0/0

참고: 이전 보안 그룹에서는 송신 트래픽을 제한할 필요가 없습니다.

라우팅 테이블 항목 확인

게이트웨이 엔드포인트를 생성할 때 라우팅 테이블을 선택할 수 있습니다. VPC의 프라이빗 서브넷과 연결된 라우팅 테이블을 선택해야 합니다. 프라이빗 서브넷과 연결된 라우팅 테이블에는 각 게이트웨이 VPC 엔드포인트에 대한 경로가 있어야 합니다. 예를 들어, Amazon Simple Storage Service(S3) 또는 Amazon DynamoDB와 연결된 각 게이트웨이 VPC 엔드포인트에 대한 경로가 있어야 합니다.

라우팅 테이블 항목:

대상타겟
172.xx.x.0/16로컬
pl-63a5xxxvpce-04xxx

VPC 엔드포인트 정책 확인

VPC 엔드포인트 정책에서 Elastic Beanstalk 환경이 서비스와 비공개로 통신할 수 있도록 허용해야 합니다. 인터페이스 또는 게이트웨이 엔드포인트를 생성할 때 엔드포인트 정책을 연결할 수 있습니다. 엔드포인트 정책은 어떤 AWS 보안 주체가 VPC 엔드포인트를 사용하여 엔드포인트 서비스에 액세스할 수 있는지를 제어합니다. AWS 보안 주체에는 AWS 계정, AWS Identity and Access Management(IAM) 사용자, IAM 역할이 포함됩니다. 엔드포인트를 생성할 때 엔드포인트 정책을 지정하지 않으면 기본적으로 엔드포인트에 전체 액세스 권한이 부여됩니다.

다음은 Elastic Beanstalk로 작업할 때 S3 엔드포인트에 필요한 최소한의 S3 게이트웨이 VPC 엔드포인트 정책 샘플입니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EBBucketAccess",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject",
                "s3:PutBucketPolicy",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-*",
                "arn:aws:s3:::elasticbeanstalk-*/*",
                "arn:aws:s3:::cloudformation*/*"
            ]
        }
    ]
}

관련 정보

인터페이스 VPC 엔드포인트를 사용하여 AWS 서비스에 액세스

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠