Configuration d'Amazon S3 d'AWS pour le stockage et Cloudfront pour les CDN

,

Démarrage

Vous aurez besoin de :

  1. Une instance Discourse avec un accès à app.yml
  2. Un compte AWS

Stratégie de nommage

Il existe de nombreux endroits où l’on peut se tromper. L’utilisation d’une stratégie de convention de nommage qui a du sens pour vous, et peut-être pour d’autres, vous aidera dans le dépannage, surtout si vous configurez plusieurs instances Discourse.

  • Utilisateur IAM : votre-utilisateur-iam
  • Stratégie : s3-discourse-strategie-votre-utilisateur-iam
  • Bac de sauvegarde : votredomaine-sous-domaine-sauvegardes
  • Bac de téléchargements : votredomaine-sous-domaine-téléchargements
  • Réseaux de distribution de contenu (CDN) : cdn-votredomaine-sous-domaine et s3-votredomaine-sous-domaine-téléchargements

Optionnel : Bac de processus de configuration : a-origin-config-bucket

Configuration AWS

Utilisez les paramètres par défaut sur les pages de configuration AWS, sauf instruction contraire.

Noms S3, noms, noms

  • Domaine de l’instance Discourse : sous-domaine.votredomaine.tld (sous-domaine.votredomaine.tld incluant www.votredomaine.tld)
  • Utilisateur IAM : votredomaine-sous-domaine (votredomaine-discourse, votredomaine-forum ou Discourse au niveau racine/apex : votredomaine-tld-www)
  • Stratégie pour l’utilisateur IAM : s3-discourse-strategie-votredomaine-sous-domaine
  • Bac de téléchargements : votredomaine-sous-domaine-téléchargements. Remarque : N’oubliez pas de définir « Tout le monde (accès public) » sur « Lecture » dans Bac > Permissions : Liste de contrôle d’accès (ACL) - Liste de contrôle d’accès (ACL) - Bénéficiaire.
  • Bac de sauvegarde : votredomaine-sous-domaine-sauvegardes
  • Réseaux de distribution de contenu (CDN) : cdn-votredomaine-sous-domaine et s3-votredomaine-sous-domaine-téléchargements
  • Bac de processus de configuration : a-origin-config-bucket

Utilisateurs IAM

  1. Allez dans IAM > Utilisateurs > Sélectionnez « Créer un utilisateur »
  2. IAM > Utilisateurs > Créer un utilisateur > Spécifier les détails de l’utilisateur > Détails de l’utilisateur > Nom d’utilisateur > Entrez le nom, par exemple votre-utilisateur-iam > Sélectionnez « Suivant »
  3. IAM > Utilisateurs > Créer un utilisateur > Définir les permissions > Options de permissions > Sélectionnez « Attacher des stratégies directement » > Sélectionnez « Créer une stratégie » > Ouvre la page Créer une stratégie (Alternativement, la stratégie peut être créée d’abord dans Stratégies, puis sélectionnée lors de la création de l’utilisateur dans « Stratégies de permissions ».)
  4. IAM > Utilisateurs > Créer un utilisateur > Définir les permissions > Stratégies de permissions > Filtrer par le sélecteur déroulant Type > Sélectionnez « Gérée par le client » > Sélectionnez la stratégie nouvellement créée > Sélectionnez « Suivant » > Sélectionnez « Créer un utilisateur »
  5. IAM > Utilisateurs > votre-utilisateur-iam > Identifiants de sécurité > Clés d’accès > Sélectionnez « Créer une clé d’accès »
  6. IAM > Utilisateurs > votre-utilisateur-iam > Créer une clé d’accès > Bonnes pratiques et alternatives pour les clés d’accès > Sélectionnez « Autre » > Sélectionnez « Suivant »
  7. IAM > Utilisateurs > votre-utilisateur-iam > Créer une clé d’accès > Définir une étiquette de description > Sélectionnez « Créer une clé d’accès »
  8. IAM > Utilisateurs > votre-utilisateur-iam > Créer une clé d’accès > Récupérer les clés d’accès > Enregistrez en toute sécurité la clé d’accès et la clé d’accès secrète pour une utilisation dans app.yml de Discourse > Sélectionnez « Terminé »

