

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando o Amazon Data Firehose com AWS PrivateLink
<a name="vpc"></a>

Você pode usar uma interface VPC endpoint (AWS PrivateLink) para acessar o Amazon Data Firehose de sua VPC sem precisar de um Internet Gateway ou NAT Gateway. Os endpoints VPC de interface não exigem um gateway de internet, dispositivo NAT, conexão VPN ou conexão. Direct Connect Os endpoints de VPC de interface são alimentados por AWS PrivateLink uma AWS tecnologia que permite a comunicação privada entre AWS serviços usando uma interface de rede elástica com privacidade em IPs sua Amazon VPC. Para obter mais informações, consulte o [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html). 

## Usando a interface VPC endpoints ()AWS PrivateLink para Firehose
<a name="using-interface-vpc-endpoints"></a>

Para iniciar, crie um endpoint da VPC de interface para que o tráfego do Amazon Data Firehose vindo dos recursos da Amazon VPC comece a fluir através do endpoint da VPC de interface. Quando você cria um endpoint, pode anexar a ele uma política de endpoint que controla o acesso ao Amazon Data Firehose. Para saber mais sobre o uso de políticas para controlar o acesso de um endpoint da VPC ao Amazon Data Firehose, consulte [Controle de acesso aos serviços com endpoints da VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html).

O exemplo a seguir mostra como você pode configurar uma AWS Lambda função em uma VPC e criar um VPC endpoint para permitir que a função se comunique com segurança com o serviço Amazon Data Firehose. Neste exemplo, você usa uma política que permite que a função do Lambda liste os fluxos do Firehose na região atual, mas não os descreva.

**Criar um VPC endpoint**

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

1. No painel da VPC, selecione **Endpoints**.

1. Escolha **Criar endpoint**.

1. Na lista de nomes de serviço, escolha `com.amazonaws.your_region.kinesis-firehose`.

1. Escolha a VPC e uma ou mais sub-redes nas quais criar o endpoint.

1. Escolha um ou mais grupos de segurança para associar ao endpoint.

1. Para **Policy (Política)**, selecione **Custom (Personalizar)** e cole a seguinte política:

   ```
   {
       "Statement": [
           {
               "Sid": "Allow-only-specific-PrivateAPIs",
               "Principal": "*",
               "Action": [
                   "firehose:ListDeliveryStreams"
               ],
               "Effect": "Allow",
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "Allow-only-specific-PrivateAPIs",
               "Principal": "*",
               "Action": [
                   "firehose:DescribeDeliveryStream"
               ],
               "Effect": "Deny",
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

1. Escolha **Criar endpoint**.

**Criar um perfil do IAM para ser usado com a função do Lambda**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Perfis** e **Criar perfil**.

1. Em **Selecionar o tipo de entidade confiável**, deixe a seleção padrão **Serviço da AWS **.

1. Em **Escolha o serviço que usará esse perfil**, escolha **Lambda**.

1. Escolha **Next: Permissions** (Próximo: Permissões).

1. Na lista de políticas, procure e adicione as duas políticas chamadas `AWS LambdaVPCAccessExecutionRole` e `AmazonDataFirehoseReadOnlyAccess`.
**Importante**  
Este é um exemplo. É possível precisar de políticas mais rigorosas para o ambiente de produção.

1. Escolha **Próximo: tags**. Para a finalidade deste exercício, não é necessário adicionar tags. Escolha **Próximo: revisar**.

1. Insira um nome para o perfil e escolha **Criar perfil**.

**Criar uma função do Lambda dentro da VPC**

1. Abra o AWS Lambda console em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

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

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

1. Insira um nome para a função e defina **Runtime** como `Python 3.9` ou posterior.

1. Em **Permissions (Permissões)**, expanda **Choose or create an execution role (Escolher ou criar uma função de execução)**.

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

1. Na lista **Existing role (Função existente)**, selecione a função criada acima.

1. Escolha a opção **Criar função**.

1. Em **Function code (Código da função)**, cole o código a seguir.

   ```
       import json
       import boto3
       import os
       from botocore.exceptions import ClientError
        
       def lambda_handler(event, context):
           REGION = os.environ['AWS_REGION']
           client = boto3.client(
               'firehose',
               REGION
               
           )
           print("Calling list_delivery_streams with ListDeliveryStreams allowed policy.")
           delivery_stream_request = client.list_delivery_streams()
           print("Successfully returned list_delivery_streams request %s." % (
               delivery_stream_request
           ))
           describe_access_denied = False
           try:
               print("Calling describe_delivery_stream with DescribeDeliveryStream denied policy.")
               delivery_stream_info = client.describe_delivery_stream(DeliveryStreamName='test-describe-denied')
           except ClientError as e:
               error_code = e.response['Error']['Code']
               print ("Caught %s." % (error_code))
               if error_code == 'AccessDeniedException':
                   describe_access_denied = True
           
           if not describe_access_denied:
               raise
           else:
               print("Access denied test succeeded.")
   ```

1. Em **Basic settings (Configurações básicas)**, defina o tempo limite como 1 minuto.

1. Em **Network (Rede)**, selecione a VPC onde você criou o endpoint acima e selecione as sub-redes e o grupo de segurança que foram associados ao endpoint quando ele foi criado.

1. Próximo ao alto da página, selecione **Salvar**.

1. Escolha **Testar**.

1. Insira o nome de um evento e escolha **Criar**.

1. Escolha **Test (Testar)** novamente. Isso faz com que a função seja executada. Depois que o resultado da execução for exibido, expanda **Details (Detalhes)** e compare a saída do log com o código da função. Resultados com êxito mostram uma lista de fluxos do Firehose na região, bem como a saída a seguir:

    `Calling describe_delivery_stream.` 

    `AccessDeniedException ` 

    `Access denied test succeeded.` 

## Suportado Regiões da AWS
<a name="availability"></a>

No momento, há suporte para os endpoints da VPC nas regiões a seguir. 
+ Leste dos EUA (Ohio)
+ Leste dos EUA (Norte da Virgínia)
+ Oeste dos EUA (N. da Califórnia)
+ Oeste dos EUA (Oregon)
+ Ásia-Pacífico (Mumbai)
+ Ásia-Pacífico (Seul)
+ Ásia-Pacífico (Singapura)
+ Ásia-Pacífico (Sydney)
+ Ásia-Pacífico (Tailândia)
+ Ásia-Pacífico (Tóquio)
+ Ásia-Pacífico (Hong Kong)
+ Canadá (Central)
+ Oeste do Canadá (Calgary)
+ China (Pequim)
+ China (Ningxia)
+ Europa (Frankfurt)
+ Europa (Irlanda)
+ Europa (Londres)
+ Europa (Paris)
+ México (Centro)
+ América do Sul (São Paulo)
+ AWS GovCloud (Leste dos EUA)
+ AWS GovCloud (Oeste dos EUA)
+ Europa (Espanha)
+ Oriente Médio (Emirados Árabes Unidos)
+ Ásia-Pacífico (Jacarta)
+ Ásia-Pacífico (Osaka)
+ Israel (Tel Aviv)
+ Ásia-Pacífico (Malásia)