VPC 외부에서 OpenSearch Dashboards에 엑세스하는 방법

3분 분량
콘텐츠 수준: 기초
1

내 Amazon OpenSearch Service 클러스터는 Virtual Private Cloud(VPC)에서 실행됩니다. 이 VPC 외부에서 OpenSearch Dashboards 엔드포인트에 액세스하고 싶습니다.

해결 방법

다음 설명에서 대시보드 엔트포인트를 이용할 때 다음 사항에 유의해야 합니다.

  • Amazon OpenSearch Service 도메인이 OpenSearch Service 버전 1.0 이상을 실행하면 _dashboards 엔드포인트를 사용합니다.
  • Amazon OpenSearch Service 도메인이 Elasticsearch versions 5.x~7.x를 실행하면 _plugin/kibana 엔드포인트를 사용합니다.

VPC 외부에서 OpenSearch Dashboards에 접속하려면 이러한 방법 중 하나를 따르세요.

  1. 동일한 VPC 환경 내 Amazon EC2 Windows 인스턴스 사용

    • 동일한 VPC 환경에서 Amazon EC2 Windows 인스턴스에 접속하여 OpenSearch 콘솔창의 OpenSearch Dashboard URL (VPC)를 이용하여 EC2내의 브라우저에서 OpenSearch 대시보드에 접속합니다.
  2. 동일한 VPC 환경 내 Amazon EC2 Linux 인스턴스 사용

    • 다음의 두 가지 방법중 하나를 선택하실 수 있습니다.
      • SSH 터널링을 통한 접속
      • NGINX 프록시를 통한 접속

위의 두가지를 하기전에 우선적으로, VPC 의 Security Group에서 EC2를 위해 다음 구성을 inbound rule에 추가합니다.

TypeProtocolPort RangeSource
SSHTCP22your-cidr-block
HTTPTCP80your-security-group-id
HTTPSTCP443your-security-group-id

또한 OpenSearch를 위해 다음과 같이 Security Group 구성에 Outbound rule을 추가합니다.

TypeProtocolPort RangeSource
All trafficAllAllEC2 인스턴스의 프라이빗 IP

EC2 인스턴스의 프라이빗 IP와 퍼블릭 IP 위치는 다음의 EC2 콘솔 화면의 예에서 확인하세요. 여기에 이미지 설명 입력

SSH 터널링을 통한 접속

동일한 VPC 환경내의 Amazon EC2 Linux 인스턴스에 접속합니다.

$ ssh -i <EC2 private key pem 파일> ec2-user@<public ip주소> -N -L 9200:<vpc 엔드포인트 URL중 vpc~.com>:443

위 터미널을 열어놓은 상태로 로컬 PC 내의 브라우저에서 https://localhost:9200/_plugin/kibana/ 또는 https://localhost:9200/_dashboards/ 를 통해 OpenSearch 대시보드에 접속합니다.

NGINX 프록시를 통한 접속

  1. EC2에 nginx를 설치하세요.
$ sudo amazon-linux-extras install nginx1
  1. nginx.conf 파일내용 중 OpenSearch Domain Endpoint로 redirect 되도록 다음과 같이 설정을 추가합니다.
$ sudo vim /etc/nginx/nginx.conf
server {
  listen  80;
  listen  [::]:80;
  server_name  localhost;
               
  location ^~ /_dashboards {
    proxy_pass https://<your-es-cluster-vpc-endpoint>; # OpenSearch Domain endpoint를 하기 스크린샷 참고하여 입력합니다.
  }
}

콘솔 화면 예) Domain endpoint (VPC) 위치 Domain endpoint (VPC) 위치 사진

  1. 만약 Fine-Grained Access Control을 활성화 했을 시 다음과 같이 추가합니다.
server {
  listen       443 ssl;
  listen       [::]:443 ssl;
  server_name  localhost;
  ssl_certificate           /etc/nginx/cert.crt;
  ssl_certificate_key       /etc/nginx/cert.key;
  ssl_session_cache  builtin:1000  shared:SSL:10m;
  ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
  ssl_prefer_server_ciphers on;
               
  location ^~ /_dashboards {
    proxy_pass https://<your-es-cluster-vpc-endpoint>; # OpenSearch Domain endpoint를 상기 스크린샷에서 확인하여 입력합니다.
  }
}
  • (선택 사항) 자체 서명된 인증서로 테스트 환경을 사용하는 경우 OpenSSL x509 명령을 사용하여 프라이빗 키를 생성합니다.
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt
  • 이 명령 구문은 자체 서명된 SSL 인증서의 프라이빗 키인 cert.key를 생성합니다.
  1. NGINX 서비스를 구동합니다.
$sudo service nginx start

NGINX 가 이미 구동되어 있는 경우 다음의 명령어를 이용하여 재시작을 합니다.

$ sudo systemctl restart nginx.service

로컬브라우저를 통해 다음 URL을 통해 OpenSearch 대시보드로 접속합니다.

  • http://<ec2-public-ip>/_plugin/kibana 또는 http://<ec2-public-ip>/_dashboards/

관련 정보

Launching your Amazon OpenSearch Service domains within a VPC - Testing VPC domains

Amazon Cognito 인증을 사용해 VPC 외부에서 OpenSearch Dashboards에 액세스하려면 어떻게 해야 하나요?

Amazon Cognito 인증을 사용하는 VPC 외부에서 NGINX 프록시를 사용하여 OpenSearch 대시보드에 액세스하려면 어떻게 해야 합니까?

profile pictureAWS
지원 엔지니어
게시됨 8달 전789회 조회