Utiliser un bucket privé compatible S3 comme origine

Cette page explique comment connecter Media CDN à des buckets compatibles S3 en utilisant le "Simple Storage Service" d'Amazon Web Services (AWS) et la version 4 de S3 Signature.

Media CDN n'est pas compatible avec la version 4a d'AWS Signature.

Media CDN est compatible avec la version 4 d'AWS Signature pour authentifier les requêtes d'origine. Vous pouvez utiliser cette fonctionnalité pour connecter Media CDN à vos buckets privés compatibles S3, ce qui vous garantit que votre contenu n'est partagé qu'avec Media CDN. Vous pouvez également activer l'authentification client pour une défense plus en profondeur. Pour en savoir plus, consultez la page Utiliser des requêtes signées.

Avant de commencer

Vérifiez que vous disposez des éléments suivants :

  • Un bucket S3 privé.

  • Un compte utilisateur AWS IAM (Identity and Access Management) dédié pour accéder au bucket S3 privé précédent. Assurez-vous que le bucket accorde l'autorisation s3:getObject au compte utilisateur IAM AWS. Pour en savoir plus sur la configuration de l'accès à votre bucket S3, consultez la page Gestion de l'authentification et des accès dans Amazon S3.

  • L'ID de clé d'accès et l'ID de clé d'accès secrète pour le compte utilisateur IAM AWS dédié. Pour en savoir plus, consultez la page Gérer les clés d'accès pour les utilisateurs IAM.

  • Si vous n'avez pas encore utilisé Secret Manager, configurez Secret Manager.

Stocker les clés d'accès dans Secret Manager

  1. Ajoutez la version du secret pour le compte utilisateur AWS dédié dans Secret Manager.

  2. Attribuez le rôle d'accès Secret Manager (roles/secretmanager.secretAccessor) au compte de service 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"
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : votre numéro de projet.
    • ACCESS_KEY_ID : ID de la clé d'accès à partager.

Configurer Media CDN pour qu'il s'authentifie auprès de votre bucket d'origine externe

  1. Créez un fichier YAML pour configurer votre origine externe, FILENAME.yaml.

    Remplacez FILENAME.yaml par le nom de fichier de votre choix.

  2. Saisissez le contenu suivant dans le fichier :

    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"
    

    Remplacez les éléments suivants :

    • ORIGIN_NAME : nom que vous avez défini pour cette origine.
    • S3_BUCKET_NAME : nom de votre bucket S3.
    • S3_REGION : région où se trouve votre bucket S3.
    • OBJECT_PATH : chemin d'accès à vos objets.
    • ACCESS_KEY_NAME : nom de votre clé d'accès dans AWS Secrets Manager.
    • ACCESS_KEY_ID : ID de la clé d'accès dans Secret Manager.
    • SECRET_ACCESS_KEY_VERSION : version de clé d'accès secrète à utiliser.
  3. Configurez les réécritures d'hôte et de chemin d'accès pour les requêtes adressées à votre origine. Par exemple, pour mapper toutes les requêtes avec le préfixe de chemin d'accès /vod/, configurez un élément hostRewrite correspondant à l'élément originAddress répertorié dans le fichier YAML de votre EdgeCacheService. L'exemple de code suivant montre comment utiliser 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
    

    Remplacez SERVICE_NAME par le nom de votre EdgeCacheService.

    Pour plus d'informations, consultez la page Utiliser des backends de stockage tiers.

  4. Pour créer ou mettre à jour votre configuration, importez le fichier YAML que vous avez créé :

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

Une fois que vous avez configuré Media CDN pour qu'il s'authentifie auprès de votre bucket externe, Media CDN génère un en-tête d'autorisation HTTP pour toutes les requêtes envoyées à votre en-tête. Tous les paramètres de requête sont supprimés du calcul de la signature et de la requête vers votre origine.

Votre origine peut ajouter des en-têtes supplémentaires à vos réponses. Pour supprimer les en-têtes de réponse avant de les diffuser aux clients, consultez la section Définir des en-têtes personnalisés. Pour en savoir plus sur la configuration des origines, consultez la page Connectivité et protection des origines.