Tutorial: automatizar o gerenciamento de seus próprios endpoints de ambiente no Amazon MWAA
Se você usa o AWS Organizations para gerenciar várias Contas da AWS que compartilham recursos, o Amazon MWAA permite criar e gerenciar seus próprios endpoints da Amazon VPC. Isso significa que você pode usar políticas de segurança mais rígidas que permitam acessar somente os recursos exigidos pelo seu ambiente.
Ao criar um ambiente em uma Amazon VPC compartilhada, 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 então exibir, criar, modificar e excluir ambientes na VPC compartilhada.
Ao criar um ambiente em uma Amazon VPC compartilhada ou restrita por política, o Amazon MWAA primeiro cria os recursos da VPC de serviço e, em seguida, entra em um estado PENDING por até 72 horas.
Quando o status do ambiente muda de CREATING para PENDING, o Amazon MWAA envia uma notificação do Amazon EventBridge sobre a mudança de estado. Isso permite que a conta proprietária crie os endpoints necessários em nome dos participantes com base nas informações do serviço de endpoint do console ou da API do Amazon MWAA ou de forma programática. A seguir, criamos endpoints da Amazon VPC usando uma função do Lambda e uma regra do EventBridge que recebe notificações de alteração de estado do Amazon MWAA.
Aqui, criamos os endpoints na mesma Amazon VPC do ambiente. Para configurar uma Amazon VPC compartilhada, crie a regra do EventBridge e a função do Lambda na conta do proprietário e o ambiente do Amazon MWAA na conta do participante.
Tópicos
Pré-requisitos
Para concluir os passos deste tutorial, você precisará do seguinte:
-
...
Criar a Amazon VPC
Use o modelo do CloudFormation e o comando da AWS CLI a seguir para criar uma Amazon VPC. O modelo configura os recursos da Amazon VPC e modifica a política de endpoints para restringir o acesso a uma fila específica.
-
Baixe o modelo do CloudFormation e, em seguida, descompacte o arquivo
.yml. -
Em uma nova janela do prompt de comando, navegue até a pasta em que o modelo foi salvo e use
create-stackpara criar a pilha. O sinalizador--template-bodyespecifica o caminho para o modelo.aws cloudformation create-stack --stack-namestack-name--template-body file://cfn-vpc-private-network.yml
Na próxima seção, você criará a função do Lambda.
Criar a função do Lambda
Use o código Python a seguir e a política JSON do IAM para criar uma função do Lambda e função de execução. Essa função cria endpoints da Amazon VPC para um servidor Web do Apache Airflow privado e uma fila do Amazon SQS. O Amazon MWAA usa o Amazon SQS para enfileirar tarefas com o Celery entre vários trabalhadores ao escalar seu ambiente.
-
Baixe o código da função Python.
-
Faça download da política de permissão do IAM e descompacte o arquivo.
-
Abra um prompt de comando e navegue até a pasta em que a política de permissão do JSON foi salva. Use o comando
create-roledo IAM para criar a função.aws iam create-role --role-namefunction-role\ --assume-role-policy-document file://lambda-mwaa-vpce-policy.jsonObserve o ARN da função na resposta da AWS CLI. Na próxima etapa, especificaremos essa nova função como a função de execução da função usando o ARN.
-
Navegue até a pasta em que o código da função foi salvo e use o comando
create-functionpara criar uma função.aws lambda create-function --function-namemwaa-vpce-lambda\ --zip-file file://mwaa-lambda-shared-vpc.zip --runtime python3.8 --role arn:aws:iam::123456789012:role/function-role--handler lambda_handlerObserve o ARN da função na resposta da AWS CLI. Na próxima etapa, especificaremos o ARN para configurar a função como destino para uma nova regra do EventBridge.
Na próxima seção, você criará a regra do EventBridge que invoca essa função quando o ambiente entra em um estado PENDING.
Criar a regra do EventBridge
Siga as instruções a seguir para criar uma regra que receba as notificações do Amazon MWAA e tenha como destino sua nova função do Lambda.
-
Use o comando
put-ruledo EventBridge para criar uma regra do EventBridge.aws events put-rule --name "mwaa-lambda-rule" \ --event-pattern "{\"source\":[\"aws.airflow\"],\"detail-type\":[\"MWAA Environment Status Change\"]}"O padrão de eventos recebe as notificações que o Amazon MWAA envia sempre que o status de um ambiente muda.
{ "source": ["aws.airflow"], "detail-type": ["MWAA Environment Status Change"] } -
Use o comando
put-targetspara adicionar a função do Lambda com um destino para a nova regra.aws events put-targets --rule "mwaa-lambda-rule" \ --targets "Id"="1","Arn"="arn:aws:lambda:us-east-1:123456789012:function:mwaa-vpce-lambda"
Está tudo pronto para criar um ambiente do Amazon MWAA com endpoints da Amazon VPC gerenciados pelo cliente.
Criar o ambiente do Amazon MWAA
Use o console do Amazon MWAA para criar um ambiente com endpoints da Amazon VPC gerenciados pelo cliente.
-
Abra o console do Amazon MWAA
e escolha Criar um ambiente. -
Em Nome, insira um nome exclusivo.
-
Em Versão do Airflow, escolha a mais recente.
-
Escolha um bucket do Amazon S3 e uma pasta DAGs, como
dags/, para usar com o ambiente, e escolha Next. -
Na página Configurar definições avançadas, faça o seguinte:
-
Em Nuvem privada virtual (VPC), escolha a Amazon VPC criada na etapa anterior.
-
Em Acesso ao servidor Web, escolha Rede pública (acessível pela internet).
-
Em Grupos de segurança, escolha o grupo de segurança criado com o CloudFormation. Como os grupos de segurança dos endpoints de AWS PrivateLink da etapa anterior são autorreferenciados, você deve escolher o mesmo grupo de segurança para o seu ambiente.
-
Em Gerenciamento de endpoints, escolha Endpoints gerenciados pelo cliente.
-
-
Mantenha as configurações padrão restantes e escolha Avançar.
-
Revise suas seleções e escolha Criar ambiente.
dica
Para obter mais informações sobre como configurar um novo ambiente, consulte Introdução ao Amazon MWAA.
Quando o ambiente estiver PENDING, o Amazon MWAA envia uma notificação que corresponde ao padrão de evento que você definiu para a regra. A regra invoca a função do Lambda. A função analisa o evento de notificação e obtém as informações de endpoint necessárias para o servidor Web e a fila do Amazon SQS. Em seguida, ela cria os endpoints na Amazon VPC.
Quando os endpoints estão disponíveis, o Amazon MWAA retoma a criação do ambiente. Quando estiver pronto, o status do ambiente muda para AVAILABLE e você pode acessar o servidor do Web Apache Airflow usando o console do Amazon MWAA.