Configurazione di Amazon S3 di AWS per l'archiviazione e Cloudfront per le CDN

,

Iniziare

Avrai bisogno di:

  1. Un’istanza Discourse con accesso a app.yml
  2. Un account AWS

Strategia di denominazione

Ci sono molti punti in cui si possono commettere errori. Utilizzare una strategia di convenzione di denominazione che abbia senso per te e, forse, per altri, ti aiuterà nella risoluzione dei problemi, specialmente se stai configurando più istanze di Discourse.

  • Utente IAM: your-iam-user
  • Policy: s3-discourse-policy-your-iam-user
  • Bucket backup: yourdomain-subdomain-backups
  • Bucket caricamenti: yourdomain-subdomain-uploads
  • Distribuzioni CDN: cdn-yourdomain-subdomain e s3-yourdomain-subdomain-uploads

Opzionale: Bucket del processo di configurazione: a-origin-config-bucket

Configurazione AWS

Utilizza le impostazioni predefinite nelle pagine di configurazione AWS, a meno che non ti venga indicato diversamente.

Nomi S3, nomi, nomi

  • Dominio dell’istanza Discourse: subdomain.yourdomain.tld (subdomain.yourdomain.tld incluso www.yourdomain.tld)
  • Utente IAM: yourdomain-subdomain (yourdomain-discourse, yourdomain-forum o Discourse nel dominio radice: yourdomain-tld-www)
  • Policy per l’utente IAM: s3-discourse-policy-yourdomain-subdomain
  • Bucket caricamenti: yourdomain-subdomain-uploads Nota: Non dimenticare di impostare “Tutti (accesso pubblico)” su “Lettura” in Bucket > Autorizzazioni: Lista di controllo accessi (ACL) - Lista di controllo accessi (ACL) - Concessionario.
  • Bucket backup: yourdomain-subdomain-backups
  • Distribuzioni CDN: cdn-yourdomain-subdomain e s3-yourdomain-subdomain-uploads
  • Bucket del processo di configurazione: a-origin-config-bucket

Utenti IAM

  1. Vai su IAM > Utenti > Seleziona “Crea utente
  2. IAM > Utenti > Crea utente > Specifica i dettagli dell’utente > Dettagli utente > Nome utente > Inserisci il nome, ad es. your-iam-user > Seleziona “Avanti”
  3. IAM > Utenti > Crea utente > Imposta le autorizzazioni > Opzioni autorizzazioni > Seleziona “Allega policy direttamente” > Seleziona “Crea policy” > Apre la pagina Crea policy (In alternativa, la policy può essere creata prima in Policy e poi selezionata durante la creazione dell’utente in “Policy di autorizzazione”.)
  4. IAM > Utenti > Crea utente > Imposta le autorizzazioni > Policy di autorizzazione > Filtra per Tipo dal menu a tendina > Seleziona “Gestite dal cliente” > Seleziona la policy appena creata > Seleziona “Avanti” > Seleziona “Crea utente”
  5. IAM > Utenti > your-iam-user > Credenziali di sicurezza > Chiavi di accesso > Seleziona “Crea chiave di accesso”
  6. IAM > Utenti > your-iam-user > Crea chiave di accesso > Migliori pratiche e alternative per le chiavi di accesso > Seleziona “Altro” > Seleziona “Avanti”
  7. IAM > Utenti > your-iam-user > Crea chiave di accesso > Imposta il tag di descrizione > Seleziona “Crea chiave di accesso”
  8. IAM > Utenti > your-iam-user > Crea chiave di accesso > Recupera le chiavi di accesso > Salva in modo sicuro la Chiave di accesso e la Chiave di accesso segreta per l’uso in app.yml di Discourse > Seleziona “Fatto”

Policy

  1. Modifica s3-discourse-policy-your-iam-user.txt con il nome del tuo utente IAM e i nomi dei bucket.
  2. Vai su IAM > Policy > Crea policy
  3. IAM > Policy > Crea policy > Specifica le autorizzazioni > Editor policy > Seleziona “JSON” nell’editor policy > Copia la policy da s3-discourse-policy-your-iam-user.txt e incollala nell’editor JSON sovrascrivendo il JSON esistente > Seleziona “Avanti”
  4. IAM > Policy > Crea policy > Revisiona e crea > Dettagli policy > Nome policy > Inserisci il nome della policy, ad es. s3-discourse-policy-your-iam-user > Seleziona “Avanti”
  5. Vai su IAM Utenti: 4. IAM > Utenti > Crea utente per continuare il processo di creazione dell’utente