Stratégies

  1. Modifiez s3-discourse-strategie-votre-utilisateur-iam.txt avec votre nom d’utilisateur IAM et les noms de vos bacs.
  2. Allez dans IAM > Stratégies > Créer une stratégie
  3. IAM > Stratégies > Créer une stratégie > Spécifier les permissions > Éditeur de stratégie > Sélectionnez « JSON » dans l’éditeur de stratégie > Copiez la stratégie depuis s3-discourse-strategie-votre-utilisateur-iam.txt et collez-la dans l’éditeur JSON en remplaçant le JSON existant > Sélectionnez « Suivant »
  4. IAM > Stratégies > Créer une stratégie > Examiner et créer > Détails de la stratégie > Nom de la stratégie > Entrez le nom de la stratégie, par exemple s3-discourse-strategie-votre-utilisateur-iam > Sélectionnez « Suivant »
  5. Allez dans Utilisateurs IAM : 4. IAM > Utilisateurs > Créer un utilisateur pour continuer le processus de création d’utilisateur

Bacs Amazon S3

Créez et configurez le bac de sauvegarde, le bac de téléchargements et le bac de processus de configuration, optionnel mais utile.

Créer le bac de sauvegarde votredomaine-sous-domaine-sauvegardes

  1. Allez dans Amazon S3 Bacs > Sélectionnez « Créer un bac »
  2. Amazon S3 > Bacs > Créer un bac > Configuration générale > Confirmez la sélection « Usage général »
  3. Amazon S3 > Bacs > Créer un bac > Configuration générale > Nom du bac > Entrez le nom du bac de sauvegarde, par exemple votredomaine-sous-domaine-sauvegardes
  4. Amazon S3 > Bacs > Créer un bac > Configuration générale > Confirmez la sélection « ACL désactivées (recommandé) »
  5. Amazon S3 > Bacs > Créer un bac > Paramètres de blocage de l’accès public pour ce bac > Désélectionnez « Bloquer tout accès public », puis sélectionnez « Bloquer l’accès public aux bacs et objets accordés via de nouvelles politiques de bac ou de point d’accès publics » et « Bloquer l’accès public et inter-comptes aux bacs et objets via toute politique de bac ou de point d’accès public »
  6. Amazon S3 > Bacs > Créer un bac > Paramètres de blocage de l’accès public pour ce bac > La désactivation du blocage de tout accès public peut entraîner la mise en accès public de ce bac et des objets qu’il contient > Sélectionnez « J’accepte que les paramètres actuels puissent entraîner la mise en accès public de ce bac et des objets qu’il contient. »
  7. Amazon S3 > Bacs > Créer un bac > Versionnement du bac > Versionnement du bac > Sélectionnez « Activer » Info : Le versionnement du bac est requis pour les « Règles de cycle de vie »
  8. Amazon S3 > Bacs > Créer un bac > Sélectionnez « Créer un bac »

Configuration des règles de cycle de vie

Règle de rétention des sauvegardes

  1. Amazon S3 > Bacs > Sélectionnez le bac nouvellement créé, par exemple votredomaine-sous-domaine-sauvegardes
  2. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Sélectionnez « Créer une règle de cycle de vie »
  3. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Nom de la règle de cycle de vie > Entrez le nom de la règle, par exemple rétention des sauvegardes
  4. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Choisir une portée de règle > Sélectionnez « Appliquer à tous les objets du bac »
  5. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Choisir une portée de règle > Appliquer à tous les objets du bac > Sélectionnez « J’accepte que cette règle s’applique à tous les objets du bac. »
  6. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Actions de la règle de cycle de vie > Sélectionnez « Transférer les versions non actuelles des objets entre les classes de stockage », « Expirer les versions actuelles des objets » et « Supprimer définitivement les versions non actuelles des objets »
  7. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Actions de la règle de cycle de vie > Les transferts sont facturés à la demande > Sélectionnez « J’accepte que cette règle de cycle de vie entraînera un coût de transfert par demande. »
  8. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Transférer les versions non actuelles des objets entre les classes de stockage > Choisir les transferts de classe de stockage > Sélectionnez « Récupération instantanée Glacier »
  9. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Transférer les versions non actuelles des objets entre les classes de stockage > Jours après que les objets deviennent non actuels > Entrez « 1 »
  10. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Expirer les versions actuelles des objets > Jours après la création de l’objet > Entrez « 7 » ou 15 ou 30 ou ???
  11. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Supprimer définitivement les versions non actuelles des objets > Jours après que les objets deviennent non actuels > Entrez « 91 »
  12. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Confirmez que « Examiner les actions de transfert et d’expiration » est correct > Sélectionnez « Créer la règle »

