Configuration du compartiment AWS S3 pour le stockage à distance

Le service de stockage simple Amazon (Amazon S3) est un service de stockage d’objets qui offre une évolutivité, une disponibilité des données, une sécurité et des performances de pointe. Le service AWS S3 utilise des compartiments, ou conteneurs, pour le stockage des données. Cette configuration nécessite la création d'un compartiment private. Pour Adobe Commerce sur l’infrastructure cloud, voir Configuration de l’espace de stockage distant pour Commerce sur l’infrastructure cloud.

WARNING
L'Adobe décourage fortement l'utilisation de compartiments publics car elle présente un risque grave pour la sécurité.

Pour activer le stockage à distance avec l’adaptateur AWS S3 :

  1. Connectez-vous à votre tableau de bord Amazon S3 et créez un compartiment private.

  2. Configurez les rôles AWS IAM. Vous pouvez également générer des clés d’accès et secrètes.

  3. Désactivez le stockage de la base par défaut.

    code language-bash
    bin/magento config:set system/media_storage_configuration/media_database 0
    
  4. Configurez Commerce pour utiliser le compartiment privé. Voir Options de stockage à distance pour obtenir la liste complète des paramètres.

    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. Synchronisez les fichiers multimédias avec l’enregistrement à distance.

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

Configuration de Nginx

Nginx nécessite une configuration supplémentaire pour effectuer l'authentification avec la directive proxy_pass. Ajoutez les informations de proxy suivantes au fichier 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";
}

Authentification

Si vous utilisez des clés d’accès et secrètes au lieu des rôles AWS IAM, vous devez inclure le module ngx_aws_auth Nginx.

Autorisations

L’intégration S3 repose sur la possibilité de générer et de stocker des images mises en cache sur le système de fichiers local. Par conséquent, les autorisations de dossier pour pub/media et les répertoires similaires sont identiques pour S3 à l’utilisation du stockage local.

Opérations de fichier

Il est vivement recommandé d’utiliser les méthodes d’adaptateur de fichier Commerce dans votre développement de codage ou d’extension, quel que soit le type de stockage de fichier. Lors de l’utilisation de S3 pour le stockage, n’utilisez pas d’opérations d’E/S de fichier PHP natif, telles que copy, rename ou file_put_contents, car les fichiers S3 ne se trouvent pas dans le système de fichiers. Voir DriverInterface.php pour consulter des exemples de code.

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