ResourceErrorCode 해결 방법 : Google Cloud Deployment Manager로 방화벽 리소스를 배포 할 때 400

Aug 17 2020

Google Cloud Deployment Manager를 사용하여 단일 방화벽 리소스를 배포하려고합니다. 방화벽이 내 IP 주소 만 이미 배포 된 내 App Engine 앱에 액세스하지 못하도록 차단하고 싶습니다.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 대시 보드에서 방화벽을 수동으로 설정할 수 있다는 것을 이미 알고 있습니다.

답변

Wojtek_B Aug 27 2020 at 21:13

실제로 필요한 것은 GCP 방화벽과는 다른 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(베타 버전 목록은 훨씬 더 포괄적입니다).