Konfiguration von AWS's Amazon S3 für Speicher und Cloudfront für CDNs

,

Erste Schritte

Sie benötigen:

  1. Eine Discourse-Instanz mit Zugriff auf app.yml
  2. Ein AWS-Konto

Benennungskonzept

Es gibt viele Stellen, an denen Fehler passieren können. Die Verwendung einer Benennungskonvention, die für Sie und möglicherweise andere sinnvoll ist, hilft Ihnen bei der Fehlerbehebung, insbesondere wenn Sie mehrere Discourse-Instanzen konfigurieren.

  • IAM-Benutzer: your-iam-user
  • Richtlinie: s3-discourse-policy-your-iam-user
  • Sicherungs-Bucket: yourdomain-subdomain-backups
  • Upload-Bucket: yourdomain-subdomain-uploads
  • CDN-Verteilungen: cdn-yourdomain-subdomain und s3-yourdomain-subdomain-uploads

Optional: Konfigurationsprozess-Bucket: a-origin-config-bucket

AWS-Konfiguration

Verwenden Sie die Standardeinstellungen auf den AWS-Konfigurationsseiten, es sei denn, es wird ausdrücklich etwas anderes angeordnet.

S3-Namen, Namen, Namen

  • Discourse-Instanz-Domain: subdomain.yourdomain.tld (subdomain.yourdomain.tld einschließlich www.yourdomain.tld)
  • IAM-Benutzer: yourdomain-subdomain (yourdomain-discourse, yourdomain-forum oder Discourse in der Apex-/Root-Domain: yourdomain-tld-www)
  • Richtlinie für IAM-Benutzer: s3-discourse-policy-yourdomain-subdomain
  • Upload-Bucket: yourdomain-subdomain-uploads Hinweis: Vergessen Sie nicht, bei „Jeder (öffentlicher Zugriff)“ unter Bucket > Berechtigungen: Zugriffskontrollliste (ACL) – Zugriffskontrollliste (ACL) – Berechtigter auf „Lesen“ zu stellen.
  • Sicherungs-Bucket: yourdomain-subdomain-backups
  • CDN-Verteilungen: cdn-yourdomain-subdomain und s3-yourdomain-subdomain-uploads
  • Konfigurationsprozess-Bucket: a-origin-config-bucket

IAM-Benutzer

  1. Gehen Sie zu IAM > Benutzer > Wählen Sie „Benutzer erstellen
  2. IAM > Benutzer > Benutzer erstellen > Benutzerdetails angeben > Benutzerdetails > Benutzername > Namen eingeben, z. B. your-iam-user > „Weiter“ auswählen
  3. IAM > Benutzer > Benutzer erstellen > Berechtigungen festlegen > Berechtigungsoptionen > „Richtlinien direkt anhängen“ auswählen > „Richtlinie erstellen“ auswählen > Seite „Richtlinie erstellen“ wird geöffnet (Alternativ kann die Richtlinie zuerst unter Richtlinien erstellt und dann beim Erstellen des Benutzers unter „Berechtigungspolicies“ ausgewählt werden.)
  4. IAM > Benutzer > Benutzer erstellen > Berechtigungen festlegen > Berechtigungspolicies > Nach Typ im Dropdown-Menü filtern > „Vom Kunden verwaltet“ auswählen > Die neu erstellte Richtlinie auswählen > „Weiter“ auswählen > „Benutzer erstellen“ auswählen
  5. IAM > Benutzer > your-iam-user > Sicherheitsanmeldedaten > Zugriffsschlüssel > „Zugriffsschlüssel erstellen“ auswählen
  6. IAM > Benutzer > your-iam-user > Zugriffsschlüssel erstellen > Best Practices und Alternativen für Zugriffsschlüssel > „Anderes“ auswählen > „Weiter“ auswählen
  7. IAM > Benutzer > your-iam-user > Zugriffsschlüssel erstellen > Beschreibungstags festlegen > „Zugriffsschlüssel erstellen“ auswählen
  8. IAM > Benutzer > your-iam-user > Zugriffsschlüssel erstellen > Zugriffsschlüssel abrufen > Zugriffsschlüssel und geheimen Zugriffsschlüssel sicher speichern, um sie in Discourse app.yml zu verwenden > „Fertig“ auswählen

