Configurare il bucket AWS S3 per l’archiviazione remota

Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti che offre scalabilità, disponibilità dei dati, sicurezza e prestazioni leader del settore. Il servizio AWS S3 utilizza contenitori o bucket per l’archiviazione dei dati. Questa configurazione richiede la creazione di un bucket private. Per Adobe Commerce sull'infrastruttura cloud, vedere Configurare l'archiviazione remota per Commerce sull'infrastruttura cloud.

WARNING
L'Adobe scoraggia fortemente l'uso di secchi pubblici perché comporta gravi rischi per la sicurezza.

Per abilitare l'archiviazione remota con la scheda AWS S3:

  1. Accedi al tuo dashboard di Amazon S3 e crea un bucket private.

  2. Configura [i ruoli AWS IAM]. In alternativa, genera l’accesso e le chiavi segrete.

  3. Disattiva l'archiviazione del database predefinita.

    code language-bash
    bin/magento config:set system/media_storage_configuration/media_database 0
    
  4. Configura Commerce per l’utilizzo del bucket privato. Consulta Opzioni di archiviazione remota per un elenco completo dei parametri.

    code language-bash
    bin/magento setup:config:set --remote-storage-driver="aws-s3" --remote-storage-bucket="<bucket-name>" --remote-storage-region="<region-name>" --remote-storage-prefix="<optional-prefix>" --remote-storage-key=<optional-access-key> --remote-storage-secret=<optional-secret-key> -n
    
  5. Sincronizzare i file multimediali con l'archiviazione remota.

    code language-bash
    bin/magento remote-storage:sync
    

Configurare Nginx

Nginx richiede una configurazione aggiuntiva per eseguire l'autenticazione con la direttiva proxy_pass. Aggiungere le seguenti informazioni proxy al file nginx.conf:

nginx.conf

location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
    # Proxying to AWS S3 storage.
    resolver 8.8.8.8;
    set $bucket "<s3-bucket-name>";
    proxy_pass https://s3.amazonaws.com/$bucket$uri;
    proxy_pass_request_body off;
    proxy_pass_request_headers off;
    proxy_intercept_errors on;
    proxy_hide_header "x-amz-id-2";
    proxy_hide_header "x-amz-request-id";
    proxy_hide_header "x-amz-storage-class";
    proxy_hide_header "Set-Cookie";
    proxy_ignore_headers "Set-Cookie";
}

Autenticazione

Se utilizzi le chiavi di accesso e segrete invece di [ruoli AWS IAM], devi includere il modulo Nginx ngx_aws_auth.

Autorizzazioni

L’integrazione di S3 si basa sulla capacità di generare e archiviare immagini memorizzate nella cache sul file system locale. Pertanto, le autorizzazioni per le cartelle di pub/media e directory simili sono le stesse per S3 quando si utilizza l'archiviazione locale.

Operazioni per file

Si consiglia di utilizzare i metodi dell'adattatore di file Commerce nello sviluppo della codifica o dell'estensione, indipendentemente dal tipo di archiviazione dei file. Quando si utilizza S3 per l'archiviazione, non utilizzare operazioni I/O native del file PHP, ad esempio copy, rename o file_put_contents, perché i file S3 non si trovano nel file system. Per esempi di codice, vedere DriverInterface.php.

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c