Règle de nettoyage

  1. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Sélectionnez « Créer une règle de cycle de vie »
  2. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Nom de la règle de cycle de vie > Entrez le nom de la règle : nettoyage
  3. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Choisir une portée de règle > Sélectionnez « Appliquer à tous les objets du bac »
  4. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Choisir une portée de règle > Appliquer à tous les objets du bac > Sélectionnez « J’accepte que cette règle s’applique à tous les objets du bac. »
  5. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Actions de la règle de cycle de vie > Sélectionnez « Supprimer définitivement les versions non actuelles des objets » et « Supprimer les marqueurs de suppression d’objets expirés ou les téléversements multipartes incomplets »
  6. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Supprimer définitivement les versions non actuelles des objets > Jours après que les objets deviennent non actuels > Entrez « 92 »
  7. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Supprimer définitivement les versions non actuelles des objets > Supprimer les marqueurs de suppression d’objets expirés ou les téléversements multipartes incomplets > Marqueurs de suppression d’objets expirés > Sélectionnez « Supprimer les marqueurs de suppression d’objets expirés »
  8. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Supprimer définitivement les versions non actuelles des objets > Supprimer les marqueurs de suppression d’objets expirés ou les téléversements multipartes incomplets > Téléversements multipartes incomplets > Sélectionnez « Supprimer les téléversements multipartes incomplets »
  9. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Supprimer définitivement les versions non actuelles des objets > Supprimer les marqueurs de suppression d’objets expirés ou les téléversements multipartes incomplets > Téléversements multipartes incomplets > Supprimer les téléversements multipartes incomplets > Nombre de jours > Entrez « 3 » ou ???
  10. Amazon S3 > Bacs > votredomaine-sous-domaine-sauvegardes > Gestion > Configuration du cycle de vie > Confirmez que « Examiner les actions de transfert et d’expiration » est correct > Sélectionnez « Créer la règle »

Créer le bac de téléchargements votredomaine-sous-domaine-téléchargements

  1. Allez dans Amazon S3 > Bacs > Sélectionnez « Créer un bac »
  2. Amazon S3 > Bacs > Créer un bac > Configuration générale > Confirmez la sélection « Usage général »
  3. Amazon S3 > Bacs > Créer un bac > Configuration générale > Nom du bac > Entrez le nom du bac de téléchargements, par exemple votredomaine-sous-domaine-téléchargements
  4. Amazon S3 > Bacs > Créer un bac > Configuration générale > Sélectionnez « ACL activées »
  5. Amazon S3 > Bacs > Créer un bac > Paramètres de blocage de l’accès public pour ce bac > Désélectionnez « Bloquer tout accès public », puis sélectionnez « Bloquer l’accès public aux bacs et objets accordés via de nouvelles politiques de bac ou de point d’accès publics » et « Bloquer l’accès public et inter-comptes aux bacs et objets via toute politique de bac ou de point d’accès public »
  6. Amazon S3 > Bacs > Créer un bac > Paramètres de blocage de l’accès public pour ce bac > La désactivation du blocage de tout accès public peut entraîner la mise en accès public de ce bac et des objets qu’il contient > Sélectionnez « J’accepte que les paramètres actuels puissent entraîner la mise en accès public de ce bac et des objets qu’il contient. »
  7. Amazon S3 > Bacs > Créer un bac > Sélectionnez « Créer un bac »
  8. Amazon S3 > Bacs > Écran des bacs > Sélectionnez le bac nouvellement créé, par exemple votredomaine-sous-domaine-téléchargements
    Revenez pour effectuer l’étape 9 après avoir créé la Distribution #2
  9. Amazon S3 > Bacs > votredomaine-sous-domaine-téléchargements > Permissions > Stratégie de bac > Sélectionnez Modifier > Collez le JSON depuis Créer la distribution #2 11. CloudFront > Distributions > ID de distribution > Modifier l’origine > Contrôle d’accès à l’origine > Sélectionnez « Enregistrer les modifications »
  10. Amazon S3 > Bacs > votredomaine-sous-domaine-téléchargements > Permissions > Liste de contrôle d’accès (ACL) > Sélectionnez Modifier > Tout le monde (accès public) > Sélectionnez « Lecture » > Lorsque vous accordez l’accès au groupe Tout le monde ou aux utilisateurs authentifiés, n’importe qui dans le monde peut accéder aux objets de ce bac. Sélectionnez « Je comprends les effets de ces modifications sur mes objets et bacs. » > Sélectionnez « Enregistrer les modifications »