Richtlinien

  1. Bearbeiten Sie s3-discourse-policy-your-iam-user.txt mit Ihrem IAM-Benutzernamen und den Bucket-Namen.
  2. Gehen Sie zu IAM > Richtlinien > Richtlinie erstellen
  3. IAM > Richtlinien > Richtlinie erstellen > Berechtigungen angeben > Richtlinien-Editor > Wählen Sie „JSON“ im Richtlinien-Editor > Kopieren Sie die Richtlinie aus s3-discourse-policy-your-iam-user.txt und fügen Sie sie in den JSON-Editor ein, wobei Sie das vorhandene JSON überschreiben > „Weiter“ auswählen
  4. IAM > Richtlinien > Richtlinie erstellen > Überprüfen und erstellen > Richtlinien-Details > Richtlinienname > Richtlinienname eingeben, z. B. s3-discourse-policy-your-iam-user > „Weiter“ auswählen
  5. Gehen Sie zu IAM-Benutzer: 4. IAM > Benutzer > Benutzer erstellen, um den Prozess zum Erstellen des Benutzers fortzusetzen

Amazon S3-Buckets

Erstellen und konfigurieren Sie den Sicherungs-Bucket, den Upload-Bucket und den optionalen, aber nützlichen Konfigurationsprozess-Bucket.

Den Sicherungs-Bucket erstellen yourdomain-subdomain-backups

  1. Gehen Sie zu Amazon S3 Buckets > Wählen Sie „Bucket erstellen
  2. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bestätigen Sie die Auswahl „Allgemeiner Zweck“
  3. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bucket-Name > Sicherungs-Bucket-Namen eingeben, z. B. yourdomain-subdomain-backups
  4. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bestätigen Sie die Auswahl „ACLs deaktiviert (empfohlen)“
  5. Amazon S3 > Buckets > Bucket erstellen > Einstellungen zum Blockieren öffentlichen Zugriffs für diesen Bucket > Deaktivieren Sie „Alle öffentlichen Zugriffe blockieren“ und aktivieren Sie dann „Öffentlichen Zugriff auf Buckets und Objekte, die über neue öffentliche Bucket- oder Access-Point-Richtlinien gewährt werden, blockieren“ und „Öffentlichen und länderübergreifenden Zugriff auf Buckets und Objekte über beliebige öffentliche Bucket- oder Access-Point-Richtlinien blockieren“
  6. Amazon S3 > Buckets > Bucket erstellen > Einstellungen zum Blockieren öffentlichen Zugriffs für diesen Bucket > Das Deaktivieren des Blockierens aller öffentlichen Zugriffe kann dazu führen, dass dieser Bucket und die darin enthaltenen Objekte öffentlich werden > Wählen Sie „Ich bestätige, dass die aktuellen Einstellungen dazu führen können, dass dieser Bucket und die darin enthaltenen Objekte öffentlich werden.“
  7. Amazon S3 > Buckets > Bucket erstellen > Bucket-Versionierung > Bucket-Versionierung > Wählen Sie „Aktivieren“ Info: Die Bucket-Versionierung ist für „Lebenszyklusregeln“ erforderlich
  8. Amazon S3 > Buckets > Bucket erstellen > Wählen Sie „Bucket erstellen“

Konfiguration der Lebenszyklusregeln

Regel zur Aufbewahrung von Sicherungen

  1. Amazon S3 > Buckets > Wählen Sie den neu erstellten Bucket, z. B. yourdomain-subdomain-backups
  2. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Wählen Sie „Lebenszyklusregel erstellen“
  3. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Name der Lebenszyklusregel > Regelname eingeben, z. B. backup retention
  4. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Gültigkeitsbereich der Regel auswählen > Wählen Sie „Auf alle Objekte im Bucket anwenden“
  5. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Gültigkeitsbereich der Regel auswählen > Auf alle Objekte im Bucket anwenden > Wählen Sie „Ich bestätige, dass diese Regel auf alle Objekte im Bucket angewendet wird.“
  6. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Aktionen der Lebenszyklusregel > Wählen Sie „Nicht aktuelle Versionen von Objekten zwischen Speicherklassen übertragen“, „Aktuelle Versionen von Objekten verfallen lassen“ und „Nicht aktuelle Versionen von Objekten endgültig löschen“
  7. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Aktionen der Lebenszyklusregel > Übertragungen werden pro Anfrage berechnet > Wählen Sie „Ich bestätige, dass diese Lebenszyklusregel Übertragungskosten pro Anfrage verursacht.“
  8. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten zwischen Speicherklassen übertragen > Speicherklassen-Übertragungen auswählen > Wählen Sie „Glacier Instant Retrieval“
  9. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten zwischen Speicherklassen übertragen > Tage, nachdem Objekte nicht mehr aktuell sind > Geben Sie „1“ ein
  10. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Aktuelle Versionen von Objekten verfallen lassen > Tage nach der Objekterstellung > Geben Sie „7“ oder 15 oder 30 oder ??? ein
  11. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten endgültig löschen > Tage, nachdem Objekte nicht mehr aktuell sind > Geben Sie „91“ ein
  12. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Bestätigen Sie, dass „Überprüfung der Übertragungs- und Ablaufaktionen“ korrekt ist > Wählen Sie „Regel erstellen“

