내 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에 접속하려면 이러한 방법 중 하나를 따르세요.
-
동일한 VPC 환경 내 Amazon EC2 Windows 인스턴스 사용
- 동일한 VPC 환경에서 Amazon EC2 Windows 인스턴스에 접속하여 OpenSearch 콘솔창의 OpenSearch Dashboard URL (VPC)를 이용하여 EC2내의 브라우저에서 OpenSearch 대시보드에 접속합니다.
-
동일한 VPC 환경 내 Amazon EC2 Linux 인스턴스 사용
- 다음의 두 가지 방법중 하나를 선택하실 수 있습니다.
- SSH 터널링을 통한 접속
- NGINX 프록시를 통한 접속
위의 두가지를 하기전에 우선적으로, VPC 의 Security Group에서 EC2를 위해 다음 구성을 inbound rule에 추가합니다.
Type | Protocol | Port Range | Source |
---|
SSH | TCP | 22 | your-cidr-block |
HTTP | TCP | 80 | your-security-group-id |
HTTPS | TCP | 443 | your-security-group-id |
또한 OpenSearch를 위해 다음과 같이 Security Group 구성에 Outbound rule을 추가합니다.
Type | Protocol | Port Range | Source |
---|
All traffic | All | All | EC2 인스턴스의 프라이빗 IP |
EC2 인스턴스의 프라이빗 IP와 퍼블릭 IP 위치는 다음의 EC2 콘솔 화면의 예에서 확인하세요.
![여기에 이미지 설명 입력](/media/postImages/original/IMCS23mrfARpWcAiNfYrMkhg)
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 프록시를 통한 접속
- EC2에 nginx를 설치하세요.
$ sudo amazon-linux-extras install nginx1
- 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) 위치 사진](/media/postImages/original/IM8y_i_YI4SBK2e0o5LhjqoQ)
- 만약 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를 생성합니다.
- 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 대시보드에 액세스하려면 어떻게 해야 합니까?