Bucket Amazon S3

Crea e configura il bucket backup, il bucket caricamenti e, opzionalmente, il bucket del processo di configurazione, utile ma non obbligatorio.

Crea il bucket backup yourdomain-subdomain-backups

  1. Vai su Amazon S3 Bucket > Seleziona “Crea bucket
  2. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Conferma la selezione “Generale”
  3. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Nome bucket > Inserisci il nome del bucket backup, ad es. yourdomain-subdomain-backups
  4. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Conferma la selezione “ACL disabilitate (consigliato)”
  5. Amazon S3 > Bucket > Crea bucket > Impostazioni di blocco accesso pubblico per questo bucket > Deseleziona “Blocca tutto l’accesso pubblico”, quindi seleziona “Blocca l’accesso pubblico a bucket e oggetti concessi tramite nuove policy di bucket o punto di accesso pubblico” e “Blocca l’accesso pubblico e tra account a bucket e oggetti tramite qualsiasi policy di bucket o punto di accesso pubblico”
  6. Amazon S3 > Bucket > Crea bucket > Impostazioni di blocco accesso pubblico per questo bucket > Disattivare il blocco di tutto l’accesso pubblico potrebbe rendere questo bucket e gli oggetti in esso contenuti pubblici > Seleziona “Dichiaro di essere consapevole che le impostazioni correnti potrebbero rendere questo bucket e gli oggetti in esso contenuti pubblici.”
  7. Amazon S3 > Bucket > Crea bucket > Versionamento bucket > Versionamento bucket > Seleziona “Abilita” Info: Il versionamento bucket è richiesto per le “Regole del ciclo di vita”
  8. Amazon S3 > Bucket > Crea bucket > Seleziona “Crea bucket”

Configurazione regole del ciclo di vita

Regola di conservazione backup

  1. Amazon S3 > Bucket > Seleziona il bucket appena creato, ad es. yourdomain-subdomain-backups
  2. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Seleziona “Crea regola ciclo di vita”
  3. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Nome regola ciclo di vita > Inserisci il nome della regola, ad es. conservazione backup
  4. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Scegli un ambito della regola > Seleziona “Applica a tutti gli oggetti nel bucket”
  5. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Scegli un ambito della regola > Applica a tutti gli oggetti nel bucket > Seleziona “Dichiaro di essere consapevole che questa regola si applicherà a tutti gli oggetti nel bucket.”
  6. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Azioni regola ciclo di vita > Seleziona “Trasferisci versioni non correnti degli oggetti tra classi di archiviazione”, “Scadere le versioni correnti degli oggetti” e “Elimina permanentemente le versioni non correnti degli oggetti”
  7. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Azioni regola ciclo di vita > I trasferimenti sono addebitati per richiesta > Seleziona “Dichiaro di essere consapevole che questa regola del ciclo di vita comporterà un costo di trasferimento per richiesta.”
  8. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Trasferisci versioni non correnti degli oggetti tra classi di archiviazione > Scegli le transizioni delle classi di archiviazione > Seleziona “Glacier Instant Retrieval”
  9. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Trasferisci versioni non correnti degli oggetti tra classi di archiviazione > Giorni dopo che gli oggetti diventano non correnti > Inserisci “1”
  10. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Scadere le versioni correnti degli oggetti > Giorni dopo la creazione dell’oggetto > Inserisci “7” o 15 o 30 o ???
  11. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Elimina permanentemente le versioni non correnti degli oggetti > Giorni dopo che gli oggetti diventano non correnti > Inserisci “91”
  12. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Conferma che “Revisiona le azioni di transizione e scadenza” è corretto > Seleziona “Crea regola”