Bereinigungsregel

  1. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Wählen Sie „Lebenszyklusregel erstellen“
  2. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Name der Lebenszyklusregel > Regelnamen cleanup eingeben
  3. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Gültigkeitsbereich der Regel auswählen > Wählen Sie „Auf alle Objekte im Bucket anwenden“
  4. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Gültigkeitsbereich der Regel auswählen > Auf alle Objekte im Bucket anwenden > Wählen Sie „Ich bestätige, dass diese Regel auf alle Objekte im Bucket angewendet wird.“
  5. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Aktionen der Lebenszyklusregel > Wählen Sie „Nicht aktuelle Versionen von Objekten endgültig löschen“ und „Abgelaufene Objektlöschmarkierungen oder unvollständige multipart-Uploads löschen“
  6. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten endgültig löschen > Tage, nachdem Objekte nicht mehr aktuell sind > Geben Sie „92“ ein
  7. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten endgültig löschen > Abgelaufene Objektlöschmarkierungen oder unvollständige multipart-Uploads löschen > Abgelaufene Objektlöschmarkierungen > Wählen Sie „Abgelaufene Objektlöschmarkierungen löschen“
  8. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten endgültig löschen > Abgelaufene Objektlöschmarkierungen oder unvollständige multipart-Uploads löschen > Unvollständige multipart-Uploads > Wählen Sie „Unvollständige multipart-Uploads löschen“
  9. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Nicht aktuelle Versionen von Objekten endgültig löschen > Abgelaufene Objektlöschmarkierungen oder unvollständige multipart-Uploads löschen > Unvollständige multipart-Uploads löschen > Anzahl der Tage > Geben Sie „3“ oder ??? ein
  10. Amazon S3 > Buckets > yourdomain-subdomain-backups > Verwaltung > Lebenszykluskonfiguration > Bestätigen Sie, dass „Überprüfung der Übertragungs- und Ablaufaktionen“ korrekt ist > Wählen Sie „Regel erstellen“