Créer un bac de processus de configuration a-origin-config-bucket
Créez un bac à utiliser pendant le processus de configuration de la Distribution #1. Le nom et la configuration ne sont pas importants car le bac n’est utilisé que temporairement comme origine initiale qui sera supprimée pendant le processus de configuration.
1. Allez dans Amazon S3 > Bacs > Sélectionnez « Créer un bac »
2. Amazon S3 > Bacs > Créer un bac > Configuration générale > Confirmez la sélection « Usage général »
3. Amazon S3 > Bacs > Créer un bac > Configuration générale > Nom du bac > Entrez le nom du bac de téléchargements, par exemple a-origin-config-bucket
4. Parcourez les pages de configuration et « Créer un bac »

Distributions CloudFront

Créez deux distributions AWS S3 CloudFront. L’une pour servir les ressources du site web et la seconde pour servir les ressources du bac de téléchargements.

Créer la distribution #1

  Distribution #1
    DISCOURSE_CDN_URL
      Nom de la distribution : cdn-votredomaine-sous-domaine
      Origine : sous-domaine.votredomaine.tld
      Nom de domaine de la distribution (URL Cloudfront) : AWS-assigned.cloudfront.net
      Noms de domaine alternatifs : discourse-cdn.votredomaine.tld
  1. Allez dans CloudFront > Distributions > Sélectionnez « Créer »
  2. CloudFront > Distributions > Créer une distribution > Choisir un plan > Sélectionnez « Paiement à l’usage » > Sélectionnez « Suivant »
  3. CloudFront > Distributions > Créer une distribution > Commencer > Options de distribution > Nom de la distribution > Entrez le nom de la distribution, par exemple cdn-votredomaine-sous-domaine
  4. CloudFront > Distributions > Créer une distribution > Commencer > Options de distribution > Description - facultatif > Entrez « cdn-votredomaine-sous-domaine » (Facultatif mais aide à la visibilité)
  5. CloudFront > Distributions > Créer une distribution > Commencer > Options de distribution > Type de distribution > Confirmez la sélection « Site web ou application unique » > Sélectionnez « Suivant »
  6. CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Type d’origine > Sélectionnez « Autre » Référez-vous à toute origine AWS ou non AWS via son URL publiquement résoluble.
  7. CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Origine > Origine personnalisée > Entrez le domaine, par exemple sous-domaine.votredomaine.tld
  8. CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Paramètres > Paramètres de cache > Sélectionnez « Personnaliser les paramètres de cache »
  9. CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Paramètres > Paramètres de cache > Stratégie de cache > Dans le menu déroulant, sélectionnez « CachingOptimized » > Sélectionnez « Suivant »
  10. CloudFront > Distributions > Créer une distribution > Activer la sécurité > faites vos choix - pour ce guide > Sélectionnez « Ne pas activer les protections de sécurité » > Sélectionnez « Suivant »
  11. CloudFront > Distributions > Créer une distribution > Examiner et créer > Sélectionnez « Créer la distribution »
    Si vous utilisez une URL CDN personnalisée → Étape 12
  12. CloudFront > Distributions > ID de distribution > Noms de domaine alternatifs > Sélectionnez « Ajouter un domaine »
  13. CloudFront > Distributions > ID de distribution > Noms de domaine alternatifs > Ajouter un domaine > Configurer les domaines > Domaines > Domaines à servir > Entrez le DISCOURSE_CDN_URL, par exemple discourse-cdn.votredomaine.tld > Sélectionnez « Suivant »

Incomplet : Noms de domaine alternatifs : discourse-cdn.votredomaine.tld

