本快速入门介绍了如何在 Cloud Storage 存储桶前面设置媒体 CDN 服务。您可以将此配置用于测试,也可以将其用作生产环境的基础。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
本页将引导您完成以下步骤:
- 创建一个 Cloud Storage 存储桶来存储您的内容。
- 启用所需的服务。
- 创建
EdgeCacheOrigin
资源,以将媒体 CDN 连接到您的存储桶。 - 创建
EdgeCacheService
资源,以便为源中的内容配置请求路由和缓存。 - 测试是否正在缓存响应。
准备工作
确保您满足以下要求:
对您当前项目的媒体 CDN 访问权限。
安装了 Google Cloud CLI。使用 345.0.0 或更高版本。
如有需要,请使用
gcloud version
检查版本,并使用gcloud components update
更新已安装的 gcloud CLI。gcloud CLI 提供了
gcloud edge-cache
子命令组,用于管理新的和现有的 Media CDN 配置。创建 Media CDN 资源所需的 Identity and Access Management (IAM) 权限。
创建 Cloud Storage 存储桶
媒体 CDN 内容可以来自 Cloud Storage 存储桶、第三方存储位置或负载平衡器等位置。
在本快速入门中,我们将在 Cloud Storage 存储桶中存储内容。
创建一个可公开访问的 Cloud Storage 存储桶,并将其命名为
my-bucket
。如果您不希望将 Cloud Storage 存储桶设为可公开访问,则必须向 Media CDN 授予访问该存储桶的权限。如需了解详情,请参阅使用私有 Cloud Storage 存储分区。
将文件上传到存储桶。
启用所需服务
如需配置和部署 Media CDN 服务,您需要为项目同时启用 Network Services API 和 Certificate Manager API。
控制台
gcloud
启用 Network Services API:
gcloud services enable networkservices.googleapis.com
启用 Certificate Manager API:
gcloud services enable certificatemanager.googleapis.com
如需详细了解如何启用和停用服务,请参阅 Service Usage 文档。
创建 EdgeCacheOrigin
资源
创建指向 Cloud Storage 存储桶的来源。
控制台
在 Google Cloud 控制台中,前往 Media CDN 页面。
点击来源标签页。
点击创建源站。
将来源的名称输入为
cloud-storage-origin
。可选:为来源输入说明。
在来源地址部分,选中选择 Google Cloud Storage 存储桶,浏览到名为
my-bucket
的 Cloud Storage 存储桶,然后点击选择。如果您使用的是外部来源,请选择指定 FQDN 或 IP 地址,然后输入 FQDN 或 IP 地址。
点击创建源站。
大约 10 分钟后,新创建的 EdgeCacheOrigin
资源会显示在项目的来源页面中的来源列表中。
如需更新来源地址,请点击来源,然后点击
修改。gcloud
使用 gcloud edge-cache origins create
命令:
gcloud edge-cache origins create ORIGIN \
--origin-address="ADDRESS"
替换以下内容:
ORIGIN
:新源的名称ADDRESS
:存储桶名称,gs://my-bucket
如果您使用的是外部来源,请将
ADDRESS
替换为 FQDN 或 IP 地址。
如需查看新创建的源,请使用 gcloud edge-cache origins list
命令。
如需更新来源地址,请使用 gcloud edge-cache origins update
命令。
API
使用 edgeCacheOrigins.create
方法:
POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID { "name": "ORIGIN_ID", "originAddress: "ADDRESS" }
替换以下内容:
PARENT
:父级资源,格式为projects/PROJECT/locations/global
ORIGIN_ID
:新来源的简称ADDRESS
:存储桶名称,gs://my-bucket
如果您使用的是外部来源,请将
ADDRESS
替换为 FQDN 或 IP 地址。
如需查看新创建的来源,请使用 edgeCacheOrigins.list
方法。
如需更新来源地址,请使用 edgeCacheOrigins.patch
方法。
Terraform
创建 EdgeCacheService
资源
您的 EdgeCacheService
资源会配置路由、证书和缓存设置,并且可以指向 EdgeCacheOrigin
资源。
创建一个执行以下操作的基本 EdgeCacheService
资源:
- 将来自我们配置的源站的所有响应缓存一小时
- 设置用于返回缓存状态(例如
HIT
或MISS
)的x-cache-status
响应标头
(可选)为此服务注册域名。
控制台
在 Google Cloud 控制台中,前往 Media CDN 页面。
点击 Services(服务)标签。
点击创建服务。
为您的服务输入一个唯一名称(例如
my-service
),然后点击下一步。在路由部分,点击添加主机规则,然后输入一个或多个主机网域名称。
对于主机,请输入主机域名,例如
web.example.com
。点击添加路由规则。
- 对于优先级,指定
1
。 - 点击添加匹配条件,对于路径匹配,指定
/
,然后点击完成。 - 选择从来源提取,然后选择您配置的源站。
- 点击附加操作。
- 在标头操作中,点击添加内容。然后,执行以下操作:
- 对于类型,选择要添加的响应标头。
- 点击添加标头。
- 对于名称,请指定
x-cache-status
;对于值,请指定{cdn_cache_status}
。 - 点击完成。
- 对于路由操作,点击添加内容。然后,执行以下操作:
- 对于类型,选择 CDN 政策。
- 对于缓存模式,选择 FORCE_CACHE_ALL。
- 点击完成。
- 点击保存。
- 对于优先级,指定
点击创建服务。
新创建的 EdgeCacheService
资源会显示在项目的“服务”页面中的服务列表中。
gcloud
在 Cloud Shell 中,使用文本编辑器创建一个名为
my-service.yaml
的本地文件。此类文件表示以下内容:
- 路由的运作方式:先匹配主机,然后匹配路径
- 缓存的工作原理(基于缓存模式和 TTL)
- 如何修改请求和响应,例如,将
cdn_cache_status
变量插入响应标头
将以下示例内容粘贴到该文件中,然后保存该文件:
name: SERVICE routing: hostRules: - hosts: - DOMAIN pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 1 matchRules: - prefixMatch: / origin: ORIGIN routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC defaultTtl: 3600s headerAction: responseHeadersToAdd: - headerName: "x-cache-status" headerValue: "{cdn_cache_status}"
替换以下内容:
SERVICE
:服务的名称DOMAIN
:新服务的网域
如果您指定了域名,Media CDN 会针对其他主机返回
404
错误。*ORIGIN
:关联来源的名称将
gcloud edge-cache services import
命令与.yaml
文件结合使用:gcloud edge-cache services import SERVICE \ --source=my-service.yaml
如需在项目的
EdgeCacheService
资源列表中查看新创建的服务,请使用gcloud edge-cache services list
命令。
API
使用 edgeCacheServices.create
方法:
POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_ID { "name": "SERVICE_ID", "routing": { "hostRules": [ { "hosts": ["DOMAIN"], "pathMatcher": "routes" } ], "pathMatchers": [ { "name": "routes", "routeRules": [ { "priority": "1", "matchRules": [ { "prefixMatch": "/" } ], "origin": "ORIGIN", "routeAction": { "cdnPolicy": { "cacheMode": "CACHE_ALL_STATIC", "defaultTtl": "3600s" } } "headerAction": { "responseHeadersToAdd": [ { "headerName": "x-cache-status", "headerValue": "{cdn_cache_status}" } ] }, } ] } ] } }
替换以下内容:
PARENT
:父级资源,格式为projects/PROJECT/locations/global
SERVICE_ID
:服务的名称DOMAIN
:新服务的网域如果您指定了域名,Media CDN 会针对其他主机返回
404
错误。ORIGIN_NAME
:关联来源的名称
如需在项目的 EdgeCacheService
资源列表中查看新创建的服务,请使用 edgeCacheServices.list
方法。
Terraform
创建第一个服务可能需要几分钟时间。Media CDN 会预配专用 IP 地址,并将您的配置推送到数千个边缘位置。对服务进行的后续更新(例如更改路线配置或匹配参数)会更快。
检索 IP 地址
如需查看新创建的服务的 IP 地址,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Media CDN 页面。
点击 Services(服务)标签。
如需查看服务的 IP 地址,请参阅 Addresses 单元格。
如果该单元格为空,请刷新浏览器。
gcloud
使用 gcloud edge-cache services describe
命令:
gcloud edge-cache services describe SERVICE
将 SERVICE 替换为相应服务的名称。
输出会显示分配给您的服务的 IP 地址:
ipv4Addresses:
IPV4_ADDRESS
ipv6Addresses:
IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE
...
API
GET https://networkservices.googleapis.com/v1/SERVICE_NAME
将 SERVICE_NAME
替换为服务的全名。请使用以下格式:
projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
将 SERVICE_ID
替换为相应服务的简称。
检索到的详细信息包括分配给服务的 IP 地址:
ipv4Addresses:
IPV4_ADDRESS
ipv6Addresses:
IPV6_ADDRESS
测试是否正在缓存响应
在测试服务之前,请确保您已在源端存储可缓存的内容,以便媒体 CDN 可以检索到这些内容。
如需测试您的服务是否已正确配置为缓存内容,请使用 curl
命令行工具发出请求并检查响应。curl
还可在 Google Cloud 控制台的 Cloud Shell 中使用。
如果您想将 EdgeCacheService
与您的域名搭配使用,可以将 EdgeCacheService
的 IP 地址分配给域名记录。如需了解相关说明,请参阅使用 Cloud DNS 设置网域。设置网域后,使用以下 curl
命令访问您的内容:
curl -svo /dev/null "http://DOMAIN_NAME/FILE_NAME"
如果您未将 DNS 配置为指向已预配的 IP 地址,请使用 resolve
选项替换 curl
使用的地址。
curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILE_NAME"
替换以下内容:
DOMAIN_NAME
:您在创建服务时指定的托管域名IP_ADDRESS
:服务的 IP 地址,显示在服务列表的“地址”列中FILE_NAME
:您上传到存储桶的文件的名称
示例:
curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"
该命令最初会生成类似于以下内容的输出,状态为 miss
,因为媒体 CDN 还没有从源站检索到请求的数据:
< HTTP/2 200 OK
...
< x-cache-status: den;miss
...
当您多次提交同一请求时,系统会生成类似于以下内容的输出,并将状态设为 hit
:
< HTTP/2 200 OK
...
< x-cache-status: den;hit
...
如果未显示状态 hit
,请检查以下各项:
- 响应可缓存。
- 配置的缓存模式允许缓存内容。
- 源站未设置用于阻止缓存的缓存指令。如需了解详情,请参阅缓存配置。
您现在已测试了一个基本 EdgeCacheService
资源,该资源可在全球范围内分发内容。生产级服务可能需要 SSL (TLS) 证书、多个来源和 Google Cloud Armor 安全政策。
可选:清理
删除您不打算再次使用的所有资源。
控制台
在 Google Cloud 控制台中,前往 Media CDN 页面。
点击 Services(服务)标签。
选择您的服务,然后点击删除。
点击来源标签页。
选择您的源站,然后点击删除。
gcloud
如需列出您创建的资源,请使用
gcloud edge-cache origins list
命令 和gcloud edge-cache services list
命令。如需删除该服务,请使用
gcloud edge-cache services delete
命令:gcloud edge-cache services delete SERVICE
将
SERVICE
替换为相应服务的名称。如需删除来源,请使用
gcloud edge-cache origins delete
命令:gcloud edge-cache origins delete ORIGIN
将
ORIGIN
替换为来源的名称。
API
如需列出您创建的资源,请使用
edgeCacheServices.list
方法和edgeCacheOrigins.list
方法。如需删除服务,请使用
edgeCacheServices.delete
方法:DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
将
SERVICE_NAME
替换为服务的全名。请使用以下格式:projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
将
SERVICE_ID
替换为相应服务的简称。如需删除来源,请使用
edgeCacheOrigins.delete
方法:DELETE https://networkservices.googleapis.com/v1/ORIGIN
将
ORIGIN
替换为来源的全名。请使用以下格式:projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
将
ORIGIN_ID
替换为来源的简称。
对您创建的任何其他资源(例如 Cloud Storage 存储桶)重复此过程,如果您不打算再次使用这些资源。
后续步骤
- 为
EdgeCacheService
颁发并附加 SSL (TLS) 证书。 - 使用 Cloud Logging 查看请求日志。
- 配置已签名请求以保护您的内容。
- 优化缓存键和 TTL,提高缓存命中率。
- 配置高级路由匹配并创建其他来源。