【问题标题】:How do you programmatically import files in Google Deployment Manager您如何以编程方式在 Google 部署管理器中导入文件
【发布时间】:2019-10-09 00:59:52
【问题描述】:

我正在查看这个使用部署管理器部署云功能的示例:https://github.com/GoogleCloudPlatform/deploymentmanager-samples/tree/master/examples/v2/cloud_functions

让这个变得笨拙且不太实用的原因之一是,它需要您在函数中显式导入每个文件:

imports:
- path: cloud_function.py
# The function code will be defined for the files in function/
- path: function/index.js
- path: function/package.json 

每次有新文件时都必须添加它是不可接受的。 Deployment Manager 也不支持通配符。

如何以编程方式导入文件?

这是 cloud_function.py 中引用导入文件的部分,我尝试只使用一个字符串,但似乎 import 实际上将文件复制到某个地方?如何以编程方式执行此操作,这样我就不需要显式定义每个单独的文件?

  files = ["function/index.js","function/package.json"] # this does not work if these files have not been declared via "import"
  #for imp in ctx.imports:
  for imp in files:
    if imp.startswith(ctx.properties['codeLocation']):
      zip_file.writestr(imp[len(ctx.properties['codeLocation']):],
                        ctx.imports[imp])

【问题讨论】:

    标签: google-cloud-platform google-deployment-manager


    【解决方案1】:

    你必须打开globbing,这样配置文件现在可以在导入路径中使用全局模式:

    gcloud config set deployment_manager/glob_imports True

    这里是examples,可以添加整个文件夹:

    imports:
    - path: templates/simple_frontend.py
      name: simple_frontend.py
    
    # Helper classes
    - path: helper/*.py
    
    # Configuration files
    - path: configs/*.yaml
    - path: configs/*/*.yaml
    

    完整的文档可以在here找到。

    【讨论】:

    • 那太好了!尽管gcloud config set deployment_manager/glob_imports True,我是否必须设置这样的配置?有没有可以传递给gcloud deployment-manager 命令的开关?那会很好
    • 您需要在cloud shell 中发出此命令gcloud config set deployment_manager/glob_imports True。但是,您能否详细说明“我可以将开关传递给 gcloud 部署管理器命令”的意思? ?
    • 我只是将它作为命令标志传递给gcloud deployment-manager 命令,而不是首先全局设置
    • 这个功能目前只能使用上面的命令来开启。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多