Configurer le compartiment AWS S3 pour le stockage distant
Le service Amazon Simple Storage Service (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 privé. Pour Adobe Commerce sur l’infrastructure cloud, consultez Configuration du stockage distant pour Commerce sur l’infrastructure cloud.
Pour activer le stockage distant avec l'adaptateur AWS S3 :
-
Connectez-vous à votre tableau de bord Amazon S3 et créez un compartiment privé.
-
Configurez [les rôles AWS IAM]. Vous pouvez également générer des clés d’accès et secrètes.
-
Désactivez le stockage de base de données par défaut.
code language-bash bin/magento config:set system/media_storage_configuration/media_database 0
-
Configurez Commerce pour utiliser le compartiment privé. Pour obtenir une liste complète des paramètres consultez la sectionOptions de stockage distant .
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
-
Synchronisez les fichiers multimédias avec le stockage distant.
code language-bash bin/magento remote-storage:sync
Configurer 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 les répertoires pub/media
et similaires sont les mêmes pour S3 que lors de l’utilisation du stockage local.
Opérations sur les fichiers
Il est vivement recommandé d’utiliser des méthodes d’adaptateur de fichiers Commerce dans votre développement de codage ou d’extension, quel que soit le type de stockage de fichiers. Lorsque vous utilisez S3 pour le stockage, n'utilisez pas les opérations d'E/S de fichiers PHP natives, 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 des exemples de code.