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á.
Como gerenciar seus próprios endpoints da Amazon VPC no Amazon MWAA
O Amazon MWAA usa endpoints Amazon VPC para se integrar a vários AWS serviços necessários para configurar um ambiente Apache Airflow. O gerenciamento de seus próprios endpoints tem dois casos de uso principais:
-
Isso significa que você pode criar ambientes Apache Airflow em um Amazon VPC compartilhado ao usar um AWS Organizations
para gerenciar várias AWS contas e compartilhar recursos. -
Ele permite usar políticas de acesso mais restritivas, limitando suas permissões aos recursos específicos que usam seus endpoints.
Caso opte por gerenciar seus próprios endpoints da VPC, você será responsável por criar seus próprios endpoints para o ambiente RDS do banco de dados PostgreSQL e para o servidor Web do ambiente.
Para obter mais informações sobre como o Amazon MWAA implanta o Apache Airflow na nuvem, consulte o diagrama de arquitetura do Amazon MWAA.
Como criar um ambiente em uma Amazon VPC compartilhada
Se você usa AWS Organizations
Ao configurar o acesso compartilhado à VPC, a conta proprietária da Amazon VPC central (proprietário) compartilha as duas sub-redes privadas exigidas pelo Amazon MWAA com outras contas (participantes) que pertencem à mesma organização. As contas participantes que compartilham essas sub-redes podem exibir, criar, modificar e excluir ambientes na Amazon VPC compartilhada.
Suponha que você tenha uma conta, Owner
, que atua como a conta Root
na organização e possui os recursos da Amazon VPC, e uma conta participante, Participant
, um membro da mesma organização. Quando Participant
criar um Amazon MWAA na Amazon VPC que compartilha com Owner
, o Amazon MWAA primeiro criará os recursos de VPC do serviço e, em seguida, entrará em um estado PENDING
por até 72 horas.
Depois que o status do ambiente muda de CREATING
para PENDING
, uma entidade principal agindo em nome de Owner
cria os endpoints necessários. Para fazer isso, o Amazon MWAA lista o endpoint do banco de dados e do servidor Web no console do Amazon MWAA. Você também pode chamar a ação da API GetEnvironment
para obter os endpoints do serviço.
nota
Se a Amazon VPC que você usa para compartilhar recursos for uma Amazon VPC privada, ainda será necessário concluir as etapas descritas em Como gerenciar o acesso a endpoints da Amazon VPC específicos do serviço no Amazon MWAA. O tópico aborda a configuração de um conjunto diferente de endpoints do Amazon VPC relacionados a outros AWS serviços que AWS se integram, como Amazon ECR, Amazon ECS e Amazon SQS. Esses serviços são essenciais para operar e gerenciar o ambiente do Apache Airflow na nuvem.
Pré-requisitos
Antes de criar um ambiente do Amazon MWAA em uma VPC compartilhada, você precisa dos seguintes recursos:
-
Uma AWS conta,
Owner
para ser usada como a conta proprietária da Amazon VPC. -
Uma unidade organizacional do AWS Organizations
, um MyOrganization
criado como raiz. -
Uma segunda AWS conta,
Participant
, abaixoMyOrganization
para servir à conta do participante que cria o novo ambiente.
Além disso, recomendamos se familiarizar com as responsabilidades e permissões dos proprietários e participantes ao compartilhar recursos na Amazon VPC.
Criar a Amazon VPC
Primeiro, crie uma Amazon VPC que as contas proprietária e participante compartilharão:
-
Entre no console usando e
Owner
, em seguida, abra o AWS CloudFormation console. Use o modelo a seguir para criar uma pilha. Essa pilha provisiona vários recursos de rede, incluindo uma Amazon VPC, e as sub-redes que as duas contas compartilharão nesse cenário.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
-
Depois que os novos recursos da Amazon VPC tiverem sido provisionados, navegue até o AWS Resource Access Manager console e escolha Criar compartilhamento de recursos.
-
Escolha as sub-redes criadas na primeira etapa na lista de sub-redes disponíveis que você pode compartilhar com
Participant
.
Criar o ambiente do
Conclua as etapas a seguir para criar um ambiente do Amazon MWAA com endpoints da Amazon VPC gerenciados pelo cliente.
-
Faça login usando
Participant
e abra o console do Amazon RDS. Conclua Etapa um: especificar detalhes para especificar um bucket do Amazon S3, uma pasta DAG e dependências para o novo ambiente. Para obter mais informações, consulte Conceitos básicos. -
Na página Definir configurações avançadas, em Rede, escolha as sub-redes da Amazon VPC compartilhada.
-
Em Gerenciamento de endpoints, escolha CLIENTE na lista suspensa.
-
Mantenha o padrão para as opções restantes na página e escolha Criar ambiente na página Revisar e criar.
O ambiente começa em um estado CREATING
e depois muda para PENDING
. Quando o ambiente estiver PENDING
, anote o nome do serviço do endpoint do banco de dados e o nome do serviço do endpoint do servidor Web (caso configure um servidor Web privado) usando o console.
Ao criar um ambiente usando o console do Amazon MWAA. O Amazon MWAA cria um grupo de segurança com as regras de entrada e saída necessárias. Anote o ID do security group.
Na próxima seção, Owner
usará os endpoints de serviço e o ID do grupo de segurança para criar endpoints da Amazon VPC na Amazon VPC compartilhada.
Criar os endpoints da Amazon VPC
Conclua as etapas a seguir para criar os endpoints da Amazon VPC necessários para o ambiente.
-
Faça login no AWS Management Console usando
Owner
, o aberto https://console.aws.amazon.com/vpc/. -
Escolha Grupos de segurança no painel de navegação esquerdo e crie um grupo de segurança na Amazon VPC compartilhada usando as seguintes regras de entrada e saída:
Tipo Protocolo Tipo de origem Origem Entrada
Todo o tráfego Tudo Todos O grupo de segurança do seu ambiente
Saída
Todo o tráfego Tudo Todos 0.0.0.0/0
Atenção
A conta
Owner
deve configurar um grupo de segurança na contaOwner
para permitir o tráfego do novo ambiente para a Amazon VPC compartilhada. Você pode fazer isso criando um grupo de segurança emOwner
ou editando um existente. -
Escolha Endpoints e crie endpoints para o banco de dados do ambiente e o servidor Web (se estiver no modo privado) usando os nomes dos serviços de endpoint das etapas anteriores. Escolha a Amazon VPC compartilhada, as sub-redes usadas no ambiente e o grupo de segurança do ambiente.
Se bem-sucedido, o ambiente mudará de PENDING
para CREATING
e, por fim, para AVAILABLE
. Quando estiver AVAILABLE
, você poderá entrar no console do Apache Airflow.
Solução de problemas da Amazon VPC compartilhada
Use a referência a seguir para resolver problemas encontrados ao criar ambientes em uma Amazon VPC compartilhada.
- Ambiente em
CREATE_FAILED
após o statusPENDING
-
-
Verifique se
Owner
está compartilhando as sub-redes comParticipant
usando AWS Resource Access Manager. -
Verifique se os endpoints da Amazon VPC para o banco de dados e o servidor Web foram criados nas mesmas sub-redes associadas ao ambiente.
-
Verifique se o grupo de segurança usado com seus endpoints permite o tráfego dos grupos de segurança usados para o ambiente. A conta
Owner
cria regras que fazem referência ao grupo de segurança emParticipant
como
:.account-number
/security-group-id
Tipo Protocolo Tipo de origem Origem Todo o tráfego Tudo Todos 123456789012
/sg-0909e8e81919
Para obter mais informações, consulte Responsabilidades e permissões para proprietários e participantes
-
- Ambiente preso no status
PENDING
-
Verifique o status de cada endpoint da VPC para garantir que esteja
Available
. Caso configure um ambiente com um servidor Web privado, também deverá criar um endpoint para o servidor Web. Se o ambiente estiver preso emPENDING
, isso pode indicar que o endpoint do servidor Web privado está ausente. - Erro
The Vpc Endpoint Service '
recebidovpce-service-name
' does not exist -
Caso receba o seguinte erro, verifique se a conta que cria os endpoints está na conta
Owner
que possui a VPC compartilhada:ClientError: An error occurred (InvalidServiceName) when calling the CreateVpcEndpoint operation: The Vpc Endpoint Service '
vpce-service-name
' does not exist