このページでは、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 を構成します。
アクセス マネージャーをシークレット マネージャーに保存する
専用の AWS ユーザー アカウントのシークレット バージョンをシークレット マネージャーに追加します。
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 を構成する
新しい YAML ファイル
FILENAME
を作成し、外部送信元を構成します。FILENAME
.yaml のファイル名を置き換えます。このファイルに次の内容を貼り付けます。
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 のアクセスキーの IDSECRET_ACCESS_KEY_VERSION
: 使用するシークレット アクセスキーのバージョン
送信元へのリクエストに対するホストとパスの書き換えを構成します。たとえば、パス接頭辞が
/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
の名前で置き換えます。詳しくは、サードパーティのストレージ バックエンドの使用をご覧ください。
構成を作成または更新するには、作成した YAML ファイルをインポートします。
gcloud edge-cache origins import ORIGIN_NAME --source=FILENAME.yaml
外部バケットに対して認証を行うように Media CDN を構成すると、ヘッダーに対するすべてのリクエストに対して HTTP 認証ヘッダーが生成されます。すべてのクエリ パラメータが署名の計算と送信元へのリクエストから削除されます。
送信元からレスポンスにヘッダーが追加される場合があります。クライアントに配信される前にレスポンス ヘッダーを削除するには、カスタム ヘッダーの設定をご覧ください。送信元の構成の詳細については、送信元の接続とシールドをご覧ください。