교차 클러스터 검색을 통한 교차 리전 및 교차 계정 데이터 액세스
Amazon OpenSearch Serverless의 교차 클러스터 검색을 사용하면 연결된 여러 도메인에 걸쳐 쿼리 및 집계를 수행할 수 있습니다.
Amazon OpenSearch Serverless의 교차 클러스터 검색은 소스 도메인 및 대상 도메인의 개념을 사용합니다. 교차 클러스터 검색 요청은 소스 도메인에서 시작됩니다. 대상 도메인은 소스 도메인이 쿼리할 다른 AWS 계정 또는 AWS 리전(또는 둘 다)에 있을 수 있습니다. 교차 클러스터 검색을 사용하여 동일한 계정의 OpenSearch UI와 연결하도록 소스 도메인을 구성한 다음, 대상 도메인에 대한 연결을 생성할 수 있습니다. 결과적으로, 다른 계정 또는 리전에 있더라도 대상 도메인의 데이터와 함께 OpenSearch UI를 사용할 수 있습니다.
Amazon OpenSearch Service 내부 및 외부로 전송된 데이터에 대해 표준 AWS 데이터 전송 요금
OpenSearch UI를 다른 계정 또는 다른 리전의 클러스터와 연결하는 메커니즘으로 교차 클러스터 검색을 사용할 수 있습니다. 도메인 간의 요청은 기본적으로 노드 간 암호화의 일부로 전송 중에 암호화됩니다.
참고
오픈 소스 OpenSearch 도구에는 교차 클러스터 검색
특히 Amazon OpenSearch Serverless에서는 cURL 요청을 사용하는 대신 AWS Management 콘솔을 사용하여 클러스터 간 연결을 구성합니다. 관리형 서비스는 세분화된 액세스 제어 외에도 교차 클러스터 인증에 AWS Identity and Access Management(IAM)를 사용합니다.
따라서 오픈 소스 OpenSearch 설명서 대신 이 주제를 사용하여 도메인에 대한 교차 클러스터 검색을 구성하는 것이 좋습니다.
교차 클러스터 검색 사용 시 기능 차이
교차 클러스터 검색을 사용하여 생성된 대상 도메인은 일반 도메인과 비교하여 다음과 같은 기능상의 차이점과 요구 사항이 있습니다.
-
원격 클러스터에는 데이터를 쓰거나
PUT명령을 실행할 수 없습니다. 원격 클러스터에 대한 액세스는 읽기 전용입니다. -
소스 도메인과 대상 도메인 모두 OpenSearch 도메인이어야 합니다. OpenSearch UI의 Elasticsearch 도메인 또는 자체 관리형 OpenSearch/Elasticsearch 클러스터는 연결할 수 없습니다.
-
도메인에는 다른 도메인에 대한 최대 20개의 연결이 있을 수 있습니다. 여기에는 발신 연결과 수신 연결이 모두 포함됩니다.
-
소스 도메인의 OpenSearch 버전은 대상 도메인과 같거나 상위 버전에 있어야 합니다. 두 도메인 간에 양방향 연결을 설정하려면 두 도메인이 동일한 버전이어야 합니다. 연결하기 전에 두 도메인을 모두 최신 버전으로 업그레이드하는 것이 좋습니다. 양방향 연결을 설정한 후 도메인을 업데이트해야 하는 경우, 먼저 연결을 삭제한 후에 다시 생성해야 합니다.
-
원격 클러스터에는 사용자 지정 사전이나 SQL을 사용할 수 없습니다.
-
CloudFormation을 사용하여 도메인을 연결할 수 없습니다.
-
M3 또는 버스트 가능(T2 및 T3) 인스턴스에서는 클러스터 간 검색을 사용할 수 없습니다.
-
교차 클러스터 검색은 Amazon OpenSearch Serverless 컬렉션에 대해 작동하지 않습니다.
OpenSearch UI의 교차 클러스터 검색 전제 조건
두 OpenSearch 도메인 간의 교차 클러스터 검색을 설정하기 전에 도메인이 다음 요구 사항을 충족하는지 확인하세요.
-
두 도메인 모두에 대해 세분화된 액세스 제어가 활성화됨
-
두 도메인 모두에 노드 간 암호화가 활성화됨
주제
교차 클러스터 검색을 사용하여 교차 리전 및 교차 계정 데이터 액세스에 대한 액세스 권한 설정
교차 클러스터 검색 요청을 소스 도메인으로 보내면 도메인은 해당 요청을 도메인 액세스 정책과 비교하여 평가합니다. 교차 클러스터 검색에는 세분화된 액세스 제어가 필요합니다. 다음은 소스 도메인에 대한 오픈 액세스 정책의 예입니다.
참고
경로에 원격 인덱스를 포함하는 경우 도메인 ARN에서 URI를 URL로 인코딩해야 합니다.
예를 들어 다음 ARN 형식을 사용합니다.
:arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst%3Aremote_index
다음 ARN 형식은 사용하지 마세요.
arn:aws:es:us-east-1:111222333444:domain/my-domain/local_index,dst:remote_index.
세분화된 액세스 제어 외에 제한적인 액세스 정책을 사용하도록 선택하는 경우 정책에서 최소한 es:ESHttpGet에 대한 액세스를 허용해야 합니다. 다음은 예제입니다.
소스 도메인에 대한 세분화된 액세스 제어는 요청을 평가하여 유효한 IAM 또는 HTTP 기본 자격 증명으로 서명되었는지 확인합니다. 그렇게 서명된 경우 세분화된 액세스 제어는 다음으로 검색을 수행하고 데이터에 액세스할 수 있는 권한이 사용자에게 있는지 여부를 평가합니다.
다음은 검색 권한 요구 사항입니다.
-
요청이 대상 도메인(예:
dest-alias:dest-index/_search))의 데이터만 검색하는 경우 대상 도메인에 대한 권한만 필요합니다. -
요청이 두 도메인(예:
source-index,dest-alias:dest-index/_search)) 모두에서 데이터를 검색하는 경우 두 도메인에 대한 권한이 필요합니다. -
세분화된 액세스 제어를 사용하려면 관련 인덱스에 대한 표준 읽기 또는 검색 권한 외에
indices:admin/shards/search_shards권한도 있어야 합니다.
소스 도메인은 요청을 대상 도메인에 전달합니다. 대상 도메인은 해당 도메인 액세스 정책을 기준으로 이 요청을 평가합니다. 문서 인덱싱 및 표준 검색 수행과 같은 OpenSearch UI의 모든 기능을 지원하려면 전체 권한이 설정되어 있어야 합니다. 다음은 대상 도메인에 대한 권장 정책의 예입니다.
기본 검색만 수행하려는 경우 최소 정책 요구 사항은 와일드카드 지원 없이 대상 도메인에 es:ESCrossClusterGet 권한을 적용하는 것입니다. 예를 들어 이전 정책에서 도메인 이름을 /my-destination-domain/*이 아니라 /my-destination-domain으로 지정합니다.
이 경우 대상 도메인은 검색을 수행하고 결과를 소스 도메인에 반환합니다. 소스 도메인은 자체 결과(있는 경우)를 대상 도메인의 결과와 결합하여 반환합니다.
도메인 간 연결 생성
교차 클러스터 검색 연결은 소스 도메인에서 대상 도메인으로 단방향입니다. 즉, 대상 도메인(다른 계정 또는 리전)은 OpenSearch UI에 로컬인 소스 도메인을 쿼리할 수 없습니다. 소스 도메인은 대상 도메인에 대한 아웃바운드 연결을 생성합니다. 대상 도메인은 소스 도메인에서 인바운드 연결 요청을 받습니다.
도메인 간 연결을 생성하려면
-
https://console.aws.amazon.com/aos/home
에서 Amazon OpenSearch Service 콘솔에 로그인합니다. -
왼쪽 탐색 메뉴에서 도메인을 선택합니다.
-
소스 도메인으로 사용할 도메인의 이름을 선택한 다음 연결 탭을 선택합니다.
-
아웃바운드 연결 영역에서 요청을 선택합니다.
-
[연결 별칭(Connection alias)]에 연결 이름을 입력합니다. 연결 별칭은 OpenSearch UI에서 대상 도메인을 선택하는 데 사용됩니다.
-
연결 모드에서 교차 클러스터 검색 또는 복제에 대해 직접을 선택합니다.
-
검색 중에 사용할 수 없는 클러스터를 건너뛰도록 지정하려면 사용할 수 없는 클러스터 건너뛰기 상자를 선택합니다. 이 옵션을 선택하면 하나 이상의 원격 클러스터에서 오류가 발생하더라도 교차 클러스터 쿼리가 일부 결과를 반환할 수 있습니다.
-
대상 클러스터에서 이 AWS 계정의 클러스터에 연결과 다른 AWS 계정의 클러스터에 연결 중에서 선택합니다.
-
원격 도메인 ARN에 클러스터의 Amazon 리소스 이름(ARN)을 입력합니다. 이 도메인 ARN은 도메인 세부 정보 페이지의 일반 정보 영역에 있을 수 있습니다.
도메인은 다음 요구 사항을 충족해야 합니다.
-
ARN은
arn:형식이어야 합니다. 예:partition:es:regionaccount-id:type/domain-idarn:aws:es:us-east-2:111222333444:domain/my-domain -
도메인은 OpenSearch 버전 1.0(이상) 또는 Elasticsearch 버전 6.7(이상)을 사용하도록 구성해야 합니다.
-
도메인에서 세분화된 액세스 제어를 활성화해야 합니다.
-
도메인이 OpenSearch를 실행 중이어야 합니다.
-
-
요청을 선택합니다.
클러스터 간 검색은 먼저 연결 요청을 검증하여 전제 조건이 충족되는지 확인합니다. 도메인이 호환되지 않을 경우 연결 요청이 Validation failed 상태로 전환됩니다.
연결 요청이 성공적으로 검증되면 대상 도메인으로 전송되어 승인을 받아야 합니다. 이 승인이 될 때까지 연결은 Pending acceptance 상태로 유지됩니다. 대상 도메인에서 연결 요청이 수락되면 상태가 Active으로 변경되고 대상 도메인을 쿼리에 사용할 수 있게 됩니다.
도메인 페이지에는 대상 도메인의 전체 도메인 상태 및 인스턴스 상태 세부 정보가 표시됩니다. 도메인 소유자만 도메인과의 연결을 유연하게 생성하고 보고 제거하고 모니터링할 수 있습니다.
연결이 설정되면 연결된 도메인의 노드 간에 흐르는 모든 트래픽이 암호화됩니다. VPC 도메인을 VPC가 아닌 도메인에 연결하고 VPC가 아닌 도메인이 인터넷에서 트래픽을 수신할 수 있는 퍼블릭 엔드포인트인 경우, 도메인 간의 클러스터 간 트래픽은 여전히 암호화되고 안전합니다.
교차 클러스터 검색을 사용한 교차 리전 및 교차 계정 데이터 액세스의 보안 설정 테스트
교차 클러스터 검색을 사용하여 교차 리전 및 교차 계정 데이터 액세스를 위한 액세스 권한을 설정한 후에는 협업 API 개발을 위한 서드 파티 플랫폼인 Postman
Postman을 사용하여 보안 설정을 설정하려면
-
대상 도메인에서 문서를 인덱싱합니다. 다음은 샘플 요청입니다.
POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" } -
소스 도메인에서 이 인덱스를 쿼리하려면 쿼리 내에 대상 도메인의 연결 별칭을 포함합니다. 도메인 대시보드의 연결(Connections) 탭에서 연결 별칭을 찾을 수 있습니다. 다음은 샘플 요청과 잘린 응답입니다.
GET https://src-domain.us-east-1.es.amazonaws.com/connection_alias:books/_search { ... "hits": [ { "_index": "source-destination:books", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "Dracula": "Bram Stoker" } } ] } -
(선택 사항) 단일 검색으로 여러 도메인을 포함하는 구성을 생성할 수 있습니다. 예를 들어 다음과 같은 설정을 가정해 보겠습니다.
연결 별칭 이름이
cluster_b인domain-a에서domain-b로의 연결연결 별칭 이름이
cluster_c인domain-a에서domain-c로의 연결이 경우 검색에는 콘텐츠
domain-a,domain-b및domain-c가 포함됩니다. 다음은 샘플 요청과 응답입니다.요청
GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search { "query": { "match": { "user": "domino" } } }응답:
{ "took": 150, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0, "skipped": 0 }, "_clusters": { "total": 3, "successful": 3, "skipped": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "local_index", "_type": "_doc", "_id": "0", "_score": 1, "_source": { "user": "domino", "message": "This is message 1", "likes": 0 } }, { "_index": "cluster_b:b_index", "_type": "_doc", "_id": "0", "_score": 2, "_source": { "user": "domino", "message": "This is message 2", "likes": 0 } }, { "_index": "cluster_c:c_index", "_type": "_doc", "_id": "0", "_score": 3, "_source": { "user": "domino", "message": "This is message 3", "likes": 0 } } ] } }
연결 설정에서 사용할 수 없는 클러스터를 건너뛰도록 선택하지 않은 경우 검색 요청이 성공적으로 실행되려면 검색하는 모든 대상 클러스터를 사용할 수 있어야 합니다. 그렇지 않으면 전체 요청이 실패합니다. 도메인 중 하나를 사용할 수 없더라도 검색 결과가 반환되지 않습니다.
연결 삭제
연결을 삭제하면 대상 도메인에서 교차 클러스터 검색 작업이 중지됩니다.
소스 도메인이나 대상 도메인에서 다음 절차를 수행하여 연결을 제거할 수 있습니다. 연결을 제거한 후에도 15일 동안 Deleted 상태로 계속 표시됩니다.
활성 클러스터 간 연결이 있는 도메인은 삭제할 수 없습니다. 도메인을 삭제하려면 먼저 해당 도메인과의 수신 연결과 발신 연결을 모두 제거합니다. 그러면 도메인을 삭제하기 전에 클러스터 간 도메인 사용자를 고려할 수 있습니다.
연결 삭제
-
https://console.aws.amazon.com/aos/home
에서 Amazon OpenSearch Service 콘솔에 로그인합니다. -
왼쪽 탐색 메뉴에서 도메인을 선택합니다.
-
삭제할 도메인의 이름을 선택한 후 연결 탭을 선택합니다.
-
삭제할 연결의 이름을 선택합니다.
-
삭제를 선택하고 삭제를 확인합니다.