

# Criar um mapeamento da origem do evento do Lambda para uma origem de evento do Apache Kafka autogerenciado
<a name="kafka-esm-create"></a>

Para criar um mapeamento da origem do evento, você pode usar o console do Lambda, a [AWS Command Line Interface (CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) ou um [SDK da AWS](https://aws.amazon.com/getting-started/tools-sdks/).

As etapas do console a seguir adicionam um cluster do Apache Kafka autogerenciado como acionador da função do Lambda. Nos bastidores, isso cria um recurso de mapeamento da origem do evento.

## Pré-requisitos
<a name="kafka-esm-prereqs"></a>
+ Um cluster Apache Kafka autogerenciado. O Lambda é compatível com o Apache Kafka versão 0.10.1.0 e posteriores.
+ Uma [função de execução](lambda-intro-execution-role.md) com permissão para acessar os recursos da AWS que o cluster do Kafka autogerenciado usa.

## Adicionando um cluster Kafka autogerenciado (console)
<a name="kafka-esm-console"></a>

Siga estas etapas para adicionar seu cluster autogerenciado do Apache Kafka e um tópico do Kafka como um acionador para sua função do Lambda.

**Para adicionar um acionador do Apache Kafka à sua função do Lambda (console)**

1. Abra a página [Functions](https://console.aws.amazon.com/lambda/home#/functions) (Funções) no console do Lambda.

1. Escolha o nome da função do Lambda.

1. Em **Visão geral da função**, escolha **Adicionar gatilho**.

1. Em **Trigger configuration** (Configuração do acionador), faça o seguinte:

   1. Selecione o tipo de acionadro **Apache Kafka**.

   1. Para **Servidores de bootstrap**, insira o endereço de host e par de portas de um corretor Kafka em seu cluster e escolha **Adicionar**. Repita para cada agente da Kafka no cluster.

   1. Em **Nome do tópico**, insira o nome do tópico do Kafka usado para armazenar registros no cluster.

   1. Se você configurar o modo provisionado, insira um valor para **Mínimo de agentes de sondagem de eventos**, um valor para **Máximo de agentes de sondagem de eventos** e um valor opcional para PollerGroupName para especificar o agrupamento de vários ESMs na mesma VPC de origem dos eventos.

   1. (Opcional) Em **Tamanho do lote**, insira o número máximo de registros a serem recebidos em um único lote.

   1. Em **Batch window** (Janela de lote), insira o tempo máximo em segundos usado pelo Lambda para coletar os registros antes de invocar a função.

   1. (Opcional) em **Consumer group ID** (ID do grupo de consumidores), insira o ID de um grupo de consumidores do Kafka no qual ingressar.

   1. (Opcional) Em **Posição inicial**, escolha **Mais recente** para começar a realizar a leitura do fluxo a partir do registro mais recente, **Horizonte de corte** para começar no registro mais antigo disponível ou **No timestamp** para especificar um timestamp para começar a realizar a leitura.

   1. (Opcional) Em **VPC**, escolha a Amazon VPC para seu cluster do Kafka. Em seguida, escolha **VPC subnets** (Sub-redes da VPC) e **VPC security groups** (Grupos de segurança da VPC).

      Essa configuração será necessária se apenas os usuários da VPC acessarem seus agentes.

      

   1. (Opcional) Em **Authentication** (Autenticação), escolha **Add** (Adicionar) e faça o seguinte:

      1. Escolha o protocolo de acesso ou a autenticação dos agentes do Kafka no cluster.
         + Se o agente do Kafka usar autenticação SASL/PLAIN, escolha **BASIC\$1AUTH**.
         + Se seu agente usar autenticação SASL/SCRAM, escolha um dos protocolos **SASL\$1SCRAM**.
         + Se estiver configurando a autenticação mTLS, escolha o protocolo **CLIENT\$1CERTIFICATE\$1TLS\$1AUTH**.

      1. Para a autenticação SASL/SCRAM ou mTLS, escolha a chave secreta do Secrets Manager que contém as credenciais de seu cluster do Kafka.

   1. (Opcional) Em **Encryption** (Criptografia), escolha o segredo do Secrets Manager que contém o certificado CA raiz que seus agentes do Kafka usam para criptografia TLS, se seus agentes do Kafka usarem certificados assinados por uma CA privada.

      Essa configuração se aplica à criptografia TLS para SASL/SCRAM ou SASL/PLAIN e à autenticação MTLs.

   1. Para criar o gatilho em um estado desativado para teste (recomendado), desmarque **Ativar gatilho**. Ou, para habilitar o gatilho imediatamente, selecione **Ativar gatilho**.

1. Para criar o acionador, selecione **Add** (Adicionar).

## Adicionando um cluster Kafka autogerenciado (AWS CLI)
<a name="kafka-esm-cli"></a>

Use os comandos de exemplo da AWS CLI a seguir para criar e visualizar um acionador autogerenciado do Apache Kafka para sua função do Lambda.

### Usar SASL/SCRAM
<a name="kafka-esm-cli-create"></a>

Se usuários do Kafka acessarem seus agentes do Kafka pela Internet, especifique o segredo do Secrets Manager criado para autenticação SASL/SCRAM. O exemplo a seguir usa o comando [create-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-event-source-mapping.html) da AWS CLI para mapear uma função do Lambda chamada `my-kafka-function` em um tópico do Kafka chamado `AWSKafkaTopic`.

```
aws lambda create-event-source-mapping \ 
  --topics AWSKafkaTopic \
  --source-access-configuration Type=SASL_SCRAM_512_AUTH,URI=arn:aws:secretsmanager:us-east-1:111122223333:secret:MyBrokerSecretName \
  --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'
```

### Usar uma VPC
<a name="kafka-esm-cli-create-vpc"></a>

Se apenas os usuários do Kafka em sua VPC acessarem seus agentes do Kafka, você deverá especificar sua VPC, suas sub-redes e seu grupo de segurança da VPC. O exemplo a seguir usa o comando [create-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-event-source-mapping.html) da AWS CLI para mapear uma função do Lambda chamada `my-kafka-function` em um tópico do Kafka chamado `AWSKafkaTopic`.

```
aws lambda create-event-source-mapping \ 
  --topics AWSKafkaTopic \
  --source-access-configuration '[{"Type": "VPC_SUBNET", "URI": "subnet:subnet-0011001100"}, {"Type": "VPC_SUBNET", "URI": "subnet:subnet-0022002200"}, {"Type": "VPC_SECURITY_GROUP", "URI": "security_group:sg-0123456789"}]' \
  --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'
```

### Visualizar o status usando a AWS CLI
<a name="kafka-esm-cli-view"></a>

O exemplo a seguir usa o comando [get-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/get-event-source-mapping.html) da AWS CLI para descrever o status do mapeamento da origem do evento que você criou.

```
aws lambda get-event-source-mapping
              --uuid dh38738e-992b-343a-1077-3478934hjkfd7
```