Créer la distribution #2

  Distribution #2
    DISCOURSE_S3_CDN_URL
      Nom de la distribution : s3-votredomaine-sous-domaine-téléchargements
      Origine : votredomaine-sous-domaine-téléchargements
      Nom de domaine de la distribution (URL Cloudfront) : AWS-assigned.cloudfront.net
      Noms de domaine alternatifs : s3-cdn.votredomaine.tld
  1. CloudFront > Distributions > Créer une distribution
  2. CloudFront > Distributions > Créer une distribution > Choisir un plan > Sélectionnez « Paiement à l’usage » > Sélectionnez « Suivant »
  3. CloudFront > Distributions > Créer une distribution > Commencer > Options de distribution > Nom de la distribution > Entrez le nom de la distribution, par exemple s3-votredomaine-sous-domaine-téléchargements
  4. CloudFront > Distributions > Créer une distribution > Commencer > Options de distribution > Description - facultatif > Entrez « s3-votredomaine-sous-domaine-téléchargements » (Facultatif mais aide à la visibilité)
  5. CloudFront > Distributions > Créer une distribution > Commencer > Options de distribution > Type de distribution > Confirmez la sélection « Site web ou application unique » > Sélectionnez « Suivant »
  6. CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Type d’origine > Confirmez la sélection « Amazon S3 »
  7. CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Origine > Origine S3 > Sélectionnez « Parcourir S3 » > Sélectionnez le bac de téléchargements « votredomaine-sous-domaine-téléchargements » > Sélectionnez « Choisir » > Sélectionnez « Suivant »
  8. CloudFront > Distributions > Créer une distribution > Activer la sécurité > faites vos choix - pour ce guide > Sélectionnez « Ne pas activer les protections de sécurité » > Sélectionnez « Suivant »
  9. CloudFront > Distributions > Créer une distribution > Examiner et créer > Confirmez que « Examiner et créer » est correct > Sélectionnez « Créer la distribution » → La page d’informations de la distribution nouvellement créée devrait s’ouvrir dans CloudFront > Distributions > ID de distribution
  10. CloudFront > Distributions > ID de distribution > Origines > Sélectionnez l’origine > Sélectionnez « Modifier »
  11. CloudFront > Distributions > ID de distribution > Modifier l’origine > Contrôle d’accès à l’origine > ! Vous devez autoriser l’accès à CloudFront en utilisant cette stratégie… > Sélectionnez « Copier la stratégie » > Allez dans Créer le bac de téléchargements 9. Amazon S3 > Bacs > votredomaine-sous-domaine-téléchargements > Permissions > Stratégie de bac

Incomplet : Noms de domaine alternatifs : s3-cdn.votredomaine.tld

Administration Discourse

À jour pour la version Discourse : 2025.12.0-latest

Apportez ces modifications dans l’interface d’administration Discourse

Paramètres de sauvegarde /admin/backups/settings

  1. Maximum de sauvegardes > Entrez le nombre de sauvegardes à conserver localement
  2. Sauvegarder avec les téléchargements > Sélectionnez « Inclure les téléchargements dans les sauvegardes planifiées. La désactivation de cette option sauvegardera uniquement la base de données. »

Paramètres S3 /admin/site_settings/category/all_results?filter=S3

  1. S3 utiliser l’URL CDN pour tous les téléchargements > Sélectionnez « Utiliser l’URL CDN pour tous les fichiers téléchargés vers S3, et pas seulement pour les images. » (Discourse est livré désélectionné)

Modifier la configuration (app.yml) URLs non personnalisées

Modifiez app.yml en apportant les modifications ci-dessous pour les URLs personnalisées ou les URLs CloudFront non personnalisées.

URLs Discourse non personnalisées

Utilisez ceci pour les distributions CloudFront non personnalisées. Votre DISCOURSE_S3_REGION peut être différent.
DISCOURSE_CDN_URL : https://amazonassigned.cloudfront.net

Configuration de stockage S3 (non personnalisée)

  ## Configuration de stockage S3
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION:  us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: clé masquée
  DISCOURSE_S3_SECRET_ACCESS_KEY: clé masquée
  DISCOURSE_S3_CDN_URL: https://amazonassigned.cloudfront.net
  DISCOURSE_S3_BUCKET: votre-nom-de-bac-téléchargements
  DISCOURSE_S3_BACKUP_BUCKET: votre-nom-de-bac-sauvegardes
  DISCOURSE_BACKUP_LOCATION: s3

URLs Discourse personnalisées

Configuration DNS

Si vous préférez utiliser des URLs basées sur votredomaine.com pour les CDN, vous devez apporter quelques modifications DNS et ajuster vos URLs CDN.

