

# 기존 IAM 실행 역할을 사용하여 Athena를 Hive 메타스토어에 연결
<a name="connect-data-source-hive-existing-iam-role"></a>

기존 IAM 역할을 사용하는 Lambda 함수로 외부 Hive 메타스토어를 Athena에 연결하려면 외부 Hive 메타스토어용 Athena 커넥터의 Athena 참조 구현을 사용합니다.

3가지 주요 단계는 다음과 같습니다.

1. **[복제 및 구축](#connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function)** - Athena 참조 구현을 복제하고 Lambda 함수 코드를 포함하는 JAR 파일을 구축합니다.

1. **[AWS Lambda 콘솔](#connect-data-source-hive-existing-iam-role-aws-lambda-console)** - AWS Lambda 콘솔에서 Lambda 함수를 생성하고 기존 IAM 실행 역할을 할당한 다음, 생성한 함수 코드를 업로드합니다.

1. **[Amazon Athena 콘솔](connect-data-source-hive-existing-lambda.md)** - Amazon Athena 콘솔에서, Athena 쿼리에서 외부 Hive 메타스토어를 참조하는 데 사용할 수 있는 데이터 원본 이름을 생성합니다.

사용자 지정 IAM 역할을 생성할 수 있는 권한이 이미 있는 경우 Athena 콘솔과 AWS Serverless Application Repository를 사용한 간편한 워크플로를 사용하여 Lambda 함수를 만들고 구성합니다. 자세한 내용은 [Apache Hive 메타스토어에 Athena 연결](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md) 섹션을 참조하세요.

## 사전 조건
<a name="connect-data-source-hive-existing-iam-role-prerequisites"></a>
+ Git이 시스템에 설치되어 있어야 합니다.
+ [Apache Maven](https://maven.apache.org/)이 설치되어 있어야 합니다.
+ Lambda 함수에 할당할 수 있는 IAM 실행 역할이 있습니다. 자세한 내용은 [외부 Hive 메타스토어에 대한 Lambda 함수 액세스 허용](hive-metastore-iam-access-lambda.md) 단원을 참조하세요.

## Lambda 함수 복제 및 구축
<a name="connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function"></a>

Athena 참조 구현을 위한 함수 코드는 GitHub의 [awslabs/aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore)에 있는 Maven 프로젝트입니다. 프로젝트에 대한 자세한 내용은 GitHub의 해당 README 파일 또는 본 문서의 [Athena 외부 Hive 메타스토어 커넥터 수정](datastores-hive-reference-implementation.md) 주제를 참조하세요.

**Lambda 함수 코드를 복제하고 빌드하려면**

1. Athena 참조 구현을 복제하려면 다음 명령을 입력합니다.

   ```
   git clone https://github.com/awslabs/aws-athena-hive-metastore
   ```

1. 다음 명령을 실행하여 Lambda 함수를 위한 `.jar` 파일을 빌드합니다.

   ```
   mvn clean install
   ```

   프로젝트가 성공적으로 빌드되면 다음 `.jar` 파일이 프로젝트의 대상 폴더에 생성됩니다.

   `hms-lambda-func-1.0-SNAPSHOT-withdep.jar`

   다음 단원에서는 AWS Lambda 콘솔을 사용하여 이 파일을 Amazon Web Services 계정에 업로드합니다.

## AWS Lambda 콘솔에서 Lambda 함수 생성 및 구성
<a name="connect-data-source-hive-existing-iam-role-aws-lambda-console"></a>

이 단원에서는 AWS Lambda 콘솔을 사용하여 기존 IAM 실행 역할을 사용하는 함수를 생성합니다. 함수에 대한 VPC를 구성한 후 함수 코드를 업로드하고 함수의 환경 변수를 구성합니다.

### Lambda 함수 생성
<a name="connect-data-source-hive-existing-iam-role-create-the-lambda-function"></a>

이 단원에서는 AWS Lambda 콘솔에서 기존 IAM 실행 역할을 사용하는 함수를 생성합니다.

**기존 IAM 역할을 사용하는 Lambda 함수를 만들려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)에서 AWS Lambda 콘솔을 엽니다.

1. 탐색 창에서 **함수**를 선택합니다.

1. **함수 생성**을 선택합니다.

1. **새로 작성**을 선택합니다.

1. **함수 이름(Function name)**에 Lambda 함수의 이름(예: **EHMSBasedLambda**)을 입력합니다.

1. **런타임(Runtime)**에서 **Java 8**을 선택합니다.

1. **권한(Permissions)**에서 **기본 실행 역할 변경(Change default execution role)**을 확장합니다.

1. **실행 역할**에서 **기존 역할 사용**을 선택합니다.

1. **기존 역할(Existing role)**에서 Lambda 함수가 Athena에 사용할 IAM 역할을 선택합니다(이 예제에서는 `AthenaLambdaExecutionRole`이라는 역할 사용).

1. **Advanced settings(고급 설정)**를 확장합니다.

1. **네트워크 활성화(Enable Network)**를 선택합니다.

1. **VPC**에서 함수가 액세스할 VPC를 선택합니다.

1. **서브넷(Subnets)**에서 Lambda가 사용할 VPC 서브넷을 선택합니다.

1. **보안 그룹(Security groups)**에서 Lambda가 사용할 VPC 보안 그룹을 선택합니다.

1. **함수 생성**을 선택합니다. AWS Lambda 콘솔에서 함수의 구성 페이지를 열고 함수 생성을 시작합니다.

### 코드 업로드 및 Lambda 함수 구성
<a name="connect-data-source-hive-existing-iam-role-upload-and-configure"></a>

콘솔에서 함수가 성공적으로 생성되었음을 알리면 함수 코드를 업로드하고 환경 변수를 구성할 준비가 된 것입니다.

**Lambda 함수 코드를 업로드하고 해당 환경 변수를 구성하려면**

1. Lambda 콘솔에서 지정한 함수 페이지의 **코드(Code)** 탭에 있는지 확인합니다.

1. **코드 소스(Code source)**에서 **다음에서 업로드(Upload from)**를 선택한 다음 **.zip 또는 .jar 파일(.zip or .jar file)**을 선택합니다.

1. 이전에 생성한 `hms-lambda-func-1.0-SNAPSHOT-withdep.jar` 파일을 업로드합니다.

1. Lambda 함수 페이지에서 **구성(Configuration)** 탭을 선택합니다.

1. 왼쪽의 창에서 **환경 변수(Environment variables)**를 선택합니다.

1. **환경 변수** 섹션에서 **편집**을 선택합니다.  
![\[편집(Edit)을 선택해 Lambda 함수의 환경 변수를 편집합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-5.png)

1. **환경 변수 편집(Edit environment variables)** 페이지에서 **환경 변수 추가(Add environment variable)** 옵션을 사용하여 다음 환경 변수 키 및 값을 추가합니다.
   + **HMS\$1URIS** – 다음 구문을 사용하여 포트 9083에서 Thrift 프로토콜을 사용하는 Hive 메타스토어 호스트의 URI를 입력합니다.

     ```
     thrift://<host_name>:9083
     ```
   + **SPILL\$1LOCATION** – Lambda 함수 응답 크기가 4MB를 초과하는 경우 분산 메타데이터를 보관할 Amazon Web Services 계정의 Amazon S3 위치를 지정합니다.  
![\[Lambda 함수 환경 변수의 값 지정\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-6.png)

1. **저장**을 선택합니다.

이제 Lambda 함수를 사용하여 Hive 메타스토어에 연결하도록 Athena를 구성할 준비가 되었습니다. 단계는 [배포된 Hive 메타스토어 커넥터를 사용하도록 Athena 구성](connect-data-source-hive-existing-lambda.md)를 참조하세요.