本页面介绍了如何将媒体 CDN 连接到专用 CDN 与 Amazon S3 兼容的存储分区(使用 Amazon Simple Storage Service (Amazon S3))和 AWS 签名版本 4。 媒体 CDN 不支持 AWS Signature 版本 4a。
媒体 CDN 支持 AWS Signature Version 4 来对源请求进行身份验证您可以使用这项功能 将媒体 CDN 传输到与 Amazon S3 兼容的专用存储分区, 请确保您的内容仅分享给媒体 CDN。 您还可以启用客户端身份验证,实现更深入的防御。 如需了解详情,请参阅使用已签名请求。
准备工作
验证您是否具备以下资源:
遵循命名规则的专用 Amazon S3 存储桶。
一个专用 AWS IAM 用户账号,用于访问上述专用账号 Amazon S3 存储桶。确保该存储桶向 AWS IAM 用户账号授予
s3:getObject
权限。如需详细了解如何配置对 Amazon S3 存储桶的访问权限,请参阅 Amazon S3 中的身份和访问权限管理。AWS 访问密钥 ID 和 AWS 私有访问密钥 为专用 AWS IAM 用户账号指定。如需了解详情,请参阅 管理 IAM 用户的访问密钥。
如果您之前未使用过 Secret Manager,请配置 Secret Manager。
为媒体 CDN 创建服务代理
如需为媒体 CDN 创建服务代理,请使用 gcloud beta services identity create
命令。
gcloud
gcloud beta services identity create \ --project PROJECT_ID \ --service=networkservices.googleapis.com
将 PROJECT_ID
替换为您的项目 ID。
如需了解详情,请参阅触发服务代理创建。
在 Secret Manager 中存储访问密钥
请按以下步骤操作 创建 Secret 在 Secret Manager 中运行。
控制台
在 Google Cloud 控制台中,转到 Secret Manager 页面。
在 Secret Manager 页面上,点击创建密钥。
在 Secret 详情部分,完成以下操作:
在名称字段中,输入 secret 的名称,例如
aws-access-key-id
。在 Secret 值部分中,跳过 Upload file 字段。
在 Secret 值字段中,输入 AWS 私有访问密钥。
跳过其余部分。
点击创建密钥。
gcloud
确保您使用的是 Google Cloud CLI 402.0.0 或更高版本。在 Compute Engine 或 Google Kubernetes Engine (GKE)上 使用 cloud-platform 范围进行身份验证。
gcloud secrets create SECRET_NAME \ --replication-policy="automatic" \ --data-file="PATH_TO_AWS_SECRET_ACCESS_KEY"
替换以下内容:
SECRET_NAME
:您的 Secret,例如aws-access-key-id
PATH_TO_AWS_SECRET_ACCESS_KEY
:AWS 私有访问密钥值的路径
如需了解如何添加 Secret 版本,请参阅添加 Secret 版本。
授予 Secret Manager Access 角色
请按照以下步骤向 Media CDN 服务账号授予 Secret Manager Secret Accessor 角色 (roles/secretmanager.secretAccessor
)。
控制台
在 Google Cloud 控制台中,转到 Secret Manager 页面。
- 选择相应密钥。
- 选择权限,然后选择授予访问权限。通过 授予访问权限对话框。
在添加主账号部分的新的主账号字段中,输入媒体 CDN 服务账号,如下所示:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
将
PROJECT_NUMBER
替换为您的 项目编号。- 在分配角色部分的选择角色中,选择 Secret Manager,然后选择 Secret Manager Secret Accessor。
- 点击保存。
gcloud
gcloud secrets add-iam-policy-binding \ projects/PROJECT_NUMBER/secrets/SECRET_NAME \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
替换以下内容:
PROJECT_NUMBER
:您的项目编号SECRET_NAME
:您的 Secret 的名称
配置媒体 CDN 以向外部源存储桶进行身份验证
控制台
在 Google Cloud 控制台中,前往媒体 CDN 页面。
点击Origins标签页。
点击您要配置的来源的名称。
系统随即会打开边缘缓存来源详情页面。
点击修改按钮。
在源地址部分,选择指定 FQDN 或 IP 地址,然后 输入 FQDN 或 IP 地址。
在专用源站身份验证部分中,选择使用 AWS 签名版本 4 对媒体 CDN 针对此源的请求进行身份验证。
请指定以下信息:
- 密钥 ID:具有读取权限的 AWS 访问密钥 ID 您的源
- 引用密钥:您的访问密钥的 ID Secret Manager 及其版本。您可以选择现有 ID、手动输入 ID,也可以创建新 ID 并选择该 ID。
- 区域:Amazon S3 存储桶所在的区域
所在的地理位置,例如
us-east-1
对于协议,选择 HTTPS。
点击更新来源。
gcloud
如需将服务的当前配置导出到 YAML 文件,请运行以下命令:
gcloud edge-cache services export
命令:gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
替换以下内容:
SERVICE_NAME
:媒体 CDN 服务的名称FILENAME
:YAML 文件的名称
在 Cloud Shell 中,使用文本编辑器修改 YAML 文件。
更新 YAML 文件,使其包含以下几行内容:
name: ORIGIN_NAME originAddress: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com" protocol: HTTPS awsV4Authentication: accessKeyId: "AWS_ACCESS_KEY_ID" secretAccessKeyVersion: "projects/PROJECT_NUMBER/secrets/SECRET_NAME/versions/SECRET_VERSION" originRegion: "S3_REGION"
替换以下内容:
ORIGIN_NAME
:您为此来源设置的名称S3_BUCKET_NAME
:您的 Amazon S3 存储桶的名称S3_REGION
:您的 Amazon S3 存储桶所在的区域,例如us-east-1
AWS_ACCESS_KEY_ID
:您的 AWS 访问密钥 ID 具有对源的读取权限PROJECT_NUMBER
:您的项目编号SECRET_NAME
:您的访问密钥的 ID Secret ManagerSECRET_VERSION
:要使用的 Secret 版本
为发送到源的主机的请求配置主机和路径重写。对于 例如,要映射路径前缀为
/vod/
的所有请求,请将hostRewrite
(与originAddress
EdgeCacheService
的 YAML 文件。以下代码示例展示了如何使用hostRewrite
:name: SERVICE_NAME routeRules: - priority: 1 - description: ROUTE_DESCRIPTION origin: ORIGIN_NAME matchRules: - prefixMatch: "/vod/" routeAction: urlRewrite: hostRewrite: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com" pathPrefixRewrite: "/" cdnPolicy: cacheMode: CACHE_ALL_STATIC defaultTtl: 3600s
将
SERVICE_NAME
替换为EdgeCacheService
的名称。如需了解详情,请参阅使用第三方存储后端。
保存 YAML 文件。
如需更新配置,请导入 YAML 文件。
gcloud edge-cache origins import ORIGIN_NAME \ --source=FILENAME.yaml
将媒体 CDN 配置为对您的外部存储桶进行身份验证后,媒体 CDN 会为发送到您的标头的所有请求生成 HTTP 授权标头。所有查询参数都会从签名中移除 和请求发送到您的源。
您的源可能会向您的响应附加其他标头。如需在向客户端提供内容之前移除响应标头,请参阅设置自定义标头。如需详细了解如何配置来源,请参阅来源连接性和屏蔽。