Regola di pulizia

  1. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Seleziona “Crea regola ciclo di vita”
  2. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Nome regola ciclo di vita > Inserisci il nome della regola: pulizia
  3. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Scegli un ambito della regola > Seleziona “Applica a tutti gli oggetti nel bucket”
  4. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Scegli un ambito della regola > Applica a tutti gli oggetti nel bucket > Seleziona “Dichiaro di essere consapevole che questa regola si applicherà a tutti gli oggetti nel bucket.”
  5. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Azioni regola ciclo di vita > Seleziona “Elimina permanentemente le versioni non correnti degli oggetti” e “Elimina i marcatori di eliminazione degli oggetti scaduti o i caricamenti multipart incompleti”
  6. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Elimina permanentemente le versioni non correnti degli oggetti > Giorni dopo che gli oggetti diventano non correnti > Inserisci “92”
  7. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Elimina permanentemente le versioni non correnti degli oggetti > Elimina i marcatori di eliminazione degli oggetti scaduti o i caricamenti multipart incompleti > Marcatori di eliminazione degli oggetti scaduti > Seleziona “Elimina i marcatori di eliminazione degli oggetti scaduti”
  8. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Elimina permanentemente le versioni non correnti degli oggetti > Elimina i marcatori di eliminazione degli oggetti scaduti o i caricamenti multipart incompleti > Caricamenti multipart incompleti > Seleziona “Elimina i caricamenti multipart incompleti”
  9. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Elimina permanentemente le versioni non correnti degli oggetti > Elimina i marcatori di eliminazione degli oggetti scaduti o i caricamenti multipart incompleti > Caricamenti multipart incompleti > Elimina i caricamenti multipart incompleti > Numero di giorni > Inserisci “3” o ???
  10. Amazon S3 > Bucket > yourdomain-subdomain-backups > Gestione > Configurazione ciclo di vita > Conferma che “Revisiona le azioni di transizione e scadenza” è corretto > Seleziona “Crea regola”

Crea il bucket caricamenti yourdomain-subdomain-uploads

  1. Vai su Amazon S3 > Bucket > Seleziona “Crea bucket
  2. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Conferma la selezione “Generale”
  3. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Nome bucket > Inserisci il nome del bucket caricamenti, ad es. yourdomain-subdomain-uploads
  4. Amazon S3 > Bucket > Crea bucket > Configurazione generale Seleziona “ACL abilitate”
  5. Amazon S3 > Bucket > Crea bucket > Impostazioni di blocco accesso pubblico per questo bucket > Deseleziona “Blocca tutto l’accesso pubblico”, quindi seleziona “Blocca l’accesso pubblico a bucket e oggetti concessi tramite nuove policy di bucket o punto di accesso pubblico” e “Blocca l’accesso pubblico e tra account a bucket e oggetti tramite qualsiasi policy di bucket o punto di accesso pubblico”
  6. Amazon S3 > Bucket > Crea bucket > Impostazioni di blocco accesso pubblico per questo bucket > Disattivare il blocco di tutto l’accesso pubblico potrebbe rendere questo bucket e gli oggetti in esso contenuti pubblici > Seleziona “Dichiaro di essere consapevole che le impostazioni correnti potrebbero rendere questo bucket e gli oggetti in esso contenuti pubblici.”
  7. Amazon S3 > Bucket > Crea bucket > Seleziona “Crea bucket”
  8. Amazon S3 > Bucket > Schermata Bucket > Seleziona il bucket appena creato, ad es. yourdomain-subdomain-uploads
    Torna a eseguire il passaggio 9 dopo aver creato la Distribuzione #2
  9. Amazon S3 > Bucket > yourdomain-subdomain-uploads > Autorizzazioni > Policy del bucket > Seleziona Modifica > Incolla JSON da Crea distribuzione #2 11. CloudFront > Distribuzioni > ID distribuzione > Modifica origine > Controllo accesso all’origine > Seleziona “Salva modifiche”
  10. Amazon S3 > Bucket > yourdomain-subdomain-uploads > Autorizzazioni > Lista di controllo accessi (ACL) > Seleziona Modifica > Tutti (accesso pubblico) > Seleziona “Lettura” > Quando si concede l’accesso al gruppo Tutti o agli utenti autenticati, chiunque nel mondo può accedere agli oggetti in questo bucket. Seleziona “Comprendo gli effetti di queste modifiche sui miei oggetti e bucket.” > Seleziona “Salva modifiche”

