Python Google部署管理器问题:无法创建实例模板

Python Google部署管理器问题:无法创建实例模板,python,gcloud,google-deployment-manager,Python,Gcloud,Google Deployment Manager,我正在尝试使用gcloud部署管理器部署自定义实例模板,但始终出现以下错误: ERROR: (gcloud.deployment-manager.deployments.update) Error in Operation [operation-1507833758152-55b5de788f540-e3be8bf6-a792d98e]: errors: - code: RESOURCE_ERROR location: /deployments/my-project/resources/wo

我正在尝试使用gcloud部署管理器部署自定义实例模板,但始终出现以下错误:

ERROR: (gcloud.deployment-manager.deployments.update) Error in Operation [operation-1507833758152-55b5de788f540-e3be8bf6-a792d98e]: errors: - code: RESOURCE_ERROR location: /deployments/my-project/resources/worker-template message: '{"ResourceType":"compute.v1.instanceTemplate","ResourceErrorCode":"400","ResourceErrorMessage":{"code":400,"errors":[{"domain":"global","message":"Invalid value for field ''resource.properties'': ''''. Instance Templates must provide instance properties.","reason":"invalid"}],"message":"Invalid value for field ''resource.properties'': ''''. Instance Templates must provide instance properties.","statusMessage":"Bad Request","requestPath":"https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates","httpMethod":"POST"}}' 错误:(gcloud.deployment manager.deployments.update)操作错误[Operation-1507833758152-55b5de788f540-e3be8bf6-a792d98e]:错误: -代码:资源错误 位置:/deployments/my project/resources/worker模板 消息:“{”ResourceType:“compute.v1.instanceTemplate”,“ResourceErrorCode:“400”,“ResourceErrorMessage:{”code:“400”,“errors:[{”domain:“global”,“message:“Invalid” 字段“resource.properties”的值:“”。实例模板必须提供 实例属性“,”原因“:”无效“}],”消息“:”字段值无效 ''资源.属性'':''。实例模板必须提供实例属性。“,“状态消息”:“错误” 请求”,“请求路径”:https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates“,“httpMethod”:“POST”}” 我的python generate_config函数如下所示:

def generate_config(context): resources = [{ 'type': 'compute.v1.instanceTemplate', 'name': 'worker-template', 'properties': { 'zone': context.properties['zone'], 'description': 'Worker Template', 'machineType': context.properties['machineType'], 'disks': [{ 'deviceName': 'boot', 'type': 'PERSISTENT', 'boot': True, 'autoDelete': True, 'initializeParams': { 'sourceImage': '/'.join([ context.properties['compute_base_url'], 'projects', context.properties['os_project'], 'global/images/family', context.properties['os_project_family'] ]) } }], 'networkInterfaces': [{ 'network': '$(ref.' + context.properties['network'] + '.selfLink)', 'accessConfigs': [{ 'name': 'External NAT', 'type': 'ONE_TO_ONE_NAT' }] }] } }] return {'resources': resources} def生成_配置(上下文): 资源=[{ 'type':'compute.v1.instanceTemplate', “名称”:“工作模板”, “属性”:{ “区域”:context.properties['zone'], 'description':'Worker Template', 'machineType':context.properties['machineType'], “磁盘”:[{ 'deviceName':'boot', 'type':'PERSISTENT', “boot”:对, “自动删除”:True, “初始化图”:{ “sourceImage':'/”。加入([ context.properties['compute\u base\u url'], “projects”,context.properties['os_project'], “全局/图像/族”,context.properties['os_project_family'] ]) } }], “网络接口”:[{ “网络”:“$(参考.+context.properties['network']+'.selfLink)”, “accessConfigs”:[{ “名称”:“外部NAT”, “类型”:“一对一” }] }] } }] 返回{'resources':resources} 属性不是空的,因此错误消息没有多大意义。有什么想法吗

谢谢

阅读之后,我发现compute.v1.instanceTemplate的正确结构是:

... 'type': 'compute.v1.instanceTemplate', 'name': 'worker-template', 'properties': { 'project': 'my-project', 'properties': { 'zone': context.properties['zone'], ... } } ... ... 'type':'compute.v1.instanceTemplate', “名称”:“工作模板”, “属性”:{ “项目”:“我的项目”, “属性”:{ “区域”:context.properties['zone'], ... } } ... 结构如下