I have a GCP project utilizing a variety of services: GC Functions, Firestore, VPC Connector, Storage Buckets, App Engine, Compute Engine. I use Terraform for deployment.
I decided to add a message queue using Google Tasks Queue, and run it on App Engine.
There is a nodejs handler function I put into an archive_file
before attempting to deploy it to App Engine. I do this for my GC Function and it works great.
From my research it looks like I need Terraform resource app_engine_standard_app_version
or app_engine_flexible_app_version
to run my handler function on my App Engine.
When I try to create this resource via terraform apply
I get an error. Neither flexible or standard works.
TFE Code
locals {
timestamp = formatdate("YYMMDDhhmmss", timestamp())
}
resource "google_cloud_tasks_queue" "task-queue-b" {
name = "task-queue-b"
location = "us-east1"
rate_limits {
max_concurrent_dispatches = 3
max_dispatches_per_second = 2
}
retry_config {
max_attempts = 5
max_retry_duration = "4s"
max_backoff = "3s"
min_backoff = "2s"
max_doublings = 1
}
}
# Compress source code and make archive file
data "archive_file" "task-queue-source" {
type = "zip"
output_path = "/tmp/task-queue-${local.timestamp}.zip"
source_dir = "../../../../queue/build/src" # index.js is here with handler func
}
# Create bucket that will host the source code
resource "google_storage_bucket" "task-queue-bucket" {
name = "${var.project}-task-queue"
}
# Add source code zip to bucket
resource "google_storage_bucket_object" "task-queue-zip" {
# Append file MD5 to force bucket to be recreated
name = "task-queue-source.zip#${data.archive_file.task-queue-source.output_md5}"
bucket = google_storage_bucket.task-queue-bucket.name
source = data.archive_file.task-queue-source.output_path
depends_on = [data.archive_file.task-queue-source]
}
resource "google_app_engine_flexible_app_version" "task-queue-flexible-v1" {
project = var.project
service = "default"
version_id = "v1"
runtime = "nodejs14"
entrypoint {
shell = "node ./index.js"
}
deployment {
zip {
source_url = "https://storage.googleapis.com/task-queue/${google_storage_bucket.task-queue-bucket.name}/${google_storage_bucket_object.task-queue-zip.name}"
}
}
liveness_check {
path = "."
}
readiness_check {
path = "."
}
automatic_scaling {
cool_down_period = "120s"
cpu_utilization {
target_utilization = 0.5
}
}
delete_service_on_destroy = true
}
I receive the following:
First warning: I don’t think this is related…
2021-10-10T12:37:50.296-0400 [WARN] Provider "provider[\"registry.terraform.io/hashicorp/google\"]" produced an unexpected new value for module.analytics.google_cloudfunctions_function.analytics, but we are tolerating it because it is using the legacy plugin SDK.
The following problems may be the cause of any confusing errors from downstream operations:
- .source_archive_object: was cty.StringVal("source.zip#d8d06f1045f9387d72429479c37eb6b3"), but now cty.StringVal("source.zip")
module.analytics.google_cloudfunctions_function.analytics: Modifications complete after 2m16s [id=projects/<proj>/locations/us-east1/functions/analytics]
Main error I can not for the life of me figure out:
╷
│ Error: Error waiting to create FlexibleAppVersion: Error waiting for Creating FlexibleAppVersion: Error code 13, message: An internal error occurred.
│
│ with module.task-queue.google_app_engine_flexible_app_version.task-queue-flexible-v1,
│ on ..\..\modules\taskqueue\main.tf line 74, in resource "google_app_engine_flexible_app_version" "task-queue-flexible-v1":
│ 74: resource "google_app_engine_flexible_app_version" "task-queue-flexible-v1" {
│
╵
2021-10-10T12:37:50.302-0400 [DEBUG] provider.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = transport is closing"
Versions
Terraform v1.0.8
on windows_amd64
+ provider registry.terraform.io/hashicorp/archive v2.2.0
+ provider registry.terraform.io/hashicorp/google v3.88.0
Questions
-
Am I correct with my chosen resources to run my Task Queue handler function (nodejs express app)? Are there any resources I am missing? Do I need an actual
google_app_engine_application
TFE resource? -
Any insight into this unhelpful error?
Thanks so much