Crea un bucket del processo di configurazione a-origin-config-bucket
Crea un bucket da utilizzare durante il processo di configurazione della Distribuzione #1. Nome e configurazione non sono importanti poiché il bucket è utilizzato solo temporaneamente come origine iniziale che verrà eliminata durante il processo di configurazione.
1. Vai su Amazon S3 > Bucket > Seleziona “Crea bucket
2. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Conferma la selezione “Generale”
3. Amazon S3 > Bucket > Crea bucket > Configurazione generale > Nome bucket > Inserisci il nome del bucket caricamenti, ad es. a-origin-config-bucket
4. Scorri le pagine di configurazione e “Crea bucket”

Distribuzioni CloudFront

Crea due distribuzioni AWS S3 CloudFront. Una per servire le risorse del sito web e la seconda per servire le risorse del bucket caricamenti.

Crea distribuzione #1

  Distribuzione #1
    DISCOURSE_CDN_URL
      Nome distribuzione: cdn-yourdomain-subdomain
      Origine: subdomain.yourdomain.tld
      Nome dominio distribuzione (URL Cloudfront): AWS-assigned.cloudfront.net
      Nomi dominio alternativi: discourse-cdn.yourdomain.tld
  1. Vai su CloudFront > Distribuzioni > Seleziona “Crea
  2. CloudFront > Distribuzioni > Crea distribuzione > Scegli un piano > Seleziona “Pagamento in base al consumo” > Seleziona “Avanti”
  3. CloudFront > Distribuzioni > Crea distribuzione > Inizia > Opzioni distribuzione > Nome distribuzione > Inserisci il nome della distribuzione, ad es. cdn-yourdomain-subdomain
  4. CloudFront > Distribuzioni > Crea distribuzione > Inizia > Opzioni distribuzione > Descrizione - opzionale > Inserisci “cdn-yourdomain-subdomain” (Opzionale ma utile per la visibilità)
  5. CloudFront > Distribuzioni > Crea distribuzione > Inizia > Opzioni distribuzione > Tipo distribuzione > Conferma la selezione “Sito web o app singolo” > Seleziona “Avanti”
  6. CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Tipo origine > Seleziona “Altro” Fai riferimento a qualsiasi origine AWS o non AWS tramite il suo URL risolvibile pubblicamente.
  7. CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Origine > Origine personalizzata > Inserisci il dominio, ad es. subdomain.yourdomain.tld
  8. CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Impostazioni > Impostazioni cache > Seleziona “Personalizza impostazioni cache”
  9. CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Impostazioni > Impostazioni cache > Policy cache > Dal menu a tendina seleziona “CachingOptimized” > Seleziona “Avanti”
  10. CloudFront > Distribuzioni > Crea distribuzione > Abilita sicurezza > fai le tue scelte - per questa guida > Seleziona “Non abilitare protezioni di sicurezza” > Seleziona “Avanti”
  11. CloudFront > Distribuzioni > Crea distribuzione > Revisiona e crea > Seleziona “Crea distribuzione”
    Se si utilizza un URL CDN personalizzato → Passaggio 12
  12. CloudFront > Distribuzioni > ID distribuzione > Nomi dominio alternativi > Seleziona “Aggiungi dominio”
  13. CloudFront > Distribuzioni > ID distribuzione > Nomi dominio alternativi > Aggiungi dominio > Configura domini > Domini > Domini da servire > Inserisci il DISCOURSE_CDN_URL, ad es. discourse-cdn.yourdomain.tld > Seleziona “Avanti”

Incompleto: Nomi dominio alternativi: discourse-cdn.yourdomain.tld

