Uso de Amazon Data Firehose con AWS PrivateLink
Puede utilizar un punto de conexión de VPC de interfaz (AWS PrivateLink) para acceder a Amazon Data Firehose desde su VPC sin necesidad de una puerta de enlace de Internet o una puerta de enlace NAT. Los puntos de conexión de VPC de interfaz no requieren una puerta de enlace de Internet, un dispositivo NAT, una conexión de VPN ni una conexión de AWS Direct Connect. Los puntos de conexión de VPC de interfaz se basan en AWS PrivateLink, una tecnología de AWS que permite la comunicación privada entre los servicios de AWS mediante una interfaz de red elástica con direcciones IP privadas en Amazon VPC. Para obtener más información, consulte Amazon Virtual Private Cloud.
Uso de puntos de conexión de VPC de interfaz (AWS PrivateLink) para Firehose
Para comenzar, cree un punto de conexión de VPC de interfaz para que el tráfico de Amazon Data Firehose de sus recursos de Amazon VPC comience a circular a través del punto de conexión de VPC de interfaz. Cuando se crea un punto de conexión, puede adjuntar una política de punto de conexión que controle el acceso a Amazon Data Firehose. Para obtener más información acerca del uso de políticas para controlar el acceso desde un punto de conexión de VPC a Amazon Data Firehose, consulte Control del acceso a los servicios con puntos de conexión de VPC.
En el siguiente ejemplo, se muestra cómo puede configurar una función de AWS Lambda en una VPC y crear un punto de conexión de VPC para que la función pueda comunicarse de manera segura con el servicio Amazon Data Firehose. En este ejemplo, utiliza una política que permite a la función de Lambda generar una lista de los flujos de Firehose de la región actual, pero no describir ningún flujo de Firehose.
Crear un punto de conexión de VPC
Inicie sesión en la AWS Management Console y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de la VPC, elija Endpoints (Puntos de enlace).
-
Seleccione Crear punto de conexión.
-
En la lista de nombres de servicio, elija
com.amazonaws.
.your_region
.kinesis-firehose -
Elija la VPC y una o varias subredes en las que se debe crear el punto de enlace.
-
Elija uno o varios grupos de seguridad para asociar con el punto de enlace.
-
En Policy (Política), elija Custom (Personalizada) y pegue la siguiente 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": [ "*" ] } ] }
-
Seleccione Crear punto de conexión.
Creación de un rol de IAM que se usará con la función de Lambda
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de la izquierda, elija Roles y, a continuación, seleccione Crear rol.
-
En Seleccionar tipo de entidad de confianza, deje la selección predeterminada Servicio de AWS.
-
En Choose the service that will use this role (Elegir el servicio que usará este rol), elija Lambda.
-
Elija Next: Permissions (Siguiente: permisos).
-
En la lista de políticas, busque y añada las dos políticas denominadas
AWSLambdaVPCAccessExecutionRole
yAmazonDataFirehoseReadOnlyAccess
.importante
A continuación se muestra un ejemplo: Es posible que necesite políticas más estrictas para su entorno de producción.
-
Elija Siguiente: etiquetas. Para este ejercicio, no es necesario que añada ninguna etiqueta. Elija Siguiente: Revisar.
-
Ingrese un nombre para el rol y, a continuación, seleccione Crear rol.
Creación de una función de Lambda en la VPC
Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/
. -
Elija Crear función.
-
Elija Crear desde cero.
-
Introduzca un nombre para la función y establezca Runtime (Tiempo de ejecución) en
Python 3.9
o versiones posteriores. -
En Permissions (Permisos), expanda Choose or create an execution role (Seleccionar o crear un rol de ejecución).
-
En la lista Execution role (Rol de ejecución), elija Use an existing role (Usar un rol existente).
-
En la lista Existing role (Rol existente), elija el rol que creó antes.
-
Elija Crear función.
-
En Function code (Código de la función), pegue el siguiente código.
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.")
-
En Basic settings (Configuración básica), establezca el tiempo de espera en 1 minuto.
-
En Network (Red), elija la VPC en la que creó el punto de enlace y, a continuación, elija las subredes y el grupo de seguridad con los que asoció el punto de enlace cuando lo creó.
-
Cerca de la parte superior de la página, elija Guardar.
-
Seleccione Probar.
-
Ingrese un nombre de evento y, a continuación, elija Crear.
-
Elija Test (Probar) de nuevo. Esto hace que la función se ejecute. Cuando aparezca el resultado de la ejecución, expanda Details (Detalles) y compare la salida de registro con el código de la función. Si la ejecución se realiza correctamente, los resultados muestran una lista de flujos de Firehose de la región, así como la siguiente salida:
Calling describe_delivery_stream.
AccessDeniedException
Access denied test succeeded.
Regiones de AWS admitidas
Los puntos de conexión de VPC de interfaz se admiten actualmente en las siguientes regiones.
-
US East (Ohio)
-
Este de EE. UU. (Norte de Virginia)
-
Oeste de EE. UU. (Norte de California)
-
Oeste de EE. UU. (Oregón)
-
Asia-Pacífico (Bombay)
-
Asia-Pacífico (Seúl)
-
Asia-Pacífico (Singapur)
-
Asia-Pacífico (Sídney)
-
Asia-Pacífico (Tokio)
-
Asia-Pacífico (Hong Kong)
-
Canadá (centro)
-
Oeste de Canadá (Calgary
-
China (Pekín)
-
China (Ningxia)
-
Europa (Fráncfort)
-
Europa (Irlanda)
-
Europa (Londres)
-
Europa (París)
-
América del Sur (São Paulo)
-
AWS GovCloud (Este de EE. UU.)
-
AWS GovCloud (Oeste de EE. UU.)
-
Europa (España)
-
Medio Oriente (EAU)
-
Asia-Pacífico (Yakarta)
-
Asia-Pacífico (Osaka)
-
Israel (Tel Aviv)
-
Asia-Pacífico (Malasia)