Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyiapkan domain khusus untuk server web Apache Airflow
Alur Kerja Terkelola Amazon untuk Apache Airflow (Amazon MWAA) memungkinkan Anda menyiapkan domain khusus untuk server web Apache Airflow yang dikelola. Dengan menggunakan domain khusus, Anda dapat mengakses server web Apache Airflow yang dikelola Amazon MWAA di lingkungan Anda menggunakan Apache Airflow UI, Apache Airflow CLI, atau server web Apache Airflow.
catatan
Anda hanya dapat menggunakan domain khusus dengan server web pribadi tanpa akses internet.
Kasus penggunaan untuk domain khusus di Amazon MWAA
-
Bagikan domain server web di seluruh aplikasi cloud Anda AWS — Menggunakan domain khusus memungkinkan Anda menentukan URL yang mudah digunakan untuk mengakses server web, bukan nama domain layanan yang dihasilkan. Anda dapat menyimpan domain kustom ini dan membagikannya sebagai variabel lingkungan dalam aplikasi Anda.
-
Akses server web pribadi — Jika Anda ingin mengonfigurasi akses untuk server web di VPC tanpa akses internet, menggunakan domain khusus menyederhanakan alur kerja pengalihan URL.
Konfigurasikan domain kustom
Untuk mengonfigurasi fitur domain kustom, Anda perlu memberikan nilai domain khusus melalui konfigurasi webserver.base_url
Apache Airflow saat membuat atau memperbarui lingkungan Amazon MWAA Anda. Batasan berikut berlaku untuk nama domain kustom Anda:
-
Nilai harus berupa nama domain yang sepenuhnya memenuhi syarat (FQDN) tanpa protokol atau jalur apa pun. Misalnya,
your-custom-domain.com
. -
Amazon MWAA tidak mengizinkan jalur di URL. Misalnya,
your-custom-domain.com/dags/
bukan nama domain kustom yang valid. -
Panjang URL dibatasi hingga 255 karakter ASCII.
-
Jika Anda memberikan string kosong, secara default, lingkungan akan dibuat dengan URL server web yang dihasilkan oleh Amazon MWAA.
Contoh berikut menunjukkan penggunaan AWS CLI untuk membuat lingkungan dengan nama domain server web kustom.
$
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
Setelah lingkungan dibuat atau diperbarui, Anda perlu mengatur infrastruktur jaringan di AWS akun Anda untuk mengakses server web pribadi melalui domain khusus.
Untuk kembali ke URL default yang dihasilkan layanan, perbarui lingkungan pribadi Anda dan hapus opsi konfigurasi. webserver.base_url
Menyiapkan infrastruktur jaringan
Gunakan langkah-langkah berikut untuk menyiapkan infrastruktur jaringan yang diperlukan untuk digunakan dengan domain kustom Anda di AWS akun Anda.
-
Dapatkan alamat IP untuk Antarmuka Jaringan Endpoint Amazon VPC (ENI). Untuk melakukan ini, pertama, gunakan
get-environment
WebserverVpcEndpointService
untuk menemukan lingkungan Anda.$
aws mwaa get-environment --name
your-environment-name
Jika berhasil, Anda akan melihat output yang mirip dengan berikut ini.
{ "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" } }Perhatikan
WebserverVpcEndpointService
nilainya dan gunakan untukweb-server-vpc-endpoint-service
perintah Amazon EC2describe-vpc-endpoints
berikut.--filters Name=service-name,Values=
dalam perintah berikut.web-server-vpc-endpoint-service-id
-
Ambil detail titik akhir VPC Amazon. Perintah ini mengambil detail tentang titik akhir VPC Amazon yang cocok dengan nama layanan tertentu, mengembalikan ID titik akhir dan ID antarmuka jaringan terkait dalam format teks.
$
aws ec2 describe-vpc-endpoints \ --filters Name=service-name,Values=
web-server-vpc-endpoint-service
\ --query 'VpcEndpoints[*].{EndpointId:VpcEndpointId,NetworkInterfaceIds:NetworkInterfaceIds}' \ --output text -
Dapatkan detail antarmuka jaringan. Perintah ini mengambil alamat IP pribadi untuk setiap antarmuka jaringan yang terkait dengan titik akhir VPC Amazon yang diidentifikasi pada langkah sebelumnya.
$
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 -
Gunakan
create-target-group
untuk membuat grup target baru. Anda akan menggunakan grup target ini untuk mendaftarkan alamat IP untuk server web Anda titik akhir Amazon VPC.$
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"'Daftarkan alamat IP menggunakan
register-targets
perintah.$
aws elbv2 register-targets \ --target-group-arn
target-group-arn
\ --targets Id=ip-address-1
Id=ip-address-2
-
Minta sertifikat ACM. Lewati langkah ini jika Anda menggunakan sertifikat yang ada.
$
aws acm request-certificate \ --domain-name
my-custom-domain.com
\ --validation-method DNS -
Konfigurasikan Application Load Balancer. Pertama, buat penyeimbang beban, lalu buat pendengar untuk penyeimbang beban. Tentukan sertifikat ACM yang Anda buat pada langkah sebelumnya.
$
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
Jika Anda menggunakan Network Load Balancer di subnet pribadi, siapkan host bastion atau AWS VPN terowongan untuk mengakses server web.
-
Buat zona yang dihosting menggunakan Route 53 untuk domain.
$
aws route53 create-hosted-zone --name my-custom-domain.com \ --caller-reference 1
Buat catatan A untuk domain. Untuk melakukan ini menggunakan AWS CLI, dapatkan ID zona yang dihosting menggunakan
list-hosted-zones-by-name
lalu terapkan catatan denganchange-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 } } } ] }' -
Perbarui aturan grup keamanan untuk server web Amazon VPC endpoint untuk mengikuti prinsip hak istimewa terkecil dengan mengizinkan lalu lintas HTTPS hanya dari subnet publik tempat Application Load Balancer berada. Simpan JSON berikut secara lokal. Misalnya, sebagai
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
" } ] }Jalankan perintah Amazon EC2 berikut untuk memperbarui aturan grup keamanan ingress Anda. Tentukan file JSON untuk
--ip-permissions
.$
aws ec2 authorize-security-group-ingress \ --group-id <security-group-id> \ --ip-permissions file://
sg-ingress-ip-permissions.json
Jalankan perintah Amazon EC2 berikut untuk memperbarui aturan jalan keluar Anda.
$
aws ec2 authorize-security-group-egress \ --group-id
webserver-vpc-endpoint-security-group-id
\ --protocol tcp \ --port 443 \ --source-groupload-balancer-security-group-id
Buka konsol Amazon MWAA dan arahkan ke Apache Airflow UI. Jika Anda menyiapkan Network Load Balancer di subnet pribadi alih-alih Application Load Balancer yang digunakan di sini, Anda harus mengakses server web dengan salah satu opsi berikut.