Pubblicato il 13/04/2022 da alnao nella categoria AWS

La modalità più usata per l’esposizione di siti web statici o contenuti di Bucket S3 è l’uso del servizio CloudFront, questo appunto permette l’esposizione in internet in sicurezza grazie alla definizione di regole di rete chiamate “Security group”. Se si possiede un bucket bisogna rendere il contenuti di tipo pubblico, infatti bisogna disattivare l’opzione “Blocco dell’accesso pubblico” disponibile nel tab Autorizzazioni del bucket.

All’interno della console del servizio di CloudFront bisogna creare una nuova distribuzione, nella procedure guidata bisogna indicare il bucket S3, nella sezione di S3 Bucket Access bisogna ricordarsi di usare il OIA (origin access identity) e bisogna ricordarsi di premere il bottone “Create new OAI” e bisogna cliccare sulla opzione “Yes, update the bucket policy”. Inoltre, per gli utenti meno esperti, non conviene attivare l’opzione di “Enable Origin Shield”.

Successivamente si possono definire alcune proprietà importantissime come il protocollo (HTTP o HTTPS), i metodi abilitati (GET e POST per esempio), le regole del WAF( web application firewall) e si può caricare la struttura del certificato SSL per HTTPS. Alla fine la voce “Default root object” risulta opzionale ma in realtà è obbligatoria se si vuole esporre un sito web statico. Alla fine si può procedere con la creazione e nella lista è possibile monitorare lo stato del rilascio ce necessita qualche minuto per andare in rete.

Una volta creata la distribuzione si può accedere al dettaglio della distribuzione stessa per vedere l’url pubblico che dovrebbe essere del tipo

XXXXXXXXXXXX.cloudfront.net

Se accedendo a questo sito si ottiene un errore di tipo “Access denied”, ci sono due possibilità: bisogna impostare il “default root object” oppure non funziona la regola di OIA sul bucket, cioè significa che CloudFront non può accedere al bucket S3 e bisogna controllare le autorizzazioni di accesso: all’interno delle proprietà del bucket dovrebbe comparire la regola del tipo

{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::nome-bucket/*"
}