使用 Google Cloud Deployment Manager 部署防火墙资源时如何解决 ResourceErrorCode: 400

How to resolve ResourceErrorCode: 400 when deploying a firewall resource with Google Cloud Deployment Manager

我正在尝试使用 Google Cloud Deployment Manager 部署单个防火墙资源。我希望防火墙仅阻止我自己的 IP 地址访问我已部署在 https://cloudfunctiongateway.uc.r.appspot.com/ 的 App Engine 应用程序。但是,我收到一个错误:

  location: /deployments/firewall-deployment2/resources/app-firewall
  message: '{"ResourceType":"compute.v1.firewall","ResourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"Request
    contains an invalid argument.","status":"INVALID_ARGUMENT","statusMessage":"Bad
    Request","requestPath":"https://compute.googleapis.com/compute/v1/projects/cloudfunctiongateway/global/firewalls","httpMethod":"POST"}}'

这是我在 firewall.yaml 中的配置文件:

resources:
- type: compute.v1.firewall
  name: app-firewall
  properties:
    network: https://cloudfunctiongateway.uc.r.appspot.com/
    denied:
      - IPProtocol: 33.27.10.123 # a fake ip address, I use my real one
    sourceRanges: [ 0.0.0.0/0 ]

和我运行同目录下这个命令:

gcloud deployment-manager deployments create firewall-deployment --config firewall.yaml

我什至尝试在我的配置文件中使用这个进行部署:

resources:
- type: compute.v1.firewall
  name: app-firewall

但还是得到同样的错误信息。有任何解决这个问题的方法吗?注意我希望能够使用 Deployment Manager 执行此操作。我已经知道我可以从 App Engine 仪表板手动设置防火墙。

您真正需要的是创建一个与 GCP 防火墙不同的 firewall rule for App Engine 应用程序 - 这是两个不同的东西。

所以 - 为了做到这一点,请尝试 运行宁此:

resources:
- name: dmapprule1
  type: gcp-types/appengine-v1:apps.firewall.ingressRules
  properties:
    appsId: 00c61b117c74f1a3bbcb4900df618a4c4ae211790ade0822a63cb492d671f318776a5a
    priority: 1000
    action: "DENY"
    source_range: "0.0.0.0/0"

和运行它与gcloud deployment-manager deployments create firewall-deployment --config firewall.yaml

更新

要查看支持类型的完整列表,请使用 gcloud beta deployment-manager types list(测试版列表更全面)。