送信元として S3 互換の限定公開バケットを使用する

このページでは、Amazon Web Service(AWS)の Simple Storage Service(S3)と S3 署名バージョン 4 を使用して、Media CDN を非公開 S3 互換バケットに接続する方法について説明します。

Media CDN は AWS 署名バージョン 4a をサポートしていません。

Media CDN は、配信元リクエストを認証するために AWS 署名バージョン 4 をサポートしています。この機能を使用して、メディア CDN を非公開の S3 互換バケットに接続し、コンテンツが Media CDN とのみ共有されるようにできます。クライアント認証を有効にして、多層防御を強化することもできます。詳細については、署名付きリクエストの使用をご覧ください。

始める前に

次のことを確認します。

  • プライベート S3 バケット。

  • 上記のプライベート S3 バケットにアクセスするための専用の AWS Identity and Access Management(IAM)ユーザー アカウント。バケットが s3:getObject 権限を AWS IAM ユーザー アカウントに付与していることを確認します。S3 バケットへのアクセスの構成の詳細については、Amazon S3 での Identity and Access Management をご覧ください。

  • 専用の AWS IAM ユーザー アカウントのアクセスキー ID とシークレット アクセスキー ID。詳しくは、IAM ユーザーのアクセスキーの管理をご覧ください。

  • Secret Manager を初めて使用する場合は、Secret Manager を構成します。

アクセス マネージャーをシークレット マネージャーに保存する

  1. 専用の AWS ユーザー アカウントのシークレット バージョンをシークレット マネージャーに追加します。

  2. Secret Manager のアクセスロールroles/secretmanager.secretAccessor)を Media CDN サービス アカウントに付与します。

    gcloud secrets add-iam-policy-binding \
    projects/PROJECT_NUMBER/secrets/ACCESS_KEY_ID \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"
    

    以下を置き換えます。

    • PROJECT_NUMBER: プロジェクトの番号
    • ACCESS_KEY_ID: 共有するアクセスキーの ID

外部の送信元バケットに対して認証を行うように Media CDN を構成する

  1. 新しい YAML ファイル FILENAME を作成し、外部送信元を構成します。

    FILENAME.yaml のファイル名を置き換えます。

  2. このファイルに次の内容を貼り付けます。

    name: ORIGIN_NAME
    originAddress: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com/OBJECT_PATH"
    protocol: HTTPS
    awsV4Authentication:
      accessKeyId: "ACCESS_KEY_NAME"
      secretAccessKeyVersion: "projects/PROJECT_NUMBER/secrets/ACCESS_KEY_ID/versions/SECRET_ACCESS_KEY_VERSION"
      originRegion: "S3_REGION"
    

    以下を置き換えます。

    • ORIGIN_NAME: この送信元に設定した名前
    • S3_BUCKET_NAME: S3 バケットの名前
    • S3_REGION: S3 バケットが配置されているリージョン
    • OBJECT_PATH: オブジェクトへのパス
    • ACCESS_KEY_NAME: AWS Secrets Manager 内のアクセスキーの名前
    • ACCESS_KEY_ID: Secret Manager のアクセスキーの ID
    • SECRET_ACCESS_KEY_VERSION: 使用するシークレット アクセスキーのバージョン
  3. 送信元へのリクエストに対するホストとパスの書き換えを構成します。たとえば、パス接頭辞が /vod/ のすべてのリクエストをマッピングするには、EdgeCacheService の YAML ファイルにリストされている originAddress に対応する hostRewrite を構成します。次のコードサンプルは、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 の名前で置き換えます。

    詳しくは、サードパーティのストレージ バックエンドの使用をご覧ください。

  4. 構成を作成または更新するには、作成した YAML ファイルをインポートします。

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

外部バケットに対して認証を行うように Media CDN を構成すると、ヘッダーに対するすべてのリクエストに対して HTTP 認証ヘッダーが生成されます。すべてのクエリ パラメータが署名の計算と送信元へのリクエストから削除されます。

送信元からレスポンスにヘッダーが追加される場合があります。クライアントに配信される前にレスポンス ヘッダーを削除するには、カスタム ヘッダーの設定をご覧ください。送信元の構成の詳細については、送信元の接続とシールドをご覧ください。