Как устранить ResourceErrorCode: 400 при развертывании ресурса брандмауэра с помощью Google Cloud Deployment Manager

#google-cloud-platform #google-deployment-manager

#google-cloud-platform #google-deployment-manager

Вопрос:

Я пытаюсь развернуть один ресурс брандмауэра с помощью Google Cloud Deployment Manager. Я хочу, чтобы брандмауэр блокировал доступ к моему приложению App Engine, которое уже развернуто на , только по моему собственному IP-адресуhttps://cloudfunctiongateway.uc.r.appspot.com /. Однако я получаю сообщение об ошибке:

   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.

Комментарии:

1. Я полагаю, что проблема связана с network полем. В этом поле должен быть URL-адрес или самоссылка на сеть, в которой должно применяться правило брандмауэра. Второй созданный вами ресурс не имеет определения, поэтому его также нельзя создать

Ответ №1:

Что вам на самом деле нужно, так это создать правило брандмауэра для приложения App Engine, которое отличается от брандмауэра GCP — это две разные вещи.

Итак, чтобы сделать это, попробуйте запустить это:

 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 (список бета-версий намного более полный).

Комментарии:

1. Спасибо! Для дальнейшего использования, как вы узнали, каким должно быть значение типа ресурса? Когда я использую gcloud deployment-manager types list команду, предложенную в документации, я не вижу в списке этот тип ресурса брандмауэра appengine.