Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)
本頁面說明如何設定資源位置限制,確保 Managed Airflow 儲存的資料位於您指定的位置。
位置限制的運作方式
系統會根據套用至 Managed Airflow 環境建立所在專案的機構政策,決定 Managed Airflow 的位置限制。這項政策是在專案內指派,或是從組織繼承而來。
啟用位置限制後,您就無法在政策禁止的區域建立環境。如果區域列於拒絕清單中,或未列於允許清單中,您就無法在該區域建立環境。
如要啟用環境建立功能,政策必須允許整個區域,而非該區域內的特定可用區。舉例來說,政策必須允許 europe-west3 區域,才能在該區域建立 Managed Airflow 環境。
Managed Airflow 會在下列位置檢查地點限制:
- 建立環境。
- 環境升級 (如果在作業期間建立任何額外資源)。
- 環境更新:適用於舊版環境,不會對 Managed Airflow 依附元件強制執行位置限制。
除了檢查位置限制,Managed Airflow 還會執行下列操作:
- 在區域 Artifact Registry 存放區中儲存使用者自訂的 Airflow 映像檔。舉例來說,在環境中安裝自訂 PyPI 映像檔時,就會建立這類映像檔。
- 如果政策明確禁止使用
US多區域,系統會停用 Cloud Build。在這種情況下,系統會在環境的叢集中建構使用者自訂的 Airflow 映像檔。
在設有資源位置限制的私人 IP 環境中安裝 Python 依附元件
如果為專案設定資源位置限制,就無法使用 Cloud Build 安裝 Python 套件。因此,我們停用了公開網際網路存放區的直接存取權。
如果位置限制不允許使用US多區域,請使用下列其中一種方式,在私有 IP 環境中安裝 Python 依附元件:
在虛擬私有雲網路中使用Proxy 伺服器,連線至公用網際網路上的 PyPI 存放區。在 Cloud Storage bucket 的
/config/pip/pip.conf檔案中指定 Proxy 位址。如果安全性政策允許從外部 IP 位址存取虛擬私有雲網路,您可以設定 Cloud NAT。
將 Python 依附元件儲存在 Cloud Storage bucket 的
dags資料夾中,將其安裝為本機程式庫。如果依附元件樹狀結構很大,這可能不是好選擇。
限制 Managed Airflow 記錄的位置
如果 Managed Airflow 記錄檔含有機密資料,您可能需要將 Managed Airflow 記錄檔重新導向至地區 Cloud Storage bucket。如要這麼做,請使用記錄檔接收器。將記錄重新導向至 Cloud Storage 值區後,系統就不會再將記錄傳送至 Cloud Logging。
gcloud
建立新的 Cloud Storage bucket。
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION更改項目:
- 將
LOCATION替換為環境所在的區域。 - 將
BUCKET_NAME替換為值區名稱。例如:composer-logs-us-central1-example-environment。
- 將
建立新的記錄檔接收器。
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND \ resource.labels.environment_name=ENVIRONMENT_NAME AND \ resource.labels.location=LOCATION"更改項目:
- 將
ENVIRONMENT_NAME替換為環境的名稱。 - 將
BUCKET_NAME替換為值區名稱。 - 將
LOCATION替換為環境所在的區域。
- 將
先前指令的輸出內容包含服務帳號。將「Storage 物件建立者」角色授予這個服務帳戶:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \ --role='roles/storage.objectCreator' \ --condition=None更改項目:
- 將
PROJECT_ID替換為專案 ID。 SA_NUMBER,並使用上一個步驟中gcloud logging sinks create指令提供的服務帳戶。
- 將
從 Logging 排除環境記錄。
gcloud logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter=\ "resource.type=cloud_composer_environment AND \ resource.labels.environment_name=ENVIRONMENT_NAME AND \ resource.labels.location=LOCATION"更改項目:
- 將
ENVIRONMENT_NAME替換為環境的名稱。 - 將
LOCATION替換為環境所在的區域。
- 將