如何使用Python从后端服务中删除云防护安全策略



我正在使用Python客户端库跨多个项目创建一些GCP云防护策略,并使用.set_security_policy()方法将它们附加到几个后端服务

  1. 我知道你可以使用console/gcloud来完成,但是我需要在Python中自动完成

  2. 我已经尝试了.update()方法在谷歌云计算,但没有工作

from google.cloud import compute, compute_v1
client = compute.BackendServicesClient()
backend_service_resource = compute_v1.types.BackendService(security_policy="")
client.update(project='project_id',
             backend_service='backend_service',
             backend_service_resource=backend_service_resource)

运行上述代码时,我得到的错误是

google.api_core.exceptions.BadRequest: 400 PUT https://compute.googleapis.com/compute/v1/projects/<project-id>/global/backendServices/<backend-name>: Invalid value for field 'resource.loadBalancingScheme': 'INVALID_LOAD_BALANCING_SCHEME'. Cannot change load balancing scheme.

当我指定loadBalancingScheme时,同样的错误发生在另一个资源值上。在运行时,我将没有后端服务的所有元数据的信息,并且一些元数据可能没有在第一时间初始化。

这是写给将来有类似问题的人的。我最初打算通过python使用os.system()作为@giles-roberts推荐的gcloud命令,但后来我偶然发现了一个正确的方法来使用客户端库

来做到这一点您只需首先使用相同的.set_security_policy()来设置安全策略,但这次将策略设置为None。这不是很明显,因为安全策略的名称必须是文档中的字符串,而且它也不接受空字符串。

from google.cloud import compute, compute_v1
client = compute.BackendServicesClient()
resource = compute_v1.types.SecurityPolicyReference(security_policy=None)
error = client.set_security_policy(project='<project_id>',
                                   backend_service='<backend_service>',
                                   security_policy_reference_resource=resource)

相关内容

  • 没有找到相关文章

最新更新