Den Upload-Bucket erstellen yourdomain-subdomain-uploads

  1. Gehen Sie zu Amazon S3 > Buckets > Wählen Sie „Bucket erstellen
  2. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bestätigen Sie die Auswahl „Allgemeiner Zweck“
  3. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bucket-Name > Upload-Bucket-Namen eingeben, z. B. yourdomain-subdomain-uploads
  4. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Wählen Sie „ACLs aktiviert“
  5. Amazon S3 > Buckets > Bucket erstellen > Einstellungen zum Blockieren öffentlichen Zugriffs für diesen Bucket > Deaktivieren Sie „Alle öffentlichen Zugriffe blockieren“ und aktivieren Sie dann „Öffentlichen Zugriff auf Buckets und Objekte, die über neue öffentliche Bucket- oder Access-Point-Richtlinien gewährt werden, blockieren“ und „Öffentlichen und länderübergreifenden Zugriff auf Buckets und Objekte über beliebige öffentliche Bucket- oder Access-Point-Richtlinien blockieren“
  6. Amazon S3 > Buckets > Bucket erstellen > Einstellungen zum Blockieren öffentlichen Zugriffs für diesen Bucket > Das Deaktivieren des Blockierens aller öffentlichen Zugriffe kann dazu führen, dass dieser Bucket und die darin enthaltenen Objekte öffentlich werden > Wählen Sie „Ich bestätige, dass die aktuellen Einstellungen dazu führen können, dass dieser Bucket und die darin enthaltenen Objekte öffentlich werden.“
  7. Amazon S3 > Buckets > Bucket erstellen > Wählen Sie „Bucket erstellen“
  8. Amazon S3 > Buckets > Buckets-Bildschirm > Wählen Sie den neu erstellten Bucket, z. B. yourdomain-subdomain-uploads
    Kehren Sie zurück, um Schritt 9 nach der Erstellung der Verteilung #2 durchzuführen
  9. Amazon S3 > Buckets > yourdomain-subdomain-uploads > Berechtigungen > Bucket-Richtlinie > Bearbeiten auswählen > JSON aus Verteilung #2 erstellen 11. CloudFront > Verteilungen > Verteilungs-ID > Ursprung bearbeiten > Zugriffskontrolle für Ursprung > Wählen Sie „Änderungen speichern“
  10. Amazon S3 > Buckets > yourdomain-subdomain-uploads > Berechtigungen > Zugriffskontrollliste (ACL) > Bearbeiten auswählen > Jeder (öffentlicher Zugriff) > Wählen Sie „Lesen“ > Wenn Sie der Gruppe „Jeder“ oder „Authentifizierte Benutzer“ Zugriff gewähren, kann jeder auf der Welt auf die Objekte in diesem Bucket zugreifen. Wählen Sie „Ich verstehe die Auswirkungen dieser Änderungen auf meine Objekte und Buckets.“ > Wählen Sie „Änderungen speichern“

Einen Konfigurationsprozess-Bucket erstellen a-origin-config-bucket
Erstellen Sie einen Bucket, der während des Konfigurationsprozesses der Verteilung #1 verwendet wird. Name und Konfiguration sind unwichtig, da der Bucket nur vorübergehend als initialer Ursprung verwendet wird, der während des Konfigurationsprozesses gelöscht wird.
1. Gehen Sie zu Amazon S3 > Buckets > Wählen Sie „Bucket erstellen
2. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bestätigen Sie die Auswahl „Allgemeiner Zweck“
3. Amazon S3 > Buckets > Bucket erstellen > Allgemeine Konfiguration > Bucket-Name > Upload-Bucket-Namen eingeben, z. B. a-origin-config-bucket
4. Wechseln Sie durch die Konfigurationsseiten und wählen Sie „Bucket erstellen“

CloudFront-Verteilungen

Erstellen Sie zwei AWS S3 CloudFront-Verteilungen. Eine zur Bereitstellung von Website-Assets und die zweite zur Bereitstellung von Upload-Bucket-Assets.