Astuce : N’oubliez pas d’ajouter discourse-cdn.votredomaine.com et s3-cdn.votredomaine.com en tant que noms de domaine dans « Noms de domaine alternatifs » pour leurs distributions CloudFront respectives.

Configuration DNS si vous souhaitez utiliser des distributions CloudFront personnalisées par domaine.

DISCOURSE_CDN_URL

Enregistrement existant : A   discourseinstance.votredomaine.com   IP de l'instance  Remarque : Il s'agit de l'IP d'installation Discourse existante.
Nouvel enregistrement :   A   discourse-cdn-cloudfront.votredomaine.com   IP de l'instance
Nouvel enregistrement :   CNAME discourse-cdn.votredomaine.com  ->   amazonassigned.cloudfront.net

DISCOURSE_S3_CDN_URL

Nouvel enregistrement :   CNAME s3-cdn-cloudfront.votredomaine.com  ->   amazonassigned.cloudfront.net
Nouvel enregistrement :   CNAME  s3-cdn.votredomaine.com  ->   s3-cdn-cloudfront.votredomaine.com

Modifier la configuration (app.yml) URLs personnalisées

Une fois les modifications DNS terminées, vous pouvez modifier votre app.yml en apportant les modifications ci-dessous.

Modifiez DISCOURSE_CDN_URL et/ou DISCOURSE_S3_CDN_URL si vous utilisez des CNAME de domaine pour la distribution CloudFront (amazonassigned.cloudfront.net).

DISCOURSE_CDN_URL : https://discourse-cdn.votredomaine.com

Configuration de stockage S3 (personnalisée)

## Configuration de stockage S3
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION:  us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: clé masquée
DISCOURSE_S3_SECRET_ACCESS_KEY: clé masquée
DISCOURSE_S3_CDN_URL: https://s3-cdn.votredomaine.com
DISCOURSE_S3_BUCKET: votre-nom-de-bac-téléchargements
DISCOURSE_S3_BACKUP_BUCKET: votre-nom-de-bac-sauvegardes
DISCOURSE_BACKUP_LOCATION: s3

Modifications de configuration supplémentaires (app.yml)

Quel que soit l’approche utilisée, URLs personnalisées ou CloudFront, vous aurez besoin de la section after_assets_precompile ci-dessous pour garantir que tout reste à jour lors des reconstructions ultérieures.

  hooks:
    after_code:
      - exec:
          cd: $home/plugins
          cmd:
            - git clone https://github.com/discourse/docker_manager.git
            - vous pouvez avoir plus de plugins
    after_assets_precompile:
      - exec:
          cd: $home
          cmd:
            - sudo -E -u discourse bundle exec rake s3:upload_assets
            - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Reconstruisez votre instance avec ./launcher rebuild app

Après que ./launcher rebuild app se soit terminé avec succès, exécutez ces commandes rake.

./launcher enter app

rake posts:rebake
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

Si les commandes rake se terminent sans erreur, vous êtes prêt.

Sur certains sites, la reconstruction initiale échouera avec une erreur liée à s3:upload_assets. Si cela se produit,

vérifiez le paramètre « lecture » sur le bac de téléchargements. S’il est correctement défini, alors,

commentez ou supprimez la section after_assets_precompile :

  after_assets_precompile:
      - exec:
          cd: $home
          cmd:
            - sudo -E -u discourse bundle exec rake s3:upload_assets
            - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

et exécutez à nouveau ./launcher rebuild app. Ensuite, exécutez « rake s3:upload_assets » et « rake s3:expire_missing_assets ».

Si les deux commandes rake se terminent sans erreur, réajoutez ou décommentez la section after_assets_precompile, reconstruisez à nouveau et exécutez toutes les commandes rake listées ci-dessus.

Si l’une des commandes rake génère une erreur ou si la reconstruction échoue à nouveau, il y a quelque chose de mal dans votre app.yml et/ou dans vos configurations AWS S3 et/ou dans vos enregistrements DNS. Bonne chasse ! :slight_smile:

s3-discourse-strategie-votre-utilisateur-iam.txt|pièce jointe (697 octets)

1 « J'aime »

Réponse du support AWS concernant : Confirmation de l’approche dans la règle de nettoyage

J’ai examiné la configuration proposée de votre règle de cycle de vie, et je suis heureux de confirmer que votre configuration est bien conçue et suit les meilleures pratiques AWS pour la gestion des compartiments de sauvegarde.

