使用与 Amazon S3 兼容的专用存储桶作为来源

本页面介绍了如何将媒体 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 中运行。

控制台

  1. 在 Google Cloud 控制台中,转到 Secret Manager 页面。

    转到 Secret Manager

  2. Secret Manager 页面上,点击创建密钥

  3. Secret 详情部分,完成以下操作:

    1. 名称字段中,输入 secret 的名称,例如 aws-access-key-id

    2. Secret 值部分中,跳过 Upload file 字段。

    3. Secret 值字段中,输入 AWS 私有访问密钥。

  4. 跳过其余部分。

  5. 点击创建密钥

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)。

控制台

  1. 在 Google Cloud 控制台中,转到 Secret Manager 页面。

    前往 Secret Manager

  2. 选择相应密钥。
  3. 选择权限,然后选择授予访问权限。通过 授予访问权限对话框。
  4. 添加主账号部分的新的主账号字段中,输入媒体 CDN 服务账号,如下所示:
    service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

    PROJECT_NUMBER 替换为您的 项目编号。

  5. 分配角色部分的选择角色中,选择 Secret Manager,然后选择 Secret Manager Secret Accessor
  6. 点击保存

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 以向外部源存储桶进行身份验证

控制台

  1. 在 Google Cloud 控制台中,前往媒体 CDN 页面。

    前往“媒体 CDN”

  2. 点击Origins标签页。

  3. 点击您要配置的来源的名称。

    系统随即会打开边缘缓存来源详情页面。

  4. 点击修改按钮。

  5. 源地址部分,选择指定 FQDN 或 IP 地址,然后 输入 FQDN 或 IP 地址。

  6. 专用源站身份验证部分中,选择使用 AWS 签名版本 4 对媒体 CDN 针对此源的请求进行身份验证

  7. 请指定以下信息:

    • 密钥 ID:具有读取权限的 AWS 访问密钥 ID 您的源
    • 引用密钥:您的访问密钥的 ID Secret Manager 及其版本。您可以选择现有 ID、手动输入 ID,也可以创建新 ID 并选择该 ID。
    • 区域:Amazon S3 存储桶所在的区域 所在的地理位置,例如 us-east-1
  8. 对于协议,选择 HTTPS

  9. 点击更新来源

gcloud

  1. 如需将服务的当前配置导出到 YAML 文件,请运行以下命令: gcloud edge-cache services export 命令

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    替换以下内容:

    • SERVICE_NAME:媒体 CDN 服务的名称
    • FILENAME:YAML 文件的名称
  2. 在 Cloud Shell 中,使用文本编辑器修改 YAML 文件。

  3. 更新 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 Manager
    • SECRET_VERSION:要使用的 Secret 版本
  4. 为发送到源的主机的请求配置主机和路径重写。对于 例如,要映射路径前缀为 /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 的名称。

    如需了解详情,请参阅使用第三方存储后端

  5. 保存 YAML 文件。

  6. 如需更新配置,请导入 YAML 文件。

    gcloud edge-cache origins import ORIGIN_NAME \
        --source=FILENAME.yaml
    

将媒体 CDN 配置为对您的外部存储桶进行身份验证后,媒体 CDN 会为发送到您的标头的所有请求生成 HTTP 授权标头。所有查询参数都会从签名中移除 和请求发送到您的源。

您的源可能会向您的响应附加其他标头。如需在向客户端提供内容之前移除响应标头,请参阅设置自定义标头。如需详细了解如何配置来源,请参阅来源连接性和屏蔽