Crea distribuzione #2

  Distribuzione #2
    DISCOURSE_S3_CDN_URL
      Nome distribuzione: s3-yourdomain-subdomain-uploads
      Origine: yourdomain-subdomain-uploads
      Nome dominio distribuzione (URL Cloudfront): AWS-assigned.cloudfront.net
      Nomi dominio alternativi: s3-cdn.yourdomain.tld
  1. CloudFront > Distribuzioni > Crea distribuzione
  2. CloudFront > Distribuzioni > Crea distribuzione > Scegli un piano > Seleziona “Pagamento in base al consumo” > Seleziona “Avanti”
  3. CloudFront > Distribuzioni > Crea distribuzione > Inizia > Opzioni distribuzione > Nome distribuzione > Inserisci il nome della distribuzione, ad es. s3-yourdomain-subdomain-uploads
  4. CloudFront > Distribuzioni > Crea distribuzione > Inizia > Opzioni distribuzione > Descrizione - opzionale > Inserisci “s3-yourdomain-subdomain-uploads” (Opzionale ma utile per la visibilità)
  5. CloudFront > Distribuzioni > Crea distribuzione > Inizia > Opzioni distribuzione > Tipo distribuzione > Conferma la selezione “Sito web o app singolo” > Seleziona “Avanti”
  6. CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Tipo origine > Conferma la selezione “Amazon S3”
  7. CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Origine > Origine S3 > Seleziona “Sfoglia S3” > Seleziona il bucket caricamenti “yourdomain-subdomain-uploads” > Seleziona “Scegli” > Seleziona “Avanti”
  8. CloudFront > Distribuzioni > Crea distribuzione > Abilita sicurezza > fai le tue scelte - per questa guida > Seleziona “Non abilitare protezioni di sicurezza” > Seleziona “Avanti”
  9. CloudFront > Distribuzioni > Crea distribuzione > Revisiona e crea > Conferma che “Revisiona e crea” è corretto > Seleziona “Crea distribuzione” → La pagina delle informazioni sulla distribuzione appena creata dovrebbe aprirsi in CloudFront > Distribuzioni > ID distribuzione
  10. CloudFront > Distribuzioni > ID distribuzione > Origini > Seleziona l’origine > Seleziona “Modifica”
  11. CloudFront > Distribuzioni > ID distribuzione > Modifica origine > Controllo accesso all’origine > ! Devi consentire l’accesso a CloudFront utilizzando questa policy… > Seleziona “Copia policy” > Vai a Crea il bucket caricamenti 9. Amazon S3 > Bucket > yourdomain-subdomain-uploads > Autorizzazioni > Policy del bucket

Incompleto: Nomi dominio alternativi: s3-cdn.yourdomain.tld

Amministratore Discourse

Aggiornato alla versione Discourse: 2025.12.0-latest

Apporta queste modifiche nell’interfaccia di amministrazione di Discourse

Impostazioni backup /admin/backups/settings

  1. Backup massimi > Inserisci il numero di backup da mantenere localmente
  2. Backup con caricamenti > Seleziona “Includi caricamenti nei backup programmati. Disabilitando questa opzione verrà eseguito il backup solo del database.”

Impostazioni S3 /admin/site_settings/category/all_results?filter=S3

  1. S3 usa URL CDN per tutti i caricamenti > Seleziona “Usa URL CDN per tutti i file caricati su S3 invece che solo per le immagini.” (Discourse arriva con questa opzione deselezionata)

Modifica Config (app.yml) URL non personalizzati

Modifica app.yml apportando le modifiche di seguito per URL personalizzati o URL Cloudfront non personalizzati.

Discourse URL non personalizzati

Usa questo per distribuzioni Cloudfront non personalizzate. La tua DISCOURSE_S3_REGION potrebbe essere diversa.
DISCOURSE_CDN_URL: https://amazonassigned.cloudfront.net

Configurazione archiviazione S3 (non personalizzata)

  ## Configurazione archiviazione S3
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION:  us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: chiave oscurata
  DISCOURSE_S3_SECRET_ACCESS_KEY: chiave oscurata
  DISCOURSE_S3_CDN_URL: https://amazonassigned.cloudfront.net
  DISCOURSE_S3_BUCKET: nome-tuo-bucket-caricamenti
  DISCOURSE_S3_BACKUP_BUCKET: nome-tuo-bucket-backup
  DISCOURSE_BACKUP_LOCATION: s3

Discourse URL personalizzati

Configurazione DNS

