Google cloud platform 无法为主题创建订阅

Google cloud platform 无法为主题创建订阅,google-cloud-platform,google-deployment-manager,Google Cloud Platform,Google Deployment Manager,我正在尝试谷歌部署管理器 我已经创建了一个YAML文件,我正在其中创建一个主题和该主题的推送订阅 resources: - name: pubsub-topic type: gcp-types/pubsub-v1:projects.topics properties: topic: "topic-01" - name: pubsub-sub type: gcp-types/pubsub-v1:projects.subscriptions pro

我正在尝试谷歌部署管理器

我已经创建了一个YAML文件,我正在其中创建一个主题和该主题的推送订阅

resources:
  - name: pubsub-topic
    type: gcp-types/pubsub-v1:projects.topics
    properties:
      topic: "topic-01"
  - name: pubsub-sub
    type: gcp-types/pubsub-v1:projects.subscriptions
    properties:
      subscription: "gcf-01"
      topic: "projects/my-project/topics/topic-01"
      pushConfig: 
        pushEndpoint: "https://us-central1-my-project.cloudfunctions.net/helloWorld/"
      ackDeadlineSeconds: 600
      expirationPeriod:
当我运行命令时

cloud deployment-manager deployments create google-pub-sub --config C:\Development\GCP\DeploymentManager.yaml
gcloud deployment-manager deployments update google-pub-sub --config C:\Development\GCP\DeploymentManager.yaml
我得到以下错误

部署的指纹为xxxxxxxxxxxx==正在等待 为了创造 [操作-xxxxxxxx-xxxxxx-xxxx-xxxx]…失败。 错误:(gcloud.deployment manager.deployments.create)中的错误 操作[操作-xxxxx-xxxx-xxxx-xxxx]: 错误: -代码:RESOURCE\u错误位置:/deployments/google pub sub/resources/pubsub消息: “{”ResourceType:“gcp types/pubsub-v1:项目.订阅”,“ResourceErrorCode:“404”,“ResourceErrorMessage:{”code:“404”,“message:“Resource” 未找到(资源=主题-01)。“,“状态”:“未找到”,“详细信息”:[],“状态消息”:“未找到” 找到“,”请求路径“:”,“httpMethod:”放置“}}”

现在如果我运行命令

cloud deployment-manager deployments create google-pub-sub --config C:\Development\GCP\DeploymentManager.yaml
gcloud deployment-manager deployments update google-pub-sub --config C:\Development\GCP\DeploymentManager.yaml
它起作用了。这是否意味着操作不是连续的,并且系统正在尝试在创建主题之前创建订阅

此外,我仍然无法将ExpirationPeriod设置为Never。如果有人知道,一定要让我知道


谢谢

我通过使用YAML文件中的引用解决了第一个问题,因此更改后的文件看起来像

resources:
  - name: pubsub-topic
    type: gcp-types/pubsub-v1:projects.topics
    properties:
      topic: "topic-01"
  - name: pubsub-sub
    type: gcp-types/pubsub-v1:projects.subscriptions
    properties:
      subscription: "gcf-01"
      topic: $(ref.pubsub-topic.name)
      pushConfig: 
        pushEndpoint: "https://us-central1-my-project.cloudfunctions.net/helloWorld/"
      ackDeadlineSeconds: 600
      expirationPolicy: {}

据我所知,Deployment Manager属性引用与API引用匹配。如果您选中它,它代表
expirationPolicy
对象,带有
ttl
content@manasouza谢谢你的回复。我可以使用ttl设置过期期限,但我想将其设置为永不过期。如果我将ttl保留为空,则会导致错误,如果我将其设置为“从不”,则会失败,如果我只是删除它,则也会失败。如果我只指定expirationPolicy而不指定ttl,则会出现以下错误
-code:CONDITION\u NOT\u MET location:/deployments/google pub sub/resources/ct pubsub orders sub->$。属性消息:“/expirationPolicy”:域:验证;关键词:类型;消息:实例不匹配任何允许的基元类型;允许:[“对象”];发现:“null”
根据链接,如果未设置ttl,则关联的资源永远不会过期,但这似乎不起作用。