設定資源位置限制

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何設定資源位置限制,確保 Cloud Composer 儲存的資料位於您指定的位置。

地區限制的運作方式

Cloud Composer 的位置限制取決於套用至 Cloud Composer 環境建立所在專案的機構組織政策。這項政策是在專案內指派,或是從機構繼承而來。

啟用位置限制後,您就無法在政策禁止的區域建立環境。如果區域列於拒絕清單中,或未列於允許清單中,您就無法在該區域建立環境。

如要啟用環境建立功能,政策必須允許整個區域,而非該區域內的特定可用區。舉例來說,政策必須允許 europe-west3 地區,才能在該地區建立 Cloud Composer 環境。

Cloud Composer 會在下列時間點檢查位置限制:

  • 建立環境。
  • 環境升級 (如果在作業期間建立任何額外資源)。
  • 環境更新:適用於較舊的環境,這些環境不會對 Cloud Composer 依附元件強制執行位置限制。

除了檢查位置限制外,Cloud Composer 還會執行下列操作:

  • 在區域 Artifact Registry 存放庫中儲存使用者自訂的 Airflow 映像檔。舉例來說,在環境中安裝自訂 PyPI 映像檔時,就會建立這類映像檔。
  • 如果政策明確禁止使用US多區域,系統會停用 Cloud Build。在這種情況下,系統會在環境的叢集中建構使用者自訂的 Airflow 映像檔。

在設有資源位置限制的私人 IP 環境中安裝 Python 依附元件

如果為專案設定資源位置限制,就無法使用 Cloud Build 安裝 Python 套件。因此,我們停用了公開網際網路存放區的直接存取權。

如果位置限制不允許使用US多區域,請使用下列其中一種方式,在 Private IP 環境中安裝 Python 依附元件:

限制 Cloud Composer 記錄的位置

如果 Cloud Composer 記錄檔含有機密資料,您可能需要將 Cloud Composer 記錄檔重新導向至單一地區 Cloud Storage 值區。如要這麼做,請使用記錄接收器。將記錄重新導向至 Cloud Storage 值區後,系統就不會再將記錄傳送至 Cloud Logging。

gcloud

  1. 建立新的 Cloud Storage bucket。

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
    

    取代:

    • LOCATION 改成環境所在的地區。
    • BUCKET_NAME 替換為值區的名稱。例如:composer-logs-us-central1-example-environment
  2. 建立新的記錄接收器。

    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 改成環境所在的地區。
  3. 先前指令的輸出內容包含服務帳戶號碼。將 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 指令傳回的服務帳號。
  4. 從 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 改成環境所在的地區。

後續步驟