CloudWatch Logs에서 다른 계정에 있는 VPC 기반 Amazon Elasticsearch Service 클러스터로 데이터를 스트리밍하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 16일

Amazon CloudWatch Logs에서 Virtual Private Cloud(VPC)를 사용해 다른 계정에 있는 Amazon Elasticsearch Service(Amazon ES) 클러스터로 데이터를 스트리밍하려고 합니다. 하지만 "Enter a valid Amazon Elasticsearch Service Endpoint" 오류 메시지가 표시됩니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

CloudWatch Logs에서 다른 계정의 Elasticsearch 클러스터로 데이터를 스트리밍하려면 다음의 단계를 따릅니다.

1.    계정 A에 CloudWatch Logs를 설정합니다.

2.    계정 A에 AWS Lambda를 구성합니다.

3.    계정 간 VPC 피어링을 구성합니다.

​해결 방법

계정 A에 CloudWatch Logs 설정

1.    계정 A에서 CloudWatch Logs 콘솔을 열고 로그 그룹을 선택합니다.

2.    [Amazon Elasticsearch Service로 스트리밍] 작업을 선택합니다.

3.    [계정 선택] 옵션에서 [이 계정]을 선택합니다.

4.    Elasticsearch 클러스터 드롭다운에서 계정 A의 기존 클러스터를 선택합니다.

5.    선택한 Elasticsearch 클러스터에 호출할 권한이 있는 [Lambda IAM 실행 역할]을 선택합니다.

6.    역할에 AWSLambdaVPCAccessExecutionRole 정책을 연결하고 [다음]을 선택합니다.

7.    [로그 형식] 및 [구독 필터 패턴]을 선택합니다.

8.    [다음]을 선택합니다.

9.    [Lambda 함수 이름]을 입력하고 [스트리밍 시작]을 선택합니다. 스트리밍에 관한 자세한 내용은 CloudWatch Logs 데이터를 Amazon Elasticsearch Service로 스트리밍을 참조하십시오.

계정 A에 Lambda 구성

1.    계정 A에서 Lambda 콘솔을 엽니다.

2.    Lambda 함수를 선택합니다.

3.    함수 코드에서 계정 B에 있는 Elasticsearch 클러스터의 엔드포인트 변수를 업데이트합니다. 그러면 Lambda 함수가 계정 B에 있는 Amazon ES 도메인으로 데이터를 보낼 수 있습니다.

참고: 계정 B의 퍼블릭 DNS 이름을 붙여넣을 수 있습니다. URL 엔드포인트에서 "https://"를 지워야 합니다.

4.    [사용자 지정 VPC]를 선택합니다.

5.    [저장]을 선택합니다. 이렇게 하면 Lambda 함수가 VPC 안에서 실행되며 VPC 라우팅을 사용해 데이터를 Amazon ES 도메인에 돌려보낼 수 있습니다. Amazon Virtual Private Cloud(Amazon VPC) 구성에 대한 자세한 내용은 VPC 리소스에 액세스하도록 Lambda 함수 구성을 참조하십시오.

계정 간 VPC 피어링 구성

1.    계정 A와 계정 B에서 Amazon VPC 콘솔을 엽니다.

참고: VPC에 중첩되는 CIDR 블록이 없어야 합니다.

2.    두 개의 사용자 지정 VPC(Lambda 및 Amazon ES) 사이에 VPC 피어링 세션을 생성합니다. 이 VPC 피어링 세션을 사용하면 Lambda에서 Amazon ES 도메인에 데이터를 보낼 수 있습니다. VPC 피어링 연결에 대한 자세한 내용은 VPC 피어링 연결 생성 및 수락을 참조하십시오.

3.     두 VPC의 라우팅 테이블을 업데이트합니다. 라우팅 테이블에 대한 자세한 내용은 VPC 피어링 연결을 위한 라우팅 테이블 업데이트를 참조하십시오.

4.    계정 A에서 [보안 그룹]으로 이동합니다.

5.    Lambda가 설정된 서브넷에 할당된 보안 그룹을 선택합니다.

6.    인바운드 규칙을 추가하여 Amazon ES 서브넷에서 유입되는 트래픽을 허용합니다.

7.    계정 B에서 Amazon ES가 설정된 서브넷에 할당된 보안 그룹을 선택합니다.

8.    인바운드 규칙을 추가하여 Lambda 서브넷에서 유입되는 트래픽을 허용합니다.

9.    계정 B에서 Amazon ES 콘솔을 엽니다.

10.    [작업]을 선택합니다.

11.    [액세스 정책 변경]을 선택하고, 다음과 같은 정책을 첨부합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
       
    "AWS": "arn:aws:iam::<AWS Account A>:role/<Lambda Execution Role>"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1: ::<AWS
    Account B>:domain/<ES Domain Name>/*"
    }
  ]
}

이 정책을 사용하면 Amazon ES가 Lambda 함수의 실행 역할로부터 호출할 수 있습니다.

12. Lambda 콘솔오류 수 및 성공률 지표를 확인합니다. 이 지표에서 로그가 Amazon ES로 무사히 전달되었는지 확인할 수 있습니다.

13. Amazon ES의 인덱싱률 지표를 확인하여 데이터가 전송되었는지 확인합니다. 이제 CloudWatch Logs가 Amazon VPC의 두 계정을 모두 스트리밍합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?