{"id":7248,"date":"2024-09-18T12:21:55","date_gmt":"2024-09-18T10:21:55","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=7248"},"modified":"2025-01-07T11:17:07","modified_gmt":"2025-01-07T10:17:07","slug":"gestire-i-redirect-di-piu-domini-utilizzando-amazon-s3-e-amazon-cloudfront","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/gestire-i-redirect-di-piu-domini-utilizzando-amazon-s3-e-amazon-cloudfront\/","title":{"rendered":"Gestire i redirect di pi\u00f9 domini utilizzando Amazon S3 e Amazon CloudFront"},"content":{"rendered":"\n
Sappiamo cosa state pensando: ecco l\u2019ennesimo articolo sulla classica combo “Amazon CloudFront + Amazon S3” per l\u2019hosting dei siti web. <\/p>\n\n\n\n
Ormai sembra che ogni appassionato di cloud (e anche il suo gatto) abbia scritto un post a riguardo.<\/p>\n\n\n\n
E se vi dicessimo che questo \u00e8 diverso? <\/p>\n\n\n\n
Se ci fossero dei trucchetti per migliorare questo setup e magari pensionare per sempre quel vecchio server Apache?<\/p>\n\n\n\n
In questo articolo esploreremo come utilizzare Amazon S3 e Amazon CloudFront per impostare dei redirect intelligenti verso il nostro sito principale, il tutto senza dover mantenere un server web. <\/p>\n\n\n\n
Inoltre, vedremo come sfruttare efficientemente i metadati di Amazon S3 per assicurare che gli utenti siano sempre indirizzati alla versione pi\u00f9 aggiornata del nostro contenuto.<\/p>\n\n\n\n
Quindi s\u00ec, \u00e8 un altro post sulla configurazione Amazon CloudFront + Amazon S3, ma con una svolta che merita attenzione.<\/p>\n\n\n\n
Prima di entrare nei dettagli, facciamo un rapido riassunto:<\/p>\n\n\n\n
Mettiamo caso di avere il nostro sito che gira senza intoppi su Amazon S3, con Amazon CloudFront che garantisce performance eccezionali. <\/p>\n\n\n\n
Immaginiamo anche di avere altri domini – ad esempio oldexample.com<\/em>, oldexample1.com<\/em> e altri ancora – che devono essere reindirizzati a example.com.<\/p>\n\n\n\n Che fare con questi vecchi domini accumulati nel tempo?<\/p>\n\n\n\n Con una configurazione tradizionale su una macchina virtuale, potremmo facilmente impostare un redirect nelle impostazioni del virtual host. Ma mantenere una VM solo per i redirect aggiunge complessit\u00e0 e costi inutili.<\/p>\n\n\n\n Certo, alcuni servizi DNS consentono la creazione di record 301-302, ma sappiamo essere una scorciatoia e non tutti possono migrare verso quei servizi.<\/p>\n\n\n\n E impostare un record CNAME? <\/p>\n\n\n\n Purtroppo non fornisce un vero redirect e pu\u00f2 avere impatti negativi sulla SEO.<\/p>\n\n\n\n Poi ci sono CloudFront Functions o Lambda@Edge. Entrambe sono scelte valide: le Functions di CloudFront sono rapide e convenienti, ma hanno un limite di 10 KB \u2014 quindi \u00e8 meglio non riempirle solo con redirect. Lambda@Edge non ha quel limite, ma \u00e8 pi\u00f9 lenta e costosa.<\/p>\n\n\n\n Senza contare che dobbiamo comunque mantenere del codice per entrambe le soluzioni.<\/p>\n\n\n\n Come possiamo quindi implementare questi reindirizzamenti senza complicare l’infrastruttura o incappare in problemi DNS?<\/p>\n\n\n\n Ecco dove le cose diventano interessanti: e se mettessimo un Amazon CloudFront + Amazon S3 davanti al nostro sito Amazon CloudFront + Amazon S3 esistente?<\/p>\n\n\n\n Potrebbe sembrare controintuitivo, ma fidatevi, funziona! Ecco come:<\/p>\n\n\n\n <\/p>\n\n\n\n <\/p>\n\n\n\n Voil\u00e0! Tutto il traffico dai vecchi domini verr\u00e0 ora reindirizzato al nostro nuovo sito, senza la necessit\u00e0 di gestire virtual host o infrastrutture complesse.<\/p>\n\n\n\n La coerenza \u00e8 cruciale quando si tratta di SEO, e mantenere una struttura URL uniforme pu\u00f2 essere complicato. Per assicurarci che i nostri URL siano SEO-friendly, basta utilizzare l’opzione di hosting su Amazon S3 per reindirizzare sempre alla versione “www” del nostro dominio.<\/p>\n\n\n\n \u00c8 una piccola modifica, ma fa una grande differenza!<\/p>\n\n\n\n Adesso approfondiamo come gestire i reindirizzamenti per percorsi e file in modo granulare.<\/p>\n\n\n\n Immaginiamo di dover gestire pi\u00f9 versioni del nostro prodotto, e che ogni versione sia contenuta in una cartella (\/v1.0\/, \/v2.0\/). Quando viene rilasciata una nuova versione, vogliamo che gli utenti vengano reindirizzati alla versione pi\u00f9 recente, senza l\u2019incubo di dover aggiornare costantemente i link o mantenere una lista di redirect.<\/p>\n\n\n\n Ed \u00e8 qui che entra in gioco il campo di metadati Amazon S3 x-amz-website-redirect-location.<\/p>\n\n\n\n Consideriamo questo scenario: abbiamo directory versionate per il nostro prodotto:<\/p>\n\n\n\n Vogliamo che chiunque visiti \/latest\/ venga reindirizzato a \/v3.0\/, e quando rilasciamo \/v4.0\/, vogliamo aggiornare il redirect senza sforzi.<\/p>\n\n\n\n Per ottenere questo, creiamo un oggetto segnaposto su \/latest\/ (pu\u00f2 essere un oggetto vuoto o una cartella). Poi, nella sezione Metadata<\/strong> delle Properties<\/strong> dell’oggetto S3, aggiungiamo una nuova chiave:<\/p>\n\n\n\n Quando rilasceremo una nuova versione (ad esempio \/v4.0\/), baster\u00e0 aggiornare il metadato per puntare a \/v4.0\/. In questo modo, gli utenti che accederanno a \/latest\/ verranno sempre reindirizzati alla versione pi\u00f9 aggiornata del nostro contenuto.<\/p>\n\n\n\n <\/p>\n\n\n <\/p>\n\n\n\n In alcuni casi, potremmo voler far puntare il nostro redirect “latest” verso un servizio esterno o un dominio diverso. <\/p>\n\n\n\n Nessun problema: x-amz-website-redirect-location gestisce facilmente anche i reindirizzamenti esterni. Ad esempio, se l’ultima versione fosse ospitata su un dominio diverso, basterebbe impostare il redirect su https:\/\/newexample.com\/v4.0\/.<\/p>\n\n\n\n Aggiornare manualmente il metadato ogni volta che rilasciamo una nuova versione \u00e8 piuttosto semplice, ma potremmo voler automatizzare il processo per progetti su larga scala. Possiamo usare AWS SDK o AWS CLI per automatizzare l’aggiornamento di x-amz-website-redirect-location ad ogni nuovo rilascio. <\/p>\n\n\n\n Ecco un esempio di come aggiornare il metadato con AWS CLI:<\/p>\n\n\n\n Integrando questo passaggio nella nostra pipeline CI\/CD, possiamo garantire che il redirect alla versione pi\u00f9 recente sia sempre aggiornato come parte del nostro processo di rilascio.<\/p>\n\n\n\n Ecco fatto: hosting web su Amazon S3 con Amazon CloudFront, ma con qualche trucco inaspettato! <\/p>\n\n\n\n Dalla gestione di pi\u00f9 reindirizzamenti di dominio al mantenere i nostri utenti sempre aggiornati con l’ultima versione del prodotto, abbiamo visto come sfruttare la combinazione di Amazon S3 e Amazon CloudFront in modo serverless ed efficiente.<\/p>\n\n\n\n Niente server, niente infrastrutture complesse, solo un uso intelligente delle capacit\u00e0 AWS per mantenere i nostri siti e utenti sempre aggiornati e velocissimi.<\/p>\n\n\n\n I punti chiave:<\/p>\n\n\n\n Quindi, la prossima volta che qualcuno vi dir\u00e0: “Oh, un altro post su Amazon CloudFront e Amazon S3?!” potrete dire: “S\u00ec, ma questo \u00e8 diverso!” \ud83d\ude00 <\/p>\n\n\n\n Avete trovato altre soluzioni a questa necessit\u00e0?<\/p>\n\n\n\n Fatecelo sapere nei commenti! <\/p>\n\n\n\n A presto con un nuovo articolo su Proud2beCloud!<\/p>\n\n\n\nSoluzione<\/h4>\n\n\n\n
\n
<\/figure>\n\n\n\n
Bonus – Uso Consistente del WWW per la SEO<\/h4>\n\n\n\n
Gestione dei Metadati di S3<\/h2>\n\n\n\n
Caso d’Uso<\/h4>\n\n\n\n
\n
Soluzione<\/h4>\n\n\n\n
\n
<\/figure><\/div>\n\n\n
Impostare Reindirizzamenti Esterni<\/h2>\n\n\n\n
Bonus – Automatizzare il Processo<\/h4>\n\n\n\n
aws s3api put-object \\ \n--bucket your-bucket-name \\ \n--key latest\/ \\ \n--website-redirect-location \/v4.0\/\n<\/code><\/pre>\n\n\n\n
Conclusione<\/h2>\n\n\n\n
\n
\n\n\n\nAbout Proud2beCloud<\/h4>\n\n\n\n