

# Conectar o Athena a um metastore do Hive com uso de um perfil de execução do IAM existente
<a name="connect-data-source-hive-existing-iam-role"></a>

Para conectar seu metastore externo do Hive ao Athena com uma função do Lambda que usa uma função do IAM existente, você pode usar a implementação de referência do Athena do conector Athena para o metastore externo do Hive.

Veja abaixo as três etapas principais:

1. **[Clonar e criar](#connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function)**: clone a implementação de referência do Athena e crie o arquivo JAR que contém o código da função do Lambda.

1. **[Console do AWS Lambda](#connect-data-source-hive-existing-iam-role-aws-lambda-console)**: no console do AWS Lambda, crie uma função do Lambda, atribua a ela uma função de execução do IAM existente e carregue o código da função que você gerou.

1. **[Console do Amazon Athena](connect-data-source-hive-existing-lambda.md)**: no console do Amazon Athena, crie um nome da origem dos dados que você pode usar para referenciar o metastore externo do Hive em suas consultas do Athena.

Se você já tiver permissões para criar uma função personalizada do IAM, poderá usar um fluxo de trabalho mais simples que use o console do Athena e o AWS Serverless Application Repository para criar e configurar uma função do Lambda. Para obter mais informações, consulte [Conectar o Athena a um metastore do Apache Hive](connect-to-data-source-hive-connecting-athena-to-an-apache-hive-metastore.md).

## Pré-requisitos
<a name="connect-data-source-hive-existing-iam-role-prerequisites"></a>
+ O Git deve estar instalado no sistema.
+ Você deve ter o [Apache Maven](https://maven.apache.org/) instalado.
+ Você tem uma função de execução do IAM que pode atribuir à função do Lambda. Para obter mais informações, consulte [Permitir acesso da função do Lambda aos metastores externos do Hive](hive-metastore-iam-access-lambda.md).

## Clonar e criar a função do Lambda
<a name="connect-data-source-hive-existing-iam-role-clone-and-build-the-lambda-function"></a>

O código da função para a implementação de referência do Athena é um projeto do Maven localizado no GitHub em [awslabs/aws-athena-hive-metastore](https://github.com/awslabs/aws-athena-hive-metastore). Para obter informações detalhadas sobre o projeto, consulte o arquivo README correspondente no GitHub ou o tópico [Modificar o conector externo do Hive metastore do Athena](datastores-hive-reference-implementation.md) nesta documentação.

**Para clonar e criar o código da função do Lambda**

1. Insira o seguinte comando para clonar a implementação de referência do Athena:

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

1. Execute este comando para criar o arquivo `.jar` para a função do Lambda:

   ```
   mvn clean install
   ```

   Após a compilação bem-sucedida do projeto, o seguinte arquivo `.jar` será criado na pasta de destino do projeto:

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

   Na próxima seção, use o console do AWS Lambda para carregar esse arquivo em sua conta da Amazon Web Services.

## Criar e configurar a função do Lambda no console do AWS Lambda
<a name="connect-data-source-hive-existing-iam-role-aws-lambda-console"></a>

Nesta seção, use o console do AWS Lambda para criar uma função que aplique uma função de execução do IAM existente. Depois de configurar uma VPC para a função, carregue o código da função e configure as variáveis de ambiente dela.

### Criar a função do Lambda
<a name="connect-data-source-hive-existing-iam-role-create-the-lambda-function"></a>

Nesta etapa, crie uma função no console do AWS Lambda que use uma função do IAM existente.

**Para criar uma função do Lambda que usa uma função do IAM existente**

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Selecione **Funções** no painel de navegação.

1. Escolha **Create function** (Criar função).

1. Escolha **Author from scratch** (Criar do zero).

1. Em **Function name** (Nome da função), insira o nome da sua função do Lambda (por exemplo, **EHMSBasedLambda**).

1. Em **Runtime** (Tempo de execução), escolha **Java 8**.

1. Em **Permissions** (Permissões), expanda **Change default execution role** (Alterar função de execução padrão).

1. Para **Execution role (Função de execução)**, selecione **Use an existing role (Usar uma função existente)**.

1. Em **Existing role** (Função existente), escolha a função de execução do IAM que sua função do Lambda usará com o Athena (este exemplo usa uma função chamada `AthenaLambdaExecutionRole`).

1. Expanda **Advanced settings (Configurações avançadas)**.

1. Selecione **Enable Network** (Habilitar rede).

1. Em **VPC**, escolha a VPC à qual sua função terá acesso.

1. Em **Subnets** (Sub-redes), escolha as sub-redes VPC para o Lambda usar.

1. Em **Security groups** (Grupos de segurança), escolha os grupos de segurança da VPC para o Lambda usar.

1. Escolha a opção **Criar função**. O console do AWS Lambda abre a página de configuração da sua função e começa a criá-la.

### Carregar o código e configurar a função do Lambda
<a name="connect-data-source-hive-existing-iam-role-upload-and-configure"></a>

Quando o console informar que sua função foi criada com êxito, você estará pronto para carregar o código da função e configurar as variáveis de ambiente.

**Para carregar o código da função do Lambda e configurar as variáveis de ambiente**

1. No console do Lambda, certifique-se de que você está na guia **Code** (Código) da página da função que você especificou.

1. Em **Code source** (Fonte do código), escolha **Upload from** (Carregar de) e escolha **.zip or jar file** (Arquivo .zip ou .jar).

1. Carregue o arquivo `hms-lambda-func-1.0-SNAPSHOT-withdep.jar` que você gerou.

1. Em sua página da função Lambda, escolha a guia **Configuration** (Configuração).

1. No painel à esquerda, escolha **Environment variables** (Variáveis de ambiente).

1. Em **Variáveis de ambiente**, selecione **Editar**.  
![\[Escolha Edit para editar as variáveis de ambiente da função do Lambda.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-5.png)

1. Na página **Edit environment variables** (Editar variáveis de ambiente), use a opção **Add environment variable** (Adicionar variável de ambiente) para adicionar as seguintes chaves e valores da variável de ambiente:
   + **HMS\$1URIS**: use a sintaxe a seguir para inserir o URI do host do metastore do Hive que usa o protocolo Thrift na porta 9083.

     ```
     thrift://<host_name>:9083
     ```
   + **SPILL\$1LOCATION**: especifique um local do Amazon S3 na sua conta da Amazon Web Services para armazenar os metadados de vazamento, caso o tamanho da resposta da função do Lambda exceda 4 MB.  
![\[Especificar valores para as variáveis de ambiente da função do Lambda.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/connect-data-source-hive-existing-iam-role-6.png)

1. Escolha **Salvar**.

Neste ponto, você está pronto para configurar o Athena para usar sua função do Lambda para se conectar ao metastore do Hive. Para obter as etapas, consulte [Configurar o Athena para usar um conector de metastore do Hive implantado](connect-data-source-hive-existing-lambda.md).