Google api 从后端使Google云CDN缓存无效
经过几天的研究和阅读文档,我几乎可以肯定这几乎是不可能的,但我仍然想问: 目标是在不使用该CDN的第三方后端上按需(由于标题更改)使GCloud CDN中的所有缓存内容无效。使用Google api 从后端使Google云CDN缓存无效,google-api,invalidation,google-cloud-cdn,Google Api,Invalidation,Google Cloud Cdn,经过几天的研究和阅读文档,我几乎可以肯定这几乎是不可能的,但我仍然想问: 目标是在不使用该CDN的第三方后端上按需(由于标题更改)使GCloud CDN中的所有缓存内容无效。使用gsuite可以通过使用以下命令来实现: gcloud compute url-maps invalidate-cdn-cache web --path '/*' --async 但问题是,这个命令要求我们使用客户端的凭据通过浏览器登录google帐户,这使得它毫无价值 可悲的是,谷歌似乎为其其他服务提供了相当丰富的A
gsuite
可以通过使用以下命令来实现:
gcloud compute url-maps invalidate-cdn-cache web --path '/*' --async
但问题是,这个命令要求我们使用客户端的凭据通过浏览器登录google帐户,这使得它毫无价值
可悲的是,谷歌似乎为其其他服务提供了相当丰富的API,但对于CDN,却没有API:(
这样做的目的是接受用户的凭据,并使用它们使缓存失效。这可能吗?因此,我错误地认为
不可能
。我找到了相应的REST API方法():
下面是一个使用Ruby的示例代码:
这为我指明了正确的方向。我不明白他们为什么在“计算”库中放置CDN缓存无效。似乎拥有CDN库会有逻辑意义;甚至是存储!?谢谢!我发现错误无效:字段“resource.path”:“”的值无效。路径必须以/开头。知道如何解决这个问题吗?@nattf奇怪的是,如果我想使路径/主页无效,我该如何在代码中指定它?
POST https://www.googleapis.com/compute/v1/projects/{project}/global/urlMaps/{resourceId}/invalidateCache
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
)