Configuración del compartimento de AWS S3 para almacenamiento remoto

Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes en el sector. El servicio AWS S3 utiliza contenedores para el almacenamiento de datos. Esta configuración requiere que cree un contenedor de private. Para Adobe Commerce sobre la infraestructura en la nube, consulte Configuración del almacenamiento remoto para Commerce en la infraestructura en la nube.

WARNING
El Adobe desalienta enormemente el uso de contenedores públicos porque plantea un grave riesgo para la seguridad.

Para habilitar el almacenamiento remoto con el adaptador AWS S3:

  1. Inicie sesión en el tablero de Amazon S3 y cree un contenedor de private.

  2. Configure [funciones de AWS IAM]. También puede generar claves de acceso y de secreto.

  3. Deshabilite el almacenamiento predeterminado de la base de datos.

    code language-bash
    bin/magento config:set system/media_storage_configuration/media_database 0
    
  4. Configure Commerce para que utilice el contenedor privado. Consulte Opciones de almacenamiento remoto para obtener una lista completa de parámetros.

    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. Sincronizar archivos multimedia con almacenamiento remoto.

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

Configuración De Nginx

Nginx requiere una configuración adicional para realizar la autenticación con la directiva proxy_pass. Agregue la siguiente información de proxy al archivo 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";
}

Autenticación

Si usa claves secretas y de acceso en lugar de los roles de AWS IAM, debe incluir el módulo ngx_aws_auth Nginx.

Permisos

La integración de S3 depende de la capacidad de generar y almacenar imágenes en caché en el sistema de archivos local. Por lo tanto, los permisos de carpeta para pub/media y directorios similares son los mismos para S3 que cuando se utiliza el almacenamiento local.

Operaciones de archivo

Se recomienda encarecidamente que utilice Commerce métodos de adaptador de archivos en su programación o desarrollo de extensiones, independientemente del tipo de almacenamiento de archivos. Cuando utilice S3 para almacenamiento, no utilice operaciones de E/S de archivos PHP nativos, como copy, rename o file_put_contents, ya que los archivos S3 no se encuentran dentro del sistema de archivos. Consulte DriverInterface.php para ver ejemplos de código.

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