Administración de sus propios puntos de conexión de Amazon VPC en Amazon MWAA - Amazon Managed Workflows para Apache Airflow

Administración de sus propios puntos de conexión de Amazon VPC en Amazon MWAA

Amazon MWAA utiliza los puntos de conexión de Amazon VPC para integrarse con varios servicios de AWS necesarios para configurar un entorno de Apache Airflow. La administración de sus propios puntos de conexión tiene dos casos de uso principales:

  1. Esto significa que puede crear entornos de Apache Airflow en una Amazon VPC compartida cuando utiliza una AWS Organizations para administrar varias cuentas de AWS y compartir recursos.

  2. Le permite utilizar políticas de acceso más restrictivas, ya que limita sus permisos a los recursos específicos que utilizan sus puntos de conexión.

Si decide administrar sus propios puntos de conexión de VPC, es responsable de crear sus propios puntos de conexión para la base de datos de RDS para PostgreSQL del entorno y para el servidor web del entorno.

Para obtener más información sobre cómo implementa Amazon MWAA Apache Airflow en la nube, consulte el diagrama de arquitectura de Amazon MWAA.

Creación de entornos en una Amazon VPC compartida

Si utiliza AWS Organizations para administrar varias cuentas de AWS que comparten recursos, puede usar puntos de conexión de VPC administrados por el cliente con Amazon MWAA para compartir los recursos del entorno con otra cuenta en su organización.

Cuando configura el acceso compartido a la VPC, la cuenta propietaria de la Amazon VPC principal (propietaria) comparte las dos subredes privadas requeridas por Amazon MWAA con otras cuentas (participantes) que pertenecen a la misma organización. Las cuentas participantes que comparten esas subredes pueden ver, crear, modificar y eliminar entornos en la Amazon VPC compartida.

Suponga que tiene una cuenta Owner, que actúa como la cuenta Root de la organización y es propietaria de los recursos de Amazon VPC, y una cuenta participante, Participant, que es miembro de la misma organización. Cuando Participant crea un nuevo Amazon MWAA en la Amazon VPC que comparte con Owner, Amazon MWAA primero creará los recursos de la VPC de servicio y luego entrará en un estado PENDING durante un máximo de 72 horas.

Después de que el estado del entorno cambia de CREATING a PENDING, una entidad principal que actúa en nombre de Owner crea los puntos de conexión requeridos. Para ello, Amazon MWAA muestra la base de datos y el punto de conexión del servidor web en la consola de Amazon MWAA. También puede llamar a la acción de la API GetEnvironment para obtener los puntos de conexión del servicio.

nota

Si la Amazon VPC que utiliza para compartir recursos es una Amazon VPC privada, debe seguir los pasos descritos en Administración del acceso a los puntos de conexión de Amazon VPC específicos del servicio en Amazon MWAA. El tema trata sobre la configuración de un conjunto diferente de puntos de conexión de Amazon VPC relacionados con otros servicios de AWS con los que AWS se integra, como Amazon ECR, Amazon ECS y Amazon SQS. Estos servicios son fundamentales para operar y administrar su entorno de Apache Airflow en la nube.

Requisitos previos

Antes de crear un entorno de Amazon MWAA en una VPC compartida, necesita los siguientes recursos:

  • Una cuenta de AWS, Owner, que se utilizará como la cuenta propietaria de la Amazon VPC.

  • Una unidad organizativa AWS Organizations, MyOrganization, creada como una raíz.

  • Una segunda cuenta de AWS, Participant, bajo MyOrganization para servir a la cuenta participante que crea el nuevo entorno.

Además, le recomendamos que se familiarice con las responsabilidades y los permisos para propietarios y participantes a la hora de compartir recursos en la Amazon VPC.

Creación de la Amazon VPC