========== Évaluation de la règle de cycle de vie ==========

Votre configuration est excellente et couvre les domaines clés pour le nettoyage des sauvegardes :

  • Nettoyage des versions non actuelles (92 jours) : Il s’agit d’une période de rétention judicieuse qui équilibre les coûts de stockage et les besoins de récupération. La rétention de 92 jours laisse amplement le temps de valider les sauvegardes tout en évitant une accumulation indéfinie de stockage.

  • Suppression des marqueurs de suppression expirés : Correctement configuré pour nettoyer automatiquement les marqueurs de suppression orphelins, ce qui contribue à optimiser les coûts de stockage et les performances du compartiment.

  • Nettoyage des téléchargements multiparties incomplets (3 jours) : Le réglage de 3 jours est optimal : suffisamment court pour éviter le gaspillage de stockage dû aux échecs de téléchargement, mais suffisamment long pour prendre en charge les opérations de sauvegarde volumineuses légitimes.

  • Application de la portée : L’application à « tous les objets du compartiment » est appropriée pour les compartiments de sauvegarde dédiés où tout le contenu suit le même modèle de cycle de vie.

Réponse du support AWS concernant : Configuration du cycle de vie des compartiments de sauvegarde

Examen de la configuration du cycle de vie S3 pour les compartiments de sauvegarde

J’ai analysé votre configuration complète du cycle de vie et je peux confirmer que votre règle de « rétention de sauvegarde » est bien structurée et suit les meilleures pratiques AWS pour la gestion des sauvegardes.

Principales conclusions de mon analyse :

  • Votre compartiment comporte deux règles de cycle de vie complémentaires qui fonctionnent ensemble efficacement
  • La règle de « rétention de sauvegarde » gère correctement les versions actuelles et non actuelles avec des calendriers appropriés
  • La configuration comprend des transitions de stockage rentables pour les versions non actuelles
  • Toutes les composantes de la règle sont correctement configurées avec des paramètres de temporisation appropriés
  • Le compartiment est correctement configuré dans us-east-1 avec les autorisations appropriées

Évaluation de la configuration :

Votre règle de « rétention de sauvegarde » gère efficacement vos objets de sauvegarde tout au long de leur cycle de vie :

  • Transitionne les versions non actuelles vers Glacier Instant Retrieval après 1 jour (optimisation des coûts)
  • Expire les versions actuelles après 7 jours (approprié pour les sauvegardes régulières)
  • Supprime définitivement les versions non actuelles après 91 jours (bonne période de rétention)

Cette règle complète votre règle de « nettoyage » qui gère :

  • La suppression des marqueurs de suppression expirés (prévient les marqueurs orphelins)
  • Le nettoyage des téléchargements multiparties incomplets après 3 jours (prévient le gaspillage de stockage)
  • La suppression des versions non actuelles après 92 jours (assure un nettoyage complet)

Les deux règles s’appliquent à tous les objets du compartiment, ce qui est approprié pour le stockage de sauvegarde dédié où tout le contenu suit le même modèle de cycle de vie.

L’expiration de 7 jours pour les versions actuelles semble appropriée pour les scénarios de sauvegarde réguliers, mais vous pouvez l’ajuster en fonction de vos exigences spécifiques de rétention (15 ou 30 jours si une rétention plus longue est nécessaire).

Votre implémentation est complète et suit les meilleures pratiques AWS pour la gestion du cycle de vie S3.


Il s’avère qu’il existe une méthode plus efficace.

CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Type d’origine > Sélectionner « Autre » Référencez n’importe quelle origine AWS ou non-AWS via son URL publiquement résoluble.

CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Origine > Origine personnalisée > Entrez le domaine, par exemple subdomain.yourdomain.tld

CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Paramètres > Paramètres de cache > Sélectionner « Personnaliser les paramètres de cache »

CloudFront > Distributions > Créer une distribution > Spécifier l’origine > Paramètres > Paramètres de cache > Stratégie de cache > Dans le menu déroulant, sélectionnez « CachingOptimized » > Sélectionnez « Suivant »

Continuez avec les paramètres de sécurité, ignorez les étapes 10 à 14 d’origine

CloudFront > Distributions > Créer une distribution > Examiner et créer > Sélectionnez « Créer une distribution »