为 Symfony-Sylius 应用程序配置 Amazon S3 集成时遇到问题:图像上传到默认存储

问题描述 投票:0回答:1

我一直在尝试设置 Amazon S3 与我的 Symfony-Sylius 应用程序的集成,但我遇到了一个问题:该应用程序继续将图像上传到默认存储而不是 Amazon S3。检查来自图像的请求后,我注意到 URL 指向

127.0.0.1:8000
,而我的 MinIO 服务器正在
127.0.0.1:9000
上运行。我怀疑问题出在 Sylius 身上,但我不完全确定如何继续。

这是我的 services.yaml 文件的相关部分:

parameters:
    amazon.s3.key:     "%env(AWS_S3_KEY)%"
    amazon.s3.secret:  "%env(AWS_S3_SECRET)%"
    amazon.s3.bucket:  "%env(AWS_S3_BUCKET)%"
    amazon.s3.region:  "%env(AWS_S3_REGION)%"
    amazon.s3.endpoint:  "%env(AWS_S3_ENDPOINT)%"
    amazon.s3.version:  "%env(AWS_S3_VERSION)%"

services:   
    acme.amazon_s3:
        class: Aws\S3\S3Client
        factory: [Aws\S3\S3Client, factory]
        arguments:
            -
                credentials: { key: "%amazon.s3.key%", secret: "%amazon.s3.secret%" }
                region: "%amazon.s3.region%"
                version: "%amazon.s3.version%"
                

    acme.imagine.cache.resolver.aws_s3_resolver:
        class: Liip\ImagineBundle\Imagine\Cache\Resolver\AwsS3Resolver
        arguments:
            - "@acme.amazon_s3"
            - "%amazon.s3.bucket%"
        tags:
            - { name: "liip_imagine.cache.resolver", resolver: "aws_s3_resolver" }

这是我的 liip_imagine.yaml 配置:

liip_imagine:
    resolvers:
        aws_s3_resolver:
            aws_s3:
                client_config:
                    credentials:
                        key:    "%amazon.s3.key%"
                        secret: "%amazon.s3.secret%"
                    region: "%amazon.s3.region%"
                    version: "%amazon.s3.version%"
                bucket: "%amazon.s3.bucket%"
                get_options:
                    Scheme: http
                put_options:
                    CacheControl: "max-age=86400"
    filter_sets:
        cache: ~
        runtime:
            quality: 90
        thumb:
            quality: 75
            filters:
                thumbnail: { size: [ 150, 150 ], mode: outbound }
            cache: aws_s3_resolver

我正在使用:

  • PHP 版本 7.4
  • 适用于 PHP 的 AWS 开发工具包版本 3.277
  • Sylius 版本 1.10

我已检查配置并确保我的 Amazon S3 凭证在 .env 文件中正确设置。但是,我仍然无法让应用程序将图像上传到 Amazon S3。

我的配置中是否缺少某些内容,或者我需要采取什么步骤才能使 Sylius 使用 Amazon S3 进行图像存储?任何有关如何排除或解决此问题的指导将不胜感激。谢谢!

php symfony amazon-s3 minio sylius
1个回答
0
投票

根据您提供的详细信息,我将尝试以下一些操作。

  • 仔细检查 .env 文件中设置的 S3 凭证、存储桶名称和端点 URL 是否与 MinIO 服务器上的配置相匹配。那里的不匹配可以解释为什么它尝试上传到 127.0.0.1:8000 而不是您的 MinIO 端点。
  • 在您的 services.yaml 中,尝试删除 amazon.s3.endpoint 参数并指定完整的 MinIO URL(例如“http”) //127.0.0.1:9000') 创建 S3Client 时。端点参数可能会覆盖 URL。
  • 确保 Sylius 媒体包配置为使用 LiipImagine 包进行图像处理。在 config/packages/sylius_media.yaml 中应该有一行类似“driver: liip_imagine.proxy”的行。
  • 清除缓存并尝试再次上传图像以查看是否正在使用更新的 S3 配置。
  • 检查请求上传图像时发送的标头/有效负载,以查看它是否确实尝试发送到您的 MinIO 服务器或仍然发送到 127.0.0.1。
  • 作为测试,尝试更新默认文件系统存储适配器以也指向您的 MinIO 服务器并查看文件是否上传到那里。这样可以确定是否是 Sylius 配置问题。
© www.soinside.com 2019 - 2024. All rights reserved.