fin*_*tis 8 google-cloud-platform terraform google-cloud-functions terraform-provider-gcp
我使用 Terraform 来管理 Google Cloud Functions 的资源。但是,虽然云函数的初始部署有效,但当sourcecode.zip我在更新源存档后使用时,未重新部署更改后的云函数源代码(源存档)的进一步部署terraform apply。
存储桶对象被更新,但这不会触发云函数资源的更新/重新部署。
这是提供商的错误吗?当代码更改时,有没有办法在 terraform 中重新部署函数?
我正在使用的简化源代码:
resource "google_storage_bucket" "cloud_function_source_bucket" {
name = "${local.project}-function-bucket"
location = local.region
uniform_bucket_level_access = true
}
resource "google_storage_bucket_object" "function_source_archive" {
name = "sourcecode.zip"
bucket = google_storage_bucket.cloud_function_source_bucket.name
source = "./../../../sourcecode.zip"
}
resource "google_cloudfunctions_function" "test_function" {
name = "test_func"
runtime = "python39"
region = local.region
project = local.project
available_memory_mb = 256
source_archive_bucket = google_storage_bucket.cloud_function_source_bucket.name
source_archive_object = google_storage_bucket_object.function_source_archive.name
trigger_http = true
entry_point = "trigger_endpoint"
service_account_email = google_service_account.function_service_account.email
vpc_connector = "projects/${local.project}/locations/${local.region}/connectors/serverless-main"
vpc_connector_egress_settings = "ALL_TRAFFIC"
ingress_settings = "ALLOW_ALL"
}
Run Code Online (Sandbox Code Playgroud)
您可以将 zip 内容的 MD5 或 SHA256 校验和附加到存储桶对象的名称。每当源代码发生变化时,这将触发云函数的重新创建。
${data.archive_file.function_src.output_md5}
data "archive_file" "function_src" {
type = "zip"
source_dir = "SOURCECODE_PATH/sourcecode"
output_path = "./SAVING/PATH/sourcecode.zip"
}
resource "google_storage_bucket_object" "function_source_archive" {
name = "sourcecode.${data.archive_file.function_src.output_md5}.zip"
bucket = google_storage_bucket.cloud_function_source_bucket.name
source = data.archive_file.function_src.output_path
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关 terraform archive 的更多信息 - terraform archive_file
| 归档时间: |
|
| 查看次数: |
3933 次 |
| 最近记录: |