通过Terraform脚本部署Google App EngineGAEFlexible时出错

问题描述

我创建了一个terraform脚本,如下所示将Java应用程序引擎部署到GAE flexible:

resource "google_app_engine_flexible_app_version" "test-terraform" {
    version_id = "v1"
    project = "project-id"
    service = "service-terraform"   
    runtime = "java"

    liveness_check {
        path = "/"
    }

    readiness_check {
        path = "/"
    }
    
    env_variables = {
        port = "8080"
    }
    
    deployment {
        zip {
            source_url = "https://storage.googleapis.com/[BUCKET_NAME]/[ZIP_OBJECT_NAME]"
        }
        
        cloud_build_options {
            app_yaml_path = "[PATH_TO_APP-YAML_FILE]"
        }
    }

    # resoucres config
    resources {
        cpu = 1
        memory_gb = 2
        disk_gb = 10        
    }

    # scale config      

    delete_service_on_destroy = true
}

我试图将PATH_TO_APP-YAML_FILE的值更改为

  1. app.yaml在存储上的位置
  2. app.yaml在ZIP源代码上的本地化为“ ./src/main/appengine/app.yaml” 但未成功部署,Cloud Build上的错误详细信息如下所示:
Step #1: WARN  - A yaml configuration file was expected,but none was found at the provided path: app.yaml. Proceeding with default configuration values. 
Step #1: Exception in thread "main" com.google.cloud.runtimes.builder.exception.ArtifactNotFoundException: No deployable artifacts were found. Unable to proceed. 
Step #1:    at com.google.cloud.runtimes.builder.buildsteps.PrebuiltRuntimeImageBuildStep.getArtifact(PrebuiltRuntimeImageBuildStep.java:77) 
Step #1:    at com.google.cloud.runtimes.builder.buildsteps.RuntimeImageBuildStep.run(RuntimeImageBuildStep.java:50) 
Step #1:    at com.google.cloud.runtimes.builder.BuildPipelineConfigurator.generateDockerResources(BuildPipelineConfigurator.java:104) 
Step #1:    at com.google.cloud.runtimes.builder.Application.main(Application.java:147) Finished Step #1 ERROR Blockquote

能否请您指出确切的值 PATH_TO_APP-YAML_FILE ? 谢谢!

解决方法

根据Terraform documentation,此值代表:

app_yaml_path-(必需)部署中使用的yaml文件的路径,用于确定运行时配置详细信息。

但是,尚不清楚它是否与Cloud Storage存储桶中的源代码兼容。根据{{​​3}}中的建议,我建议在Terraform community page中打开一个问题,以获取对该参数的更具体的了解。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...