本页面介绍了如何将媒体 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 存储桶。确保存储桶授予
s3:getObject
对 AWS IAM 用户账号的权限。如需详细了解 配置对 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 value(密钥值)字段中,输入 AWS 私有访问密钥。
跳过其余部分。
点击创建密钥。
gcloud
确保您使用的是 402.0.0 版或更高版本的 Google Cloud CLI。 在 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 角色
请按照以下步骤向
Secret Manager Secret Accessor 角色
(roles/secretmanager.secretAccessor
) 到媒体 CDN 服务
。
控制台
在 Google Cloud 控制台中,转到 Secret Manager 页面。
- 选择相应密钥。
- 选择权限,然后选择授予访问权限。通过 授予访问权限对话框。
在添加主账号部分中,输入 服务账号 新的主账号字段,如下所示:
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 页面。
点击来源标签页。
点击您要配置的来源的名称。
边缘缓存来源详情页面随即打开。
点击修改按钮。
在源地址部分,选择指定 FQDN 或 IP 地址,然后 输入 FQDN 或 IP 地址。
在专用源站身份验证部分中,选择身份验证。 媒体 CDN 对此源站发出的请求(使用 AWS 签名版本 4)。
请指定以下信息:
- 密钥 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 授权标头, 。所有查询参数都会从签名中移除 和请求发送到您的源。
您的源可能会向您的响应附加其他标头。要移除 响应标头, 请参阅设置自定义标头。 如需详细了解如何配置源站,请参阅 源站连接和防护。