Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Amazon Managed Workflows for Apache Airflow (Amazon MWAA) consente di configurare un dominio personalizzato per il server Web Apache Airflow gestito. Utilizzando un dominio personalizzato, puoi accedere al server Web Apache Airflow gestito da Amazon MWAA del tuo ambiente utilizzando l'interfaccia utente Apache Airflow, l'Apache Airflow CLI o il server Web Apache Airflow.
Nota
Puoi utilizzare un dominio personalizzato solo con un server Web privato senza accesso a Internet.
Casi d'uso per un dominio personalizzato su Amazon MWAA
-
Condividi il dominio del server Web su tutta la tua applicazione cloud AWS : l'utilizzo di un dominio personalizzato consente di definire un URL intuitivo per l'accesso al server Web, anziché il nome di dominio del servizio generato. Puoi archiviare questo dominio personalizzato e condividerlo come variabile di ambiente nelle tue applicazioni.
-
Accedi a un server Web privato: se desideri configurare l'accesso per un server Web in un VPC senza accesso a Internet, l'utilizzo di un dominio personalizzato semplifica il flusso di lavoro di reindirizzamento degli URL.
Configura il dominio personalizzato
Per configurare la funzionalità di dominio personalizzato, devi fornire il valore del dominio personalizzato tramite la configurazione webserver.base_url
Apache Airflow durante la creazione o l'aggiornamento del tuo ambiente Amazon MWAA. I seguenti vincoli si applicano al tuo nome di dominio personalizzato:
-
Il valore deve essere un nome di dominio completo (FQDN) senza protocolli o percorsi. Ad esempio
your-custom-domain.com
. -
Amazon MWAA non consente un percorso nell'URL. Ad esempio, non
your-custom-domain.com/dags/
è un nome di dominio personalizzato valido. -
La lunghezza dell'URL è limitata a 255 caratteri ASCII.
-
Se fornisci una stringa vuota, per impostazione predefinita, l'ambiente verrà creato con un URL del server Web generato da Amazon MWAA.
L'esempio seguente mostra l'utilizzo di AWS CLI per creare un ambiente con un nome di dominio del server Web personalizzato.
$
aws mwaa create-environment \
--name my-mwaa-env \
--source-bucket-arn arn:aws:s3:::my-bucket \
--airflow-configuration-options '{"webserver.base_url":"my-custom-domain.com
"}' \
--network-configuration '{"SubnetIds":["subnet-0123456789abcdef","subnet-fedcba9876543210"]}' \
--execution-role-arn arn:aws:iam::123456789012:role/my-execution-role
Dopo aver creato o aggiornato l'ambiente, è necessario configurare l'infrastruttura di rete del proprio AWS account per accedere al server Web privato tramite il dominio personalizzato.
Per tornare all'URL predefinito generato dal servizio, aggiorna l'ambiente privato e rimuovi l'webserver.base_url
opzione di configurazione.
Configura l'infrastruttura di rete
Utilizza i seguenti passaggi per configurare l'infrastruttura di rete richiesta da utilizzare con il dominio personalizzato nel tuo AWS account.
-
Ottieni gli indirizzi IP per Amazon VPC Endpoint Network Interfaces (ENI). Per fare ciò, usa innanzitutto
get-environment
to find the WebserverVpcEndpointService
per il tuo ambiente.$
aws mwaa get-environment --name
your-environment-name
In caso di successo, verrà visualizzato un risultato simile al seguente.
{ "Environment": { "AirflowConfigurationOptions": {}, "AirflowVersion": "
latest-version
", "Arn": "environment-arn
", "CreatedAt": "2024-06-01T01:00:00-00:00", "DagS3Path": "dags", . . . "WebserverVpcEndpointService": "web-server-vpc-endpoint-service
", "WeeklyMaintenanceWindowStart": "TUE:21:30" } }Annota il
WebserverVpcEndpointService
valore e usaloweb-server-vpc-endpoint-service
nel seguente EC2describe-vpc-endpoints
comando Amazon.--filters Name=service-name,Values=
nel comando seguente.web-server-vpc-endpoint-service-id
-
Recupera i dettagli dell'endpoint Amazon VPC. Questo comando recupera i dettagli sugli endpoint Amazon VPC che corrispondono a un nome di servizio specifico, restituendo l'ID dell'endpoint e l' IDs interfaccia di rete associata in un formato di testo.
$
aws ec2 describe-vpc-endpoints \ --filters Name=service-name,Values=
web-server-vpc-endpoint-service
\ --query 'VpcEndpoints[*].{EndpointId:VpcEndpointId,NetworkInterfaceIds:NetworkInterfaceIds}' \ --output text -
Ottieni i dettagli dell'interfaccia di rete. Questo comando recupera gli indirizzi IP privati per ogni interfaccia di rete associata agli endpoint Amazon VPC identificati nel passaggio precedente.
$
for eni_id in $( aws ec2 describe-vpc-endpoints \ --filters Name=service-name,Values=
service-id
\ --query 'VpcEndpoints[*].NetworkInterfaceIds' \ --output text ); do aws ec2 describe-network-interfaces \ --network-interface-ids $eni_id \ --query 'NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress' \ --output text done -
Utilizzalo
create-target-group
per creare un nuovo gruppo target. Utilizzerai questo gruppo target per registrare gli indirizzi IP per gli endpoint Amazon VPC del tuo server web.$
aws elbv2 create-target-group \ --name
new-target-group-namne
\ --protocol HTTPS \ --port 443 \ --vpc-idweb-server-vpc-id
\ --target-type ip \ --health-check-protocol HTTPS \ --health-check-port 443 \ --health-check-path / \ --health-check-enabled \ --matcher 'HttpCode="200,302"'Registra gli indirizzi IP utilizzando il
register-targets
comando.$
aws elbv2 register-targets \ --target-group-arn
target-group-arn
\ --targets Id=ip-address-1
Id=ip-address-2
-
Richiedi un certificato ACM. Salta questo passaggio se utilizzi un certificato esistente.
$
aws acm request-certificate \ --domain-name
my-custom-domain.com
\ --validation-method DNS -
Configura un sistema Application Load Balancer. Innanzitutto, crea il sistema di bilanciamento del carico, quindi crea un listener per il sistema di bilanciamento del carico. Specificate il certificato ACM creato nel passaggio precedente.
$
aws elbv2 create-load-balancer \ --name
my-mwaa-lb
\ --type application \ --subnetssubnet-id-1
subnet-id-2
$
aws elbv2 create-listener \ --load-balancer-arn
load-balancer-arn
\ --protocol HTTPS \ --port 443 \ --ssl-policy ELBSecurityPolicy-2016-08 \ --certificates CertificateArn=acm-certificate-arn
\ --default-actions Type=forward,TargetGroupArn=target-group-arn
Se utilizzi un Network Load Balancer in una sottorete privata, configurate un host o un AWS VPN tunnel bastion per accedere al server web.
-
Crea una zona ospitata utilizzando Route 53 per il dominio.
$
aws route53 create-hosted-zone --name my-custom-domain.com \ --caller-reference 1
Crea un record A per il dominio. Per fare ciò utilizzando AWS CLI, ottieni l'ID della zona ospitata utilizzando
list-hosted-zones-by-name
quindi applica il record conchange-resource-record-sets
.$
HOSTED_ZONE_ID=$(aws route53 list-hosted-zones-by-name \ --dns-name my-custom-domain.com \ --query 'HostedZones[0].Id' --output text)
$
aws route53 change-resource-record-sets \ --hosted-zone-id $HOSTED_ZONE_ID \ --change-batch '{ "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "
my-custom-domain.com
", "Type": "A", "AliasTarget": { "HostedZoneId": "load-balancer-hosted-zone-id
>", "DNSName": "load-balancer-dns-name
", "EvaluateTargetHealth": true } } } ] }' -
Aggiorna le regole del gruppo di sicurezza per l'endpoint Amazon VPC del server Web in modo che segua il principio del privilegio minimo, consentendo il traffico HTTPS solo dalle sottoreti pubbliche in cui si trova l'Application Load Balancer. Salva il seguente codice JSON in locale. Ad esempio, come
sg-ingress-ip-permissions.json
.[ { "IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "UserIdGroupPairs": [ { "GroupId": "
load-balancer-security-group-id
" } ], "IpRanges": [ { "CidrIp": "public-subnet-1-cidr
" }, { "CidrIp": "public-subnet-2-cidr
" } ] } ]Esegui il seguente EC2 comando Amazon per aggiornare le regole del tuo gruppo di sicurezza in ingresso. Specificate il file JSON per.
--ip-permissions
$
aws ec2 authorize-security-group-ingress \ --group-id <security-group-id> \ --ip-permissions file://
sg-ingress-ip-permissions.json
Esegui il seguente EC2 comando Amazon per aggiornare le regole di uscita.
$
aws ec2 authorize-security-group-egress \ --group-id
webserver-vpc-endpoint-security-group-id
\ --protocol tcp \ --port 443 \ --source-groupload-balancer-security-group-id
Apri la console Amazon MWAA e accedi all'interfaccia utente di Apache Airflow. Se state configurando un Network Load Balancer in una sottorete privata anziché nell'Application Load Balancer usato qui, dovete accedere al server web con una delle seguenti opzioni.