Circa 10 minuti

Come caricare file su Amazon S3 e condividere link pubblici

Amazon S3 è lo storage a oggetti originale e funziona con il preset Amazon S3 di Aktar. L’unica parte che richiede attenzione è l’accesso pubblico: S3 lo blocca per impostazione predefinita, quindi devi aggiungere una bucket policy per la lettura pubblica oppure mettere CloudFront davanti al bucket.

Cosa ti serve

  • Un account AWS
  • Il permesso di creare bucket S3 e utenti IAM
  • Aktar installata sul tuo Mac

Passo passo

  1. 1

    Crea un bucket

    Nella console S3, clicca Create bucket, scegli un nome univoco a livello globale e la regione più vicina a te, per esempio eu-central-1. Puoi lasciare la proprietà degli oggetti predefinita "Bucket owner enforced": Aktar non usa le ACL.

  2. 2

    Consenti la lettura pubblica

    Opzione A, bucket policy: nella scheda Permissions del bucket, disattiva le impostazioni "Block public access" che bloccano le bucket policy pubbliche, poi aggiungi questa bucket policy (sostituisci YOUR-BUCKET):

    {
      "Version": "2012-10-17",
      "Statement": [{
        "Sid": "PublicRead",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::YOUR-BUCKET/*"
      }]
    }

    Opzione B, CloudFront: lascia il bucket privato e crea una distribuzione CloudFront con il bucket come origine (usando Origin Access Control). Così ottieni HTTPS su un dominio personalizzato e la cache.

  3. 3

    Crea un utente IAM per Aktar

    In IAM, crea un utente e associagli una policy che consenta solo quello che serve ad Aktar su quel bucket:

    {
      "Version": "2012-10-17",
      "Statement": [
        { "Effect": "Allow", "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::YOUR-BUCKET" },
        { "Effect": "Allow",
          "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"],
          "Resource": "arn:aws:s3:::YOUR-BUCKET/*" }
      ]
    }

    Poi crea una access key per l’utente e copia l’Access Key ID e la Secret Access Key.

  4. 4

    Aggiungi la destinazione in Aktar

    In Impostazioni → Destinazioni → Aggiungi destinazione, scegli Amazon S3 e inserisci i valori qui sotto. L’endpoint e la regione devono corrispondere alla regione del bucket.

  5. 5

    Verifica e salva

    Clicca Verifica connessione per confermare che il bucket sia scrivibile e che l’URL pubblico distribuisca i file, poi Salva.

Impostazioni in Aktar

Inserisci questi valori in Impostazioni → Destinazioni → Aggiungi destinazione. I nomi dei campi corrispondono a quelli dell’app.

CampoValore di esempio
ProviderAmazon S3
Endpointhttps://s3.eu-central-1.amazonaws.comUsa la regione del tuo bucket.
Regioneeu-central-1
ID chiave di accessoAKIA…Dall’utente IAM.
Chiave di accesso segreta••••••••
Bucketyour-bucket
URL di base pubblicoyour-bucket.s3.eu-central-1.amazonaws.comOppure il tuo dominio CloudFront.

Suggerimenti

  • Se condividi link pubblicamente, preferisci CloudFront con un dominio personalizzato: ottieni la cache e puoi lasciare privato il bucket stesso.
  • Limita la policy IAM a un solo bucket. Ad Aktar non servono mai permessi sull’intero account.
  • Scegli una regione vicina a te per caricamenti più veloci, e vicina al tuo pubblico se non usi una CDN.
  • Per i caricamenti che si eliminano da soli, l’utente IAM ha bisogno anche di s3:GetLifecycleConfiguration e s3:PutLifecycleConfiguration sul bucket, oppure aggiungi tu le regole del ciclo di vita. Vedi caricamenti con scadenza.

Risoluzione dei problemi

Verifica connessione segnala un errore sulla regione o un redirect

L’endpoint e la regione devono corrispondere alla regione in cui è stato creato il bucket, per esempio https://s3.eu-central-1.amazonaws.com con eu-central-1.

I caricamenti non riescono con Access Denied

L’utente IAM ha bisogno di s3:PutObject su YOUR-BUCKET/* e di s3:ListBucket sul bucket stesso.

I link restituiscono 403

Manca la bucket policy, o è ancora bloccata da "Block public access", oppure CloudFront non riesce a leggere il bucket. Vedi errori Access Denied.

Sei ancora bloccato?Consulta le FAQ o chiedi su GitHub.