En primer lugar, cree una nueva Amazon VPC que compartirán las cuentas propietaria y participante:

  1. Inicie sesión en la consola mediante Owner y, a continuación, abra la consola de AWS CloudFormation. Use la siguiente plantilla para crear una pila. Esta pila proporciona una serie de recursos de red, incluida una Amazon VPC y las subredes que las dos cuentas compartirán en este escenario.

    AWSTemplateFormatVersion: "2010-09-09" Description: >- This template deploys a VPC, with a pair of public and private subnets spread across two Availability Zones. It deploys an internet gateway, with a default route on the public subnets. It deploys a pair of NAT gateways (one in each AZ), and default routes for them in the private subnets. Parameters: EnvironmentName: Description: An environment name that is prefixed to resource names Type: String Default: mwaa- VpcCIDR: Description: Please enter the IP range (CIDR notation) for this VPC Type: String Default: 10.192.0.0/16 PublicSubnet1CIDR: Description: >- Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone Type: String Default: 10.192.10.0/24 PublicSubnet2CIDR: Description: >- Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone Type: String Default: 10.192.11.0/24 PrivateSubnet1CIDR: Description: >- Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone Type: String Default: 10.192.20.0/24 PrivateSubnet2CIDR: Description: >- Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone Type: String Default: 10.192.21.0/24 Resources: VPC: Type: 'AWS::EC2::VPC' Properties: CidrBlock: !Ref VpcCIDR EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: !Ref EnvironmentName InternetGateway: Type: 'AWS::EC2::InternetGateway' Properties: Tags: - Key: Name Value: !Ref EnvironmentName InternetGatewayAttachment: Type: 'AWS::EC2::VPCGatewayAttachment' Properties: InternetGatewayId: !Ref InternetGateway VpcId: !Ref VPC PublicSubnet1: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref VPC AvailabilityZone: !Select - 0 - !GetAZs '' CidrBlock: !Ref PublicSubnet1CIDR MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub '${EnvironmentName} Public Subnet (AZ1)' PublicSubnet2: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref VPC AvailabilityZone: !Select - 1 - !GetAZs '' CidrBlock: !Ref PublicSubnet2CIDR MapPublicIpOnLaunch: true Tags: - Key: Name Value: !Sub '${EnvironmentName} Public Subnet (AZ2)' PrivateSubnet1: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref VPC AvailabilityZone: !Select - 0 - !GetAZs '' CidrBlock: !Ref PrivateSubnet1CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub '${EnvironmentName} Private Subnet (AZ1)' PrivateSubnet2: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref VPC AvailabilityZone: !Select - 1 - !GetAZs '' CidrBlock: !Ref PrivateSubnet2CIDR MapPublicIpOnLaunch: false Tags: - Key: Name Value: !Sub '${EnvironmentName} Private Subnet (AZ2)' NatGateway1EIP: Type: 'AWS::EC2::EIP' DependsOn: InternetGatewayAttachment Properties: Domain: vpc NatGateway2EIP: Type: 'AWS::EC2::EIP' DependsOn: InternetGatewayAttachment Properties: Domain: vpc NatGateway1: Type: 'AWS::EC2::NatGateway' Properties: AllocationId: !GetAtt NatGateway1EIP.AllocationId SubnetId: !Ref PublicSubnet1 NatGateway2: Type: 'AWS::EC2::NatGateway' Properties: AllocationId: !GetAtt NatGateway2EIP.AllocationId SubnetId: !Ref PublicSubnet2 PublicRouteTable: Type: 'AWS::EC2::RouteTable' Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub '${EnvironmentName} Public Routes' DefaultPublicRoute: Type: 'AWS::EC2::Route' DependsOn: InternetGatewayAttachment Properties: RouteTableId: !Ref PublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref InternetGateway PublicSubnet1RouteTableAssociation: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet1 PublicSubnet2RouteTableAssociation: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref PublicRouteTable SubnetId: !Ref PublicSubnet2 PrivateRouteTable1: Type: 'AWS::EC2::RouteTable' Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub '${EnvironmentName} Private Routes (AZ1)' DefaultPrivateRoute1: Type: 'AWS::EC2::Route' Properties: RouteTableId: !Ref PrivateRouteTable1 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NatGateway1 PrivateSubnet1RouteTableAssociation: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref PrivateRouteTable1 SubnetId: !Ref PrivateSubnet1 PrivateRouteTable2: Type: 'AWS::EC2::RouteTable' Properties: VpcId: !Ref VPC Tags: - Key: Name Value: !Sub '${EnvironmentName} Private Routes (AZ2)' DefaultPrivateRoute2: Type: 'AWS::EC2::Route' Properties: RouteTableId: !Ref PrivateRouteTable2 DestinationCidrBlock: 0.0.0.0/0 NatGatewayId: !Ref NatGateway2 PrivateSubnet2RouteTableAssociation: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref PrivateRouteTable2 SubnetId: !Ref PrivateSubnet2 SecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupName: mwaa-security-group GroupDescription: Security group with a self-referencing inbound rule. VpcId: !Ref VPC SecurityGroupIngress: Type: 'AWS::EC2::SecurityGroupIngress' Properties: GroupId: !Ref SecurityGroup IpProtocol: '-1' SourceSecurityGroupId: !Ref SecurityGroup Outputs: VPC: Description: A reference to the created VPC Value: !Ref VPC PublicSubnets: Description: A list of the public subnets Value: !Join - ',' - - !Ref PublicSubnet1 - !Ref PublicSubnet2 PrivateSubnets: Description: A list of the private subnets Value: !Join - ',' - - !Ref PrivateSubnet1 - !Ref PrivateSubnet2 PublicSubnet1: Description: A reference to the public subnet in the 1st Availability Zone Value: !Ref PublicSubnet1 PublicSubnet2: Description: A reference to the public subnet in the 2nd Availability Zone Value: !Ref PublicSubnet2 PrivateSubnet1: Description: A reference to the private subnet in the 1st Availability Zone Value: !Ref PrivateSubnet1 PrivateSubnet2: Description: A reference to the private subnet in the 2nd Availability Zone Value: !Ref PrivateSubnet2 SecurityGroupIngress: Description: Security group with self-referencing inbound rule Value: !Ref SecurityGroupIngress
  2. Después de que se hayan aprovisionado los nuevos recursos de la Amazon VPC, navegue a la consola de AWS Resource Access Manager y luego elija Crear recurso compartido.

  3. Elija las subredes que creó en el primer paso de la lista de subredes disponibles que puede compartir con Participant.

