我正在使用如下代码为我的内容创建签名 URL:
var storage = require('@google-cloud/storage')();
var myBucket = storage.bucket('my-bucket');
var file = myBucket.file('my-file');
//-
// Generate a URL that allows temporary access to download your file.
//-
var request = require('request');
var config = {
action: 'read',
expires: '03-17-2025'
};
file.getSignedUrl(config, function(err, url) {
if (err) {
console.error(err);
return;
}
// The file is now available to read from the URL.
});
这将创建一个以https://storage.googleapis.com/my-bucket/
如果我将该 URL 放在浏览器中,它是可读的。
但是,我猜该 URL 是对存储桶文件的直接访问,并且没有通过我配置的 CDN。
我在文档(https://cloud.google.com/nodejs/docs/reference/storage/1.6.x/File#getSignedUrl)中看到,您可以传递一个 cname 选项,该选项将要替换的 url 转换https://storage.googleapis.com/my-bucket/
为我的存储桶 CDN .
但是,当我复制生成的 URL 时,服务帐户或生成的 url 似乎无法访问该资源。
我已将 firebase 管理员服务帐户添加到存储桶中,但我仍然无法访问。
此外,从文档来看,CDN 签名的 url 似乎与通过该 API 签名的有很大不同。是否可以从 api 创建一个 CDN 签名的 url,或者我应该按照以下说明手动创建它:https ://cloud.google.com/cdn/docs/using-signed-urls?hl=en_US&_ga=2.131493069.- 352689337.1519430995#configuring_google_cloud_storage_permissions?