Usando o Amazon Data Firehose com AWS PrivateLink - Amazon Data Firehose

O Amazon Data Firehose era conhecido anteriormente como Amazon Kinesis Data Firehose

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

Interface VPC endpoints ()AWS PrivateLink para Amazon Data Firehose

Você pode usar uma interface VPC endpoint para impedir que o tráfego entre sua Amazon VPC e o Amazon Data Firehose saia da rede Amazon. Os endpoints VPC de interface não exigem um gateway de internet, dispositivo NAT, conexão VPN ou conexão. AWS Direct Connect Os endpoints de VPC da 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 IPs privados em sua Amazon VPC. Para obter mais informações, consulte o Amazon Virtual Private Cloud.

Usando a interface VPC endpoints ()AWS PrivateLink para o Amazon Data Firehose

Para começar, crie uma interface VPC endpoint para que o tráfego do Amazon Data Firehose dos recursos do Amazon VPC comece a fluir pela interface VPC endpoint. Ao criar um endpoint, você 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 VPC endpoint ao Amazon Data Firehose, consulte Controlando o acesso aos serviços com VPC Endpoints.

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 Lambda liste os streams do Firehose na região atual, mas não descreva nenhum stream do Firehose.

Criar um VPC endpoint
  1. Faça login AWS Management Console e abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. No painel da VPC, selecione Endpoints.

  3. Escolha Criar Endpoint.

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

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

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

  7. 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": [ "*" ] } ] }
  8. 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/.

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

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

  4. Em Choose the service that will use this role (Escolha o serviço que usará essa função), escolha Lambda.

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

  6. Na lista de políticas, procure e adicione as duas políticas chamadas AWS LambdaVPCAccessExecutionRole e AmazonDataFirehoseReadOnlyAccess.

    Importante

    Este é um exemplo. Você pode precisar de políticas mais rigorosas para o ambiente de produção.

  7. Escolha Próximo: etiquetas. Para a finalidade deste exercício, não é necessário adicionar tags. Selecione Next: Review (Próximo: revisar).

  8. 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/.

  2. Escolha Create function (Criar função).

  3. Escolha Author from scratch (Criar do zero).

  4. Insira um nome para a função e, em seguida, defina Tempo de Execução como Python 3.9 ou superior.

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

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

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

  8. Escolha a opção Criar função.

  9. 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.")
  10. Em Basic settings (Configurações básicas), defina o tempo limite como 1 minuto.

  11. 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.

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

  13. Escolha Testar.

  14. Insira o nome de um evento e escolha Criar.

  15. 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. Os resultados bem-sucedidos mostram uma lista dos fluxos do Firehose na região, bem como a seguinte saída:

    Calling describe_delivery_stream.

    AccessDeniedException

    Access denied test succeeded.

Disponibilidade

No momento, VPC endpoints de interface são compatíveis com as seguintes regiões:

  • Leste dos EUA (Ohio)

  • Leste dos EUA (N. da Virgínia)

  • Oeste dos EUA (N. da Califórnia)

  • Oeste dos EUA (Oregon)

  • Asia Pacific (Mumbai)

  • Ásia-Pacífico (Seul)

  • Ásia-Pacífico (Singapura)

  • Ásia-Pacífico (Sydney)

  • Á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)

  • 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)