从后端无效Google Cloud CDN缓存

时间:2018-04-08 07:56:20

标签: google-api invalidation google-cdn

经过几天的研究和阅读文档,我几乎肯定这几乎是不可能的,但我仍然想问:

目标是在第三方后端(不使用该CDN)上根据需要(由于标头更改)使GCloud CDN中的所有缓存内容无效。使用gsuite可以使用以下命令实现:

gcloud compute url-maps invalidate-cdn-cache web --path '/*' --async

但问题是这个命令要求我们通过浏览器使用客户端的凭据登录谷歌帐户,这使它绝对毫无价值。

令人遗憾的是,谷歌似乎有其他服务非常丰富的API,但对于CDN,没有API :(

我们的想法是接受用户的凭据并使用它们使该缓存无效。它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

所以,我对impossibility错了。我找到了相应的REST API方法(https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps/invalidateCache):

POST https://www.googleapis.com/compute/v1/projects/{project}/global/urlMaps/{resourceId}/invalidateCache

这是一个示例Ruby代码,可以使用official gem

来处理它
require 'google/apis/compute_v1'

service = Google::Apis::ComputeV1::ComputeService.new
service.authorization =
  Google::Auth::ServiceAccountCredentials
    .make_creds(
      json_key_io: File.open('/path/to/credentials.json'),
      scope:       [Google::Apis::ComputeV1::AUTH_COMPUTE]
    )
service.invalidate_url_map_cache(
   'some-gcloud-project-id',
   'some-url-map',
   nil,
   request_id: SecureRandom.uuid
)