Verteilung #1 erstellen

  Verteilung #1
    DISCOURSE_CDN_URL
      Verteilungsname: cdn-yourdomain-subdomain
      Ursprung: subdomain.yourdomain.tld
      Verteilungsdomänenname (Cloudfront-URL): AWS-assigned.cloudfront.net
      Alternative Domänennamen: discourse-cdn.yourdomain.tld
  1. Gehen Sie zu CloudFront > Verteilungen > Wählen Sie „Erstellen
  2. CloudFront > Verteilungen > Verteilung erstellen > Einen Plan auswählen > Wählen Sie „Pay as you go“ > Wählen Sie „Weiter“
  3. CloudFront > Verteilungen > Verteilung erstellen > Loslegen > Verteilungsoptionen > Verteilungsname > Verteilungsname eingeben, z. B. cdn-yourdomain-subdomain
  4. CloudFront > Verteilungen > Verteilung erstellen > Loslegen > Verteilungsoptionen > Beschreibung – optional > Geben Sie „cdn-yourdomain-subdomain“ ein (Optional, aber hilfreich für die Sichtbarkeit)
  5. CloudFront > Verteilungen > Verteilung erstellen > Loslegen > Verteilungsoptionen > Verteilungstyp > Bestätigen Sie die Auswahl „Einzelne Website oder App“ > Wählen Sie „Weiter“
  6. CloudFront > Verteilungen > Verteilung erstellen > Ursprung angeben > Ursprungstyp > Wählen Sie „Anderes“ Verweisen Sie über eine öffentlich auflösbare URL auf einen beliebigen AWS- oder Nicht-AWS-Ursprung.
  7. CloudFront > Verteilungen > Verteilung erstellen > Ursprung angeben > Ursprung > Benutzerdefinierter Ursprung > Domain eingeben, z. B. subdomain.yourdomain.tld
  8. CloudFront > Verteilungen > Verteilung erstellen > Ursprung angeben > Einstellungen > Caching-Einstellungen > Wählen Sie „Caching-Einstellungen anpassen“
  9. CloudFront > Verteilungen > Verteilung erstellen > Ursprung angeben > Einstellungen > Caching-Einstellungen > Caching-Richtlinie > Wählen Sie im Dropdown-Menü „CachingOptimized“ > Wählen Sie „Weiter“
  10. CloudFront > Verteilungen > Verteilung erstellen > Sicherheit aktivieren > Treffen Sie Ihre Auswahl – für diese Anleitung > Wählen Sie „Sicherheitsmaßnahmen nicht aktivieren“ > Wählen Sie „Weiter“
  11. CloudFront > Verteilungen > Verteilung erstellen > Überprüfen und erstellen > Wählen Sie „Verteilung erstellen“
    Bei Verwendung einer markenbezogenen CDN-URL → Schritt 12
  12. CloudFront > Verteilungen > Verteilungs-ID > Alternative Domänennamen > Wählen Sie „Domain hinzufügen“
  13. CloudFront > Verteilungen > Verteilungs-ID > Alternative Domänennamen > Domain hinzufügen > Domänen konfigurieren > Domänen > Zu bedienende Domänen > Geben Sie die DISCOURSE_CDN_URL ein, z. B. discourse-cdn.yourdomain.tld > Wählen Sie „Weiter“

Unvollständig: Alternative Domänennamen: discourse-cdn.yourdomain.tld

