Amazon Managed Workflows for Apache Airflow(Amazon MWAA) 환경에서 Apache Airflow UI를 열려고 하면 "Connection timed out" 오류가 발생합니다.
간략한 설명
Amazon MWAA 환경은 Apache Airflow UI에 대한 퍼블릭 및 프라이빗 액세스 모드를 제공합니다. 퍼블릭 액세스 모드에서는 Apache Airflow 웹 서버를 인터넷에 개방하여 추가 설정 없이 액세스할 수 있습니다. 하지만 보안 그룹을 사용하여 Apache Airflow 웹 서버의 네트워크 액세스를 제어할 수는 없습니다. 따라서 이 옵션은 프라이빗 액세스 모드에 비해 덜 안전한 것으로 간주됩니다. 프라이빗 액세스 모드에서는 Apache Airflow 웹 서버가 해당 환경의 Amazon Virtual Private Cloud(Amazon VPC) 내에서만 노출됩니다. Amazon MWAA는 각 환경의 VPC에 VPC 엔드포인트를 생성합니다. 따라서 Apache Airflow UI에 액세스하려면 VPC에 액세스해야 합니다. 프라이빗 네트워크 액세스 모드에는 추가 네트워킹 설정이 필요합니다.
해결 방법
다음 방법 중 하나를 사용하여 프라이빗 네트워크 액세스 모드에서 Apache Airflow 웹 서버에 액세스할 수 있습니다.
AWS Direct Connect 또는 VPN
온프레미스 네트워크를 Amazon VPC에 연결하기 위한 AWS Direct Connect 또는 VPN 연결이 있는 경우 네트워킹 팀에 문의하여 Amazon MWAA 웹 서버 주소에 대한 액세스를 구성하십시오. 네트워크 경로를 설정한 후 환경에 연결된 보안 그룹을 검토하여 Amazon MWAA 웹 서버가 소스 IP 또는 서브넷의 HTTPS(TCP 443) 트래픽을 허용하는지 확인합니다. AWS Client VPN을 사용하여 프라이빗 네트워크 액세스를 구성할 수도 있습니다.
여전히 문제가 발생하는 경우 다음을 시도해 보십시오.
- nslookup 또는 디그(dig <airflow-web-server-address>)와 같은 도구를 사용하여 DNS 해석을 확인합니다.
- 텔넷(telnet <airflow-web-server-address-443>)과 같은 도구를 사용하여 포트 수준 연결을 확인합니다.
문제가 계속되면 브라우저에 웹 프록시가 구성되어 있는지 확인합니다. 그럴 경우 테스트를 위해 프록시를 비활성화하거나 프록시 구성에서 문제를 해결해 보십시오.
Linux 배스천 호스트
배스천 호스트를 인터넷과 프라이빗 서브넷 간의 중개자로 사용할 수 있습니다. 호스트는 일반적으로 SSH 서버가 실행되는 Linux 시스템입니다. 배스천 호스트로의 SSH 터널을 설정하여 Amazon VPC 내의 리소스에 액세스할 수 있습니다. 그런 다음 FoxyProxy와 같은 브라우저 프록시를 사용하여 SSH 터널을 통해 Apache Airflow UI를 열 수 있습니다. Linux 배스천 호스트를 설정하려면 자습서: Linux 배스천 호스트를 사용하여 프라이빗 네트워크 액세스 구성을 참조하십시오.
Windows 머신과 같이 그래픽 사용자 인터페이스(GUI)가 있는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있는 경우 이 인스턴스를 사용하여 Apache Airflow UI에 액세스할 수 있습니다.
로드 밸런서
로드 밸런서를 인터넷과 프라이빗 서브넷 간의 중개자로 사용할 수도 있습니다. 배스천 호스트와 달리 추가 설정 없이 로드 밸런서의 주소에 직접 액세스할 수 있습니다.
로드 밸런서를 구성하려면 다음과 같이 하십시오.
- MWAA 웹 서버의 프라이빗 IP 주소를 확인합니다. 이 IP 주소를 가져오려면 Apache Airflow UI 주소에서 DNS 조회를 수행합니다(dig +short <airflow-web-server-address>).
- Amazon MWAA 웹 서버의 프라이빗 IP 주소에 대한 대상 그룹을 생성합니다.
- 대상 그룹의 상태 점검 설정에 Matcher의 200 및 302를 포함하도록 구성합니다.
참고: 이 설정을 사용하지 않으면 Apache Airflow 웹 서버가 302 리디렉션으로 응답할 때 대상이 비정상으로 플래그될 수 있습니다.
- HTTPS 리스너와 생성된 대상 그룹을 사용하여 애플리케이션 로드 밸런서를 생성합니다.
참고: HTTPS 리스너를 생성하려면 먼저 SSL 인증서가 있어야 합니다. 선택한 도메인 또는 하위 도메인에 로그인하여 AWS Certificate Manager(ACM)로 SSL 인증서를 생성할 수 있습니다.
- 생성한 애플리케이션 로드 밸런서의 주소를 사용하여 Apache Airflow UI에 액세스할 수 있는지 테스트합니다.
참고: Amazon MWAA에서 Apache Airflow UI에 액세스하려면 웹 로그인 토큰이 필요합니다. 따라서 애플리케이션 로드 밸런서를 통해 Apache Airflow UI에 액세스할 때는 웹 로그인 토큰을 생성하고 이 토큰을 쿼리 문자열로 전달해야 합니다. 이 토큰의 생성을 자동화하려면 페더레이션 ID를 사용하여 프라이빗 Amazon MWAA 환경에 액세스를 참조하십시오.
관련 정보
Apache Airflow 액세스 모드
Apache Airflow UI에 액세스