Se preferisci utilizzare URL basati su yourdomain.com per le CDN, devi apportare alcune modifiche DNS e regolare gli URL delle CDN.

Suggerimento: Non dimenticare di aggiungere discourse-cdn.yourdomain.com e s3-cdn.yourdomain.com come nome di dominio in “Nomi dominio alternativi” per le rispettive distribuzioni Cloudfront.

Configurazione DNS se si desidera utilizzare distribuzioni Cloudfront personalizzate con dominio.

DISCOURSE_CDN_URL

Record esistente:	A   discourseinstance.yourdomain.com   ip istanza  Nota: Questo è l'IP esistente dell'installazione Discourse.
Nuovo record:		A   discourse-cdn-cloudfront.yourdomain.com   ip istanza
Nuovo record: 		CNAME discourse-cdn.yourdomain.com  ->   amazonassigned.cloudfront.net

DISCOURSE_S3_CDN_URL

Nuovo record:		CNAME s3-cdn-cloudfront.yourdomain.com  ->   amazonassigned.cloudfront.net
Nuovo record: 	CNAME  s3-cdn.yourdomain.com  ->   s3-cdn-cloudfront.yourdomain.com

Modifica Config (app.yml) URL personalizzati

Una volta completate le modifiche DNS, puoi modificare app.yml apportando le modifiche di seguito.

Modifica DISCOURSE_CDN_URL e/o DISCOURSE_S3_CDN_URL se stai utilizzando CNAME di dominio per la distribuzione Cloudfront (amazonassigned.cloudfront.net).

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

Configurazione archiviazione S3 (personalizzata)

## Configurazione archiviazione S3
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION:  us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: chiave oscurata
DISCOURSE_S3_SECRET_ACCESS_KEY: chiave oscurata
DISCOURSE_S3_CDN_URL: https://s3-cdn.yourdomain.com
DISCOURSE_S3_BUCKET: nome-tuo-bucket-caricamenti
DISCOURSE_S3_BACKUP_BUCKET: nome-tuo-bucket-backup
DISCOURSE_BACKUP_LOCATION: s3

Ulteriori modifiche alla configurazione (app.yml)

Indipendentemente dall’approccio utilizzato, URL personalizzati o URL Cloudfront, avrai bisogno della sezione after_assets_precompile riportata di seguito per garantire che tutto rimanga aggiornato durante le successive ricostruzioni.

  hooks:
    after_code:
      - exec:
          cd: $home/plugins
          cmd:
            - git clone https://github.com/discourse/docker_manager.git
            -potresti avere più plugin
    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

Ricostruisci la tua istanza con ./launcher rebuild app

Dopo che ./launcher rebuild app è completato con successo, esegui questi 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

Se i rake vengono eseguiti senza errori, sei pronto.

Su alcuni siti, la ricostruzione iniziale fallirà con un errore relativo a s3:upload_assets. Se ciò accade,

controlla l’impostazione “lettura” sul bucket caricamenti. Se è impostata correttamente,

commenta o rimuovi la sezione 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

ed esegui nuovamente ./launcher rebuild app. Quindi esegui “rake s3:upload_assets” e “rake s3:expire_missing_assets”.

Se entrambi i rake vengono eseguiti senza errori, riaggiungi o decommenta la sezione after_assets_precompile, ricostruisci di nuovo ed esegui tutti i rake elencati sopra.

Se uno dei due rake restituisce un errore o la ricostruzione fallisce di nuovo, c’è qualcosa di sbagliato nella tua app.yml e/o nelle configurazioni AWS S3 e/o nei record DNS. Buona caccia! :slight_smile:

s3-discourse-policy-your-iam-user.txt|allegato (697 Byte)

1 Mi Piace

Risposta dal Supporto AWS riguardo a: Conferma dell’approccio nella regola di pulizia (Cleanup rule)

Ho esaminato la configurazione della regola del ciclo di vita proposta e sono lieto di confermare che la vostra configurazione è ben progettata e segue le best practice di AWS per la gestione dei bucket di backup.

========== Valutazione della Regola del Ciclo di Vita ==========

La vostra configurazione è eccellente e affronta le aree chiave per la pulizia dei backup:

• Pulizia delle Versioni Non Correnti (92 giorni): Questo è un periodo di conservazione sensato che bilancia i costi di archiviazione con le esigenze di ripristino. La conservazione di 92 giorni offre ampio tempo per la convalida del backup, impedendo al contempo un accumulo indefinito di spazio di archiviazione.

• Rimozione dei Marcatori di Eliminazione Scaduti: Configurata correttamente per pulire automaticamente i marcatori di eliminazione orfani, il che aiuta a ottimizzare i costi di archiviazione e le prestazioni del bucket.

• Pulizia dei Caricamenti Multipart Incompleti (3 giorni): L’impostazione di 3 giorni è ottimale: abbastanza breve da prevenire sprechi di spazio di archiviazione dovuti a caricamenti falliti, ma abbastanza lunga da consentire operazioni di backup di grandi dimensioni legittime.

• Applicazione dell’Ambito: L’applicazione a “tutti gli oggetti nel bucket” è appropriata per i bucket di backup dedicati in cui tutti i contenuti seguono lo stesso modello di ciclo di vita.

Risposta dal Supporto AWS riguardo a: Configurazione del ciclo di vita dei bucket di backup

Revisione della Configurazione del Ciclo di Vita S3 per i Bucket di Backup

Ho analizzato la vostra configurazione completa del ciclo di vita e posso confermare che la vostra regola di “conservazione dei backup” è ben strutturata e segue le best practice di AWS per la gestione dei backup.

Risultati chiave della mia indagine:

  • Il vostro bucket ha due regole di ciclo di vita complementari che lavorano insieme in modo efficace
  • La regola di “conservazione dei backup” gestisce correttamente le versioni correnti e non correnti con tempistiche appropriate
  • La configurazione include transizioni di archiviazione convenienti per le versioni non correnti
  • Tutti i componenti della regola sono configurati correttamente con parametri temporali appropriati
  • Il bucket è configurato correttamente in us-east-1 con le autorizzazioni appropriate

Valutazione della Configurazione:

La vostra regola di “conservazione dei backup” gestisce efficacemente i vostri oggetti di backup durante il loro ciclo di vita:

  • Transisce le versioni non correnti a Glacier Instant Retrieval dopo 1 giorno (ottimizzazione dei costi)
  • Scade le versioni correnti dopo 7 giorni (appropriato per backup regolari)
  • Elimina permanentemente le versioni non correnti dopo 91 giorni (buon periodo di conservazione)

Questa regola completa la vostra regola di “pulizia” che gestisce:

  • Rimozione dei marcatori di eliminazione scaduti (previene i marcatori orfani)
  • Pulizia dei caricamenti multipart incompleti dopo 3 giorni (previene sprechi di spazio di archiviazione)
  • Eliminazione delle versioni non correnti dopo 92 giorni (garantisce una pulizia completa)

Entrambe le regole si applicano a tutti gli oggetti nel bucket, il che è appropriato per l’archiviazione di backup dedicata in cui tutti i contenuti seguono lo stesso modello di ciclo di vita.

La scadenza di 7 giorni per le versioni correnti sembra appropriata per scenari di backup regolari, ma potete modificarla in base alle vostre specifiche esigenze di conservazione (15 o 30 giorni se è necessaria una conservazione più lunga).

La vostra implementazione è completa e segue le best practice di AWS per la gestione del ciclo di vita S3.


Si scopre che c’è un modo più efficiente.

CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Tipo di origine > Seleziona “Altro” Fai riferimento a qualsiasi origine AWS o non AWS tramite il suo URL pubblicamente risolvibile.

CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Origine > Origine personalizzata > Inserisci dominio es. sottodominio.tuodominio.tld

CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Impostazioni > Impostazioni cache > Seleziona “Personalizza impostazioni cache”

CloudFront > Distribuzioni > Crea distribuzione > Specifica origine > Impostazioni > Impostazioni cache > Policy di cache > Dal menu a discesa seleziona “CachingOptimized” > Seleziona “Avanti”

Continua con le impostazioni di sicurezza, ignora i passaggi originali da 10 a 14

CloudFront > Distribuzioni > Crea distribuzione > Rivedi e crea > Seleziona “Crea distribuzione”