[英]gcloud beta run deploy --source . throws 412
由於公司限制,我應該在歐洲托管 GCP 上的所有內容。 我工作的組織制定了限制政策來執行此操作。
當我使用gcloud beta run deploy --source. --region europe-west1
gcloud beta run deploy --source. --region europe-west1
us
命令似乎試圖將臨時文件存儲在美國的存儲桶中,這是不允許的。 然后該命令會拋出 412 錯誤。
➜ gcloud beta run deploy cloudrun-service-name --source . --platform managed --region=europe-west1 --allow-unauthenticated
This command is equivalent to running `gcloud builds submit --tag [IMAGE] .` and `gcloud run deploy cloudrun-service-name --image [IMAGE]`
Building using Dockerfile and deploying container to Cloud Run service [cloudrun-service-name] in project [PROJECT_ID] region [europe-west1]
X Building and deploying new service... Uploading sources.
- Uploading sources...
. Building Container...
. Creating Revision...
. Routing traffic...
. Setting IAM Policy...
Deployment failed
ERROR: (gcloud.beta.run.deploy) HTTPError 412: 'us' violates constraint 'constraints/gcp.resourceLocations'
我看到在正確的區域中創建了 Artifact Registry Repository,但沒有在存儲桶中創建。
為了繞過這個,我必須首先在正確的區域創建一個名為PROJECT_ID_cloudbuild
的存儲桶。 還有其他方法可以解決這個問題嗎?
查看錯誤消息表明無論在歐洲設置的組織策略如何,都必須在美國強制創建存儲桶。 根據這個公共問題跟蹤評論,
“雲構建提交在美國創建了一個 [PROJECT_ID]_cloudbuild 存儲桶。 當資源限制適用時,這當然不起作用。 作為解決方法,您可以做的是在另一個位置自己創建該存儲桶。 您應該在首次提交雲構建之前執行此操作。”
這是一個已知問題,我發現了兩個解決方法可以幫助您實現您想要的。
第一個解決方法是使用帶有附加標志的“gcloud builds submit”:
第二種解決方法是使用 cloudbuild.yaml 和“--gcs-source-staging-dir”標志:
gcloud 構建提交 --gcs-source-staging-dir="gs://example-bucket/cloudbuild-custom" --config cloudbuild.yaml
請嘗試這些解決方法,讓我知道它是否適合您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.