Verteilung #2 erstellen

  Verteilung #2
    DISCOURSE_S3_CDN_URL
      Verteilungsname: s3-yourdomain-subdomain-uploads
      Ursprung: yourdomain-subdomain-uploads
      Verteilungsdomänenname (Cloudfront-URL: AWS-assigned.cloudfront.net
      Alternative Domänennamen: s3-cdn.yourdomain.tld
  1. CloudFront > Verteilungen > Verteilung erstellen
  2. CloudFront > Verteilungen > Verteilung erstellen > Einen Plan auswählen > Wählen Sie „Pay as you go“ > Wählen Sie „Weiter“
  3. CloudFront > Verteilungen > Verteilung erstellen > Loslegen > Verteilungsoptionen > Verteilungsname > Verteilungsname eingeben, z. B. s3-yourdomain-subdomain-uploads
  4. CloudFront > Verteilungen > Verteilung erstellen > Loslegen > Verteilungsoptionen > Beschreibung – optional > Geben Sie „s3-yourdomain-subdomain-uploads“ ein (Optional, aber hilfreich für die Sichtbarkeit)
  5. CloudFront > Verteilungen > Verteilung erstellen > Loslegen > Verteilungsoptionen > Verteilungstyp > Bestätigen Sie die Auswahl „Einzelne Website oder App“ > Wählen Sie „Weiter“
  6. CloudFront > Verteilungen > Verteilung erstellen > Ursprung angeben > Ursprungstyp > Bestätigen Sie die Auswahl „Amazon S3“
  7. CloudFront > Verteilungen > Verteilung erstellen > Ursprung angeben > Ursprung > S3-Ursprung > Wählen Sie „S3 durchsuchen“ > Wählen Sie den Upload-Bucket „yourdomain-subdomain-uploads“ > Wählen Sie „Auswählen“ > Wählen Sie „Weiter“
  8. CloudFront > Verteilungen > Verteilung erstellen > Sicherheit aktivieren > Treffen Sie Ihre Auswahl – für diese Anleitung > Wählen Sie „Sicherheitsmaßnahmen nicht aktivieren“ > Wählen Sie „Weiter“
  9. CloudFront > Verteilungen > Verteilung erstellen > Überprüfen und erstellen > Bestätigen Sie, dass „Überprüfen und erstellen: korrekt ist“ > Wählen Sie „Verteilung erstellen“ → Die neu erstellte Verteilungsinformationsseite sollte sich in CloudFront > Verteilungen > Verteilungs-ID öffnen
  10. CloudFront > Verteilungen > Verteilungs-ID > Ursprünge > Wählen Sie den Ursprung > Wählen Sie „Bearbeiten“
  11. CloudFront > Verteilungen > Verteilungs-ID > Ursprung bearbeiten > Zugriffskontrolle für Ursprung > ! Sie müssen den Zugriff auf CloudFront mit dieser Richtlinie zulassen… > Wählen Sie „Richtlinie kopieren“ > Gehen Sie zu Upload-Bucket erstellen 9. Amazon S3 > Buckets > yourdomain-subdomain-uploads > Berechtigungen > Bucket-Richtlinie

Unvollständig: Alternative Domänennamen: s3-cdn.yourdomain.tld

Discourse-Administrator

Aktuell für Discourse-Version: 2025.12.0-latest

Führen Sie diese Änderungen in der Discourse-Admin-Oberfläche durch

Sicherungseinstellungen /admin/backups/settings

  1. Maximale Anzahl von Sicherungen > Geben Sie die Anzahl der lokal zu speichernden Sicherungen ein
  2. Sicherung mit Uploads > Wählen Sie „Uploads in geplante Sicherungen einbeziehen. Wenn dies deaktiviert ist, wird nur die Datenbank gesichert.“

S3-Einstellungen /admin/site_settings/category/all_results?filter=S3

  1. S3 verwendet CDN-URL für alle Uploads > Wählen Sie „CDN-URL für alle auf S3 hochgeladenen Dateien verwenden, nicht nur für Bilder.“ (Discourse wird standardmäßig nicht ausgewählt geliefert)

Konfiguration bearbeiten (app.yml) nicht markenbezogene URLs

Bearbeiten Sie die app.yml und nehmen Sie die unten aufgeführten Änderungen für markenbezogene oder nicht markenbezogene Cloudfront-URLs vor.

Discourse nicht markenbezogene URLs

Verwenden Sie dies für nicht markenbezogene Cloudfront-Verteilungen. Ihre DISCOURSE_S3_REGION kann abweichen.
DISCOURSE_CDN_URL: https://amazonassigned.cloudfront.net

S3-Speicherkonfiguration (nicht markenbezogen)

  ## S3-Speicherkonfiguration
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION:  us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: key obfuscated
  DISCOURSE_S3_SECRET_ACCESS_KEY: key obfuscated
  DISCOURSE_S3_CDN_URL: https://amazonassigned.cloudfront.net
  DISCOURSE_S3_BUCKET: your-bucket-name-uploads
  DISCOURSE_S3_BACKUP_BUCKET: your-bucket-name-backups
  DISCOURSE_BACKUP_LOCATION: s3

Discourse markenbezogene URLs

DNS-Konfiguration

Wenn Sie bevorzugt URLs auf Basis von yourdomain.com für die CDNs verwenden möchten, müssen Sie einige DNS-Änderungen vornehmen und Ihre CDN-URLs anpassen.

Tipp: Vergessen Sie nicht, discourse-cdn.yourdomain.com und s3-cdn.yourdomain.com als Domänenname in „Alternative Domänennamen“ für die jeweiligen Cloudfront-Verteilungen hinzuzufügen.

DNS-Konfiguration, wenn Sie markenbezogene Cloudfront-Verteilungen auf Domänenebene verwenden möchten.

DISCOURSE_CDN_URL

Bestehender Datensatz:	A   discourseinstance.yourdomain.com   Instanz-IP  Hinweis: Dies ist die IP der vorhandenen Discourse-Installation.
Neuer Datensatz:		A   discourse-cdn-cloudfront.yourdomain.com   Instanz-IP
Neuer Datensatz: 		CNAME discourse-cdn.yourdomain.com  ->   amazonassigned.cloudfront.net

DISCOURSE_S3_CDN_URL

Neuer Datensatz:		CNAME s3-cdn-cloudfront.yourdomain.com  ->   amazonassigned.cloudfront.net
Neuer Datensatz: 	CNAME  s3-cdn.yourdomain.com  ->   s3-cdn-cloudfront.yourdomain.com

Konfiguration bearbeiten (app.yml) markenbezogene URLs

Sobald die DNS-Änderungen abgeschlossen sind, können Sie Ihre app.yml bearbeiten und die unten aufgeführten Änderungen vornehmen.

Ändern Sie DISCOURSE_CDN_URL und/oder DISCOURSE_S3_CDN_URL, wenn Sie Domänen-CNAMEs für die Cloudfront-Verteilung (amazonassigned.cloudfront.net) verwenden.

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

S3-Speicherkonfiguration (markenbezogen)

## S3-Speicherkonfiguration
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION:  us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: key obfuscated
DISCOURSE_S3_SECRET_ACCESS_KEY: key obfuscated
DISCOURSE_S3_CDN_URL: https://s3-cdn.yourdomain.com
DISCOURSE_S3_BUCKET: your-bucket-name-uploads
DISCOURSE_S3_BACKUP_BUCKET: your-bucket-name-backups
DISCOURSE_BACKUP_LOCATION: s3

Zusätzliche Konfigurationsbearbeitungen (app.yml)

Unabhängig davon, welchen Ansatz Sie verwenden, markenbezogene oder Cloudfront-URLs, benötigen Sie den nachfolgenden Abschnitt after_assets_precompile, um sicherzustellen, dass bei nachfolgenden Neubuilds alles aktuell bleibt.

  hooks:
    after_code:
      - exec:
          cd: $home/plugins
          cmd:
            - git clone https://github.com/discourse/docker_manager.git
            -you may have more 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

Bauen Sie Ihre Instanz mit ./launcher rebuild app neu.

Nachdem ./launcher rebuild app erfolgreich abgeschlossen wurde, führen Sie diese Rake-Befehle aus.

./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

Wenn die Rake-Befehle ohne Fehler ausgeführt werden, sind Sie startklar.

Bei einigen Sites schlägt der initiale Neubuild mit einem Fehler in Bezug auf s3:upload_assets fehl. Wenn dies passiert,

überprüfen Sie die „Lesen“-Einstellung im Upload-Bucket. Wenn diese korrekt gesetzt ist,

kommentieren Sie den Abschnitt after_assets_precompile aus oder entfernen Sie ihn:

  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

und führen Sie ./launcher rebuild app erneut aus. Führen Sie dann „rake s3:upload_assets“ und „rake s3:expire_missing_assets“ aus.

Wenn beide Rake-Befehle ohne Fehler ausgeführt werden, fügen Sie den Abschnitt after_assets_precompile erneut hinzu oder nehmen Sie die Kommentierung zurück, bauen Sie erneut neu und führen Sie alle oben aufgeführten Rake-Befehle aus.

Wenn einer der Rake-Befehle einen Fehler meldet oder der Neubuild erneut fehlschlägt, liegt etwas in Ihrer app.yml und/oder AWS S3-Konfigurationen und/oder DNS-Einträgen falsch. Viel Erfolg beim Suchen! :slight_smile:

s3-discourse-policy-your-iam-user.txt (697 Bytes)

1 „Gefällt mir“

Antwort des AWS Supports bezüglich: Bestätigung des Ansatzes in der Bereinigungsregel

Ich habe Ihre vorgeschlagene Lebenszyklusregelkonfiguration überprüft und freue mich, Ihnen bestätigen zu können, dass Ihr Setup gut durchdacht ist und die AWS-Best-Practices für die Verwaltung von Backup-Buckets befolgt.

========== Bewertung der Lebenszyklusregel ==========

Ihre Konfiguration ist ausgezeichnet und deckt die Schlüsselbereiche für die Backup-Bereinigung ab:

  • Bereinigung nicht aktueller Versionen (92 Tage): Dies ist ein sinnvoller Aufbewahrungszeitraum, der Speicherkosten und Wiederherstellungsanforderungen ausgleicht. Die 92-tägige Aufbewahrung bietet ausreichend Zeit für die Backup-Validierung und verhindert gleichzeitig eine unbegrenzte Speicherkumulation.

  • Entfernung abgelaufener Löschmarkierungen: Korrekt konfiguriert, um verwaiste Löschmarkierungen automatisch zu bereinigen, was zur Optimierung der Speicherkosten und der Bucket-Leistung beiträgt.

  • Bereinigung unvollständiger Multipart-Uploads (3 Tage): Die Einstellung von 3 Tagen ist optimal – kurz genug, um Speicherverschwendung durch fehlgeschlagene Uploads zu verhindern, aber lang genug, um legitime große Backup-Vorgänge zu ermöglichen.

  • Anwendungsbereich: Die Anwendung auf „alle Objekte im Bucket“ ist für dedizierte Backup-Buckets geeignet, bei denen der gesamte Inhalt demselben Lebenszyklusmuster folgt.

Antwort des AWS Supports bezüglich: Lebenszykluskonfiguration von Backup-Buckets

Überprüfung der S3-Lebenszykluskonfiguration für Backup-Buckets

Ich habe Ihr vollständiges Lebenszykluskonfigurations-Setup analysiert und kann bestätigen, dass Ihre „Backup-Aufbewahrungs“-Regel gut strukturiert ist und den AWS-Best-Practices für das Backup-Management folgt.

Wichtige Ergebnisse meiner Untersuchung:

  • Ihr Bucket verfügt über zwei sich ergänzende Lebenszyklusregeln, die effektiv zusammenarbeiten
  • Die Regel „Backup-Aufbewahrung“ behandelt aktuelle und nicht aktuelle Versionen ordnungsgemäß mit geeigneten Zeitplänen
  • Die Konfiguration beinhaltet kosteneffiziente Speicherübergänge für nicht aktuelle Versionen
  • Alle Regelkomponenten sind mit den entsprechenden Zeitparametern korrekt konfiguriert
  • Der Bucket ist in us-east-1 mit den entsprechenden Berechtigungen korrekt eingerichtet

Konfigurationsbewertung:

Ihre „Backup-Aufbewahrungs“-Regel verwaltet Ihre Backup-Objekte effektiv während ihres gesamten Lebenszyklus:

  • Übergang nicht aktueller Versionen nach 1 Tag zu Glacier Instant Retrieval (Kostenoptimierung)
  • Ablauf aktueller Versionen nach 7 Tagen (angemessen für regelmäßige Backups)
  • Permanente Löschung nicht aktueller Versionen nach 91 Tagen (guter Aufbewahrungszeitraum)

Diese Regel ergänzt Ihre „Bereinigungs“-Regel, die Folgendes handhabt:

  • Entfernung abgelaufener Löschmarkierungen (verhindert verwaiste Markierungen)
  • Bereinigung unvollständiger Multipart-Uploads nach 3 Tagen (verhindert Speicherverschwendung)
  • Löschung nicht aktueller Versionen nach 92 Tagen (stellt eine vollständige Bereinigung sicher)

Beide Regeln gelten für alle Objekte im Bucket, was für dedizierte Backup-Speicher geeignet ist, bei denen der gesamte Inhalt demselben Lebenszyklusmuster folgt.

Der Ablauf aktueller Versionen nach 7 Tagen scheint für regelmäßige Backup-Szenarien angemessen zu sein, Sie können dies jedoch an Ihre spezifischen Aufbewahrungsanforderungen anpassen (15 oder 30 Tage, falls eine längere Aufbewahrung erforderlich ist).

Ihre Implementierung ist vollständig und folgt den AWS-Best-Practices für das S3-Lebenszyklusmanagement.


Es stellt sich heraus, dass es einen effizienteren Weg gibt.

CloudFront > Distributionen > Verteilung erstellen > Ursprung angeben > Ursprungstyp > „Andere“ auswählen. Verweisen Sie auf einen beliebigen AWS- oder Nicht-AWS-Ursprung über seine öffentlich auflösbare URL.

CloudFront > Distributionen > Verteilung erstellen > Ursprung angeben > Ursprung > Benutzerdefinierter Ursprung > Geben Sie die Domain ein, z. B. subdomain.ihredomain.tld

CloudFront > Distributionen > Verteilung erstellen > Ursprung angeben > Einstellungen > Cache-Einstellungen > „Cache-Einstellungen anpassen“ auswählen

CloudFront > Distributionen > Verteilung erstellen > Ursprung angeben > Einstellungen > Cache-Einstellungen > Cache-Richtlinie > Wählen Sie aus dem Dropdown-Menü „CachingOptimized“ aus > „Weiter“ auswählen

Fahren Sie mit den Sicherheitseinstellungen fort und ignorieren Sie die ursprünglichen Schritte 10 - 14

CloudFront > Distributionen > Verteilung erstellen > Überprüfen und erstellen > „Verteilung erstellen“ auswählen