기존 IAM 역할을 사용하는 Lambda 함수로 외부 Hive 메타스토어를 Athena에 연결하려면 외부 Hive 메타스토어용 Athena 커넥터의 Athena 참조 구현을 사용합니다.
3가지 주요 단계는 다음과 같습니다.
-
복제 및 구축 - Athena 참조 구현을 복제하고 Lambda 함수 코드를 포함하는 JAR 파일을 구축합니다.
-
AWS Lambda 콘솔 - AWS Lambda 콘솔에서 Lambda 함수를 생성하고 기존 IAM 실행 역할을 할당한 다음, 생성한 함수 코드를 업로드합니다.
-
Amazon Athena 콘솔 - Amazon Athena 콘솔에서, Athena 쿼리에서 외부 Hive 메타스토어를 참조하는 데 사용할 수 있는 데이터 원본 이름을 생성합니다.
사용자 지정 IAM 역할을 생성할 수 있는 권한이 이미 있는 경우 Athena 콘솔과 AWS Serverless Application Repository를 사용한 간편한 워크플로를 사용하여 Lambda 함수를 만들고 구성합니다. 자세한 내용은 Apache Hive 메타스토어에 Athena 연결 단원을 참조하십시오.
사전 조건
-
Git이 시스템에 설치되어 있어야 합니다.
-
Apache Maven
이 설치되어 있어야 합니다. -
Lambda 함수에 할당할 수 있는 IAM 실행 역할이 있습니다. 자세한 내용은 외부 Hive 메타스토어에 대한 Lambda 함수 액세스 허용 단원을 참조하세요.
Lambda 함수 복제 및 구축
Athena 참조 구현을 위한 함수 코드는 GitHub의 awslabs/aws-athena-hive-metastore
Lambda 함수 코드를 복제하고 빌드하려면
-
Athena 참조 구현을 복제하려면 다음 명령을 입력합니다.
git clone https://github.com/awslabs/aws-athena-hive-metastore
-
다음 명령을 실행하여 Lambda 함수를 위한
.jar
파일을 빌드합니다.mvn clean install
프로젝트가 성공적으로 빌드되면 다음
.jar
파일이 프로젝트의 대상 폴더에 생성됩니다.hms-lambda-func-1.0-SNAPSHOT-withdep.jar
다음 단원에서는 AWS Lambda 콘솔을 사용하여 이 파일을 Amazon Web Services 계정에 업로드합니다.
AWS Lambda 콘솔에서 Lambda 함수 생성 및 구성
이 단원에서는 AWS Lambda 콘솔을 사용하여 기존 IAM 실행 역할을 사용하는 함수를 생성합니다. 함수에 대한 VPC를 구성한 후 함수 코드를 업로드하고 함수의 환경 변수를 구성합니다.
Lambda 함수 생성
이 단원에서는 AWS Lambda 콘솔에서 기존 IAM 실행 역할을 사용하는 함수를 생성합니다.
기존 IAM 역할을 사용하는 Lambda 함수를 만들려면
AWS Management Console에 로그인하고 https://console.aws.amazon.com/lambda/
에서 AWS Lambda 콘솔을 엽니다. -
탐색 창에서 함수를 선택합니다.
-
함수 생성을 선택합니다.
-
새로 작성을 선택합니다.
-
함수 이름(Function name)에 Lambda 함수의 이름(예:
EHMSBasedLambda
)을 입력합니다. -
런타임(Runtime)에서 Java 8을 선택합니다.
-
권한(Permissions)에서 기본 실행 역할 변경(Change default execution role)을 확장합니다.
-
실행 역할에서 기존 역할 사용을 선택합니다.
-
기존 역할(Existing role)에서 Lambda 함수가 Athena에 사용할 IAM 역할을 선택합니다(이 예제에서는
AthenaLambdaExecutionRole
이라는 역할 사용). -
Advanced settings(고급 설정)를 확장합니다.
-
네트워크 활성화(Enable Network)를 선택합니다.
-
VPC에서 함수가 액세스할 VPC를 선택합니다.
-
서브넷(Subnets)에서 Lambda가 사용할 VPC 서브넷을 선택합니다.
-
보안 그룹(Security groups)에서 Lambda가 사용할 VPC 보안 그룹을 선택합니다.
-
함수 생성(Create function)을 선택합니다. AWS Lambda 콘솔에서 함수의 구성 페이지를 열고 함수 생성을 시작합니다.
코드 업로드 및 Lambda 함수 구성
콘솔에서 함수가 성공적으로 생성되었음을 알리면 함수 코드를 업로드하고 환경 변수를 구성할 준비가 된 것입니다.
Lambda 함수 코드를 업로드하고 해당 환경 변수를 구성하려면
-
Lambda 콘솔에서 지정한 함수 페이지의 코드(Code) 탭에 있는지 확인합니다.
-
코드 소스(Code source)에서 다음에서 업로드(Upload from)를 선택한 다음 .zip 또는 .jar 파일(.zip or .jar file)을 선택합니다.
-
이전에 생성한
hms-lambda-func-1.0-SNAPSHOT-withdep.jar
파일을 업로드합니다. -
Lambda 함수 페이지에서 구성(Configuration) 탭을 선택합니다.
-
왼쪽의 창에서 환경 변수(Environment variables)를 선택합니다.
-
환경 변수 섹션에서 편집을 선택합니다.
-
환경 변수 편집(Edit environment variables) 페이지에서 환경 변수 추가(Add environment variable) 옵션을 사용하여 다음 환경 변수 키 및 값을 추가합니다.
-
HMS_URIS – 다음 구문을 사용하여 포트 9083에서 Thrift 프로토콜을 사용하는 Hive 메타스토어 호스트의 URI를 입력합니다.
thrift://
<host_name>
:9083 -
SPILL_LOCATION – Lambda 함수 응답 크기가 4MB를 초과하는 경우 분산 메타데이터를 보관할 Amazon Web Services 계정의 Amazon S3 위치를 지정합니다.
-
-
Save(저장)를 선택합니다.
이제 Lambda 함수를 사용하여 Hive 메타스토어에 연결하도록 Athena를 구성할 준비가 되었습니다. 단계는 배포된 Hive 메타스토어 커넥터를 사용하도록 Athena 구성를 참조하세요.