Crear el entorno

Complete los siguientes pasos para crear entornos de Amazon MWAA con puntos de conexión de Amazon VPC administrados por el cliente.

  1. Inicie sesión mediante Participant y abra la consola de Amazon MWAA. Complete el primer paso: especificar los detalles para especificar un bucket de Amazon S3, una carpeta DAG y las dependencias para su nuevo entorno. Para obtener más información, consulte Introducción.

  2. En la página Configurar ajustes avanzados, en Redes, seleccione las subredes de la Amazon VPC compartida.

  3. En Administración del punto de conexión, seleccione CLIENTE en la lista desplegable.

  4. Mantenga el valor predeterminado para el resto de las opciones de la página y, a continuación, seleccione Crear entorno en la página Revisar y crear.

El entorno comienza en un estado CREATING y, a continuación, cambia a PENDING. Cuando el entorno esté en PENDING, anote el nombre del servicio de punto de conexión de la base de datos y el nombre del servicio de punto de conexión del servidor web (si ha configurado un servidor web privado) mediante la consola.

Cuándo crea un entorno nuevo con la consola de Amazon MWAA. Amazon MWAA crea un nuevo grupo de seguridad con las reglas de entrada y salida necesarias. Anote el ID del grupo de seguridad.

En la siguiente sección, Owner utilizará los puntos de conexión del servicio y el ID del grupo de seguridad para crear nuevos puntos de conexión de Amazon VPC en la Amazon VPC compartida.

Creación de los puntos de conexión de Amazon VPC

Complete los siguientes pasos para crear puntos de conexión de Amazon VPC para su entorno.

  1. Inicie sesión en la AWS Management Console mediante Owner y abra https://console.aws.amazon.com/vpc/.

  2. Seleccione Grupos de seguridad en el panel de navegación izquierdo y, a continuación, cree un nuevo grupo de seguridad en la Amazon VPC compartida con las siguientes reglas de entrada y salida:

    Tipo Protocolo Tipo de origen Origen

    Entrada

    Todo el tráfico Todos Todos

    El grupo de seguridad de su entorno

    Salida

    Todo el tráfico Todos Todos 0.0.0.0/0
    aviso

    La cuenta Owner debe configurar un grupo de seguridad en la cuenta Owner para permitir el tráfico desde el nuevo entorno a la Amazon VPC compartida. Para hacerlo, puede crear un nuevo grupo de seguridad en Owner o editar uno existente.

  3. Elija los puntos de conexión y, a continuación, cree nuevos puntos de conexión para la base de datos del entorno y el servidor web (si están en modo privado) con los nombres de los servicios de puntos de conexión de los pasos anteriores. Elija la Amazon VPC compartida, las subredes que utilizó para el entorno y el grupo de seguridad del entorno.

Si se ejecuta correctamente, el entorno cambiará de PENDING a CREATING y, finalmente, a AVAILABLE. Cuando esté AVAILABLE, podrá iniciar sesión en la consola de Apache Airflow.

Resolución de problemas de la Amazon VPC compartida

Utilice la siguiente referencia para resolver los problemas que surjan cuando crea entornos en una Amazon VPC compartida.

El entorno se encuentra en CREATE_FAILED luego del estado PENDING
  • Compruebe que Owner comparte las subredes con Participant utilizando AWS Resource Access Manager.

  • Compruebe que los puntos de conexión de Amazon VPC para la base de datos y el servidor web se hayan creado en las mismas subredes asociadas con el entorno.

  • Compruebe que el grupo de seguridad que se usa con sus puntos de conexión permita el tráfico de los grupos de seguridad que se usan para el entorno. La cuenta Owner crea reglas que hacen referencia al grupo de seguridad en Participant como account-number/security-group-id.

    Tipo Protocolo Tipo de origen Origen
    Todo el tráfico Todos Todos 123456789012/sg-0909e8e81919

    Para obtener más información, consulte Responsabilidades y permisos para propietarios y participantes

El entorno está atascado en estado PENDING

Compruebe el estado de cada punto de conexión de VPC para asegurarse de que está Available. Si configura un entorno con un servidor web privado, también debe crear un punto de conexión para el servidor web. Si el entorno está atascado en PENDING, esto podría indicar que falta el punto de conexión del servidor web privado.

Error The Vpc Endpoint Service 'vpce-service-name' does not exist recibido

Si aparece el siguiente error, compruebe que la cuenta que crea los puntos de conexión en la cuenta Owner es la propietaria de la VPC compartida:

ClientError: An error occurred (InvalidServiceName) when calling the CreateVpcEndpoint operation: 

The Vpc Endpoint Service 'vpce-service-name' does not exist