соната медиа — AWS CDN

У меня есть функциональное приложение Symfony с сонатой. До сих пор я использовал файловую систему. Но загруженные файлы становятся все больше и больше, и я готов использовать CDN для хранения этих файлов (чтобы избежать проблем с распределением памяти).

Я пошел туда, но эта конфигурация не работает. У меня есть работающий облачный дистрибутив, но параметр «облачный фронт» не распознается в sonata_media в config.yml.

Затем я попробовал и использовал ведро S3. Конфигурация выглядит нормально, но после отправки формы загрузки в sonata_admin я получаю сообщение об ошибке: «не могу записать ключ»…

У моего пользователя IAM есть полный доступ к s3, а корзина общедоступна.

Вот мой конфиг:

sonata_media:
db_driver: doctrine_orm
class:
    media:              Application\Sonata\MediaBundle\Entity\Media
    gallery:            Application\Sonata\MediaBundle\Entity\Gallery
    gallery_has_media:  Application\Sonata\MediaBundle\Entity\GalleryHasMedia         Application\Sonata\ClassificationBundle\Entity\Category
    default_context: default
    db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
providers:

    #     allowed_mime_types: ['application/pdf', 'application/x-pdf', 'application/rtf', 'text/html', 'text/rtf', 'text/plain', 'video/mp4']

    file:
        service:    sonata.media.provider.file
        resizer:    false
        filesystem: sonata.media.filesystem.local
        cdn:        sonata.media.cdn.cloudront
        generator:  sonata.media.generator.default
        thumbnail:  sonata.media.thumbnail.format
        allowed_extensions: ['pdf', 'txt', 'rtf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pttx', 'odt', 'odg', 'odp', 'ods', 'odc', 'odf', 'odb', 'csv', 'xml', 'mp4']
        allowed_mime_types: ['application/pdf', 'application/x-pdf', 'application/rtf', 'text/html', 'text/rtf', 'text/plain', 'video/mp4', 'video/webm']

    image:
        service:    sonata.media.provider.image
        resizer:    sonata.media.resizer.simple # sonata.media.resizer.square
        filesystem: sonata.media.filesystem.s3
        cdn:        sonata.media.cdn.server
        generator:  sonata.media.generator.default
        thumbnail:  sonata.media.thumbnail.format
        allowed_extensions: ['jpg', 'png', 'jpeg']
        allowed_mime_types: ['image/pjpeg', 'image/jpeg', 'image/png', 'image/x-png']

    youtube:
        service:    sonata.media.provider.youtube
        resizer:    sonata.media.resizer.simple
        filesystem: sonata.media.filesystem.s3
        cdn:        sonata.media.cdn.server
        generator:  sonata.media.generator.default
        thumbnail:  sonata.media.thumbnail.format
        html5: false

    dailymotion:
        service:    sonata.media.provider.dailymotion
        resizer:    sonata.media.resizer.simple
        filesystem: sonata.media.filesystem.s3
        cdn:        sonata.media.cdn.server
        generator:  sonata.media.generator.default
        thumbnail:  sonata.media.thumbnail.format
contexts:
    default:  # the default context is mandatory
        download:
            strategy: sonata.media.security.forbidden_strategy
            mode: http
        providers:
            - sonata.media.provider.dailymotion
            - sonata.media.provider.youtube
            - sonata.media.provider.image
            - sonata.media.provider.file

        formats:
            small: { width: 100 , quality: 70}
            big:   { width: 500 , quality: 70}

cdn:
    server:
        path: %s3_bucket_path%/uploads/media/

    #cloufront: ~
    #     path: http://%cloudfront_domain%.cloudfront.net/uploads/media
    #     distribution_id: %cloudfront_id%
    #     key: %cloudfront_key%
    #     secret: %cloudfront_secret%

filesystem:
    local:
        directory:  %kernel.root_dir%/../web/uploads/media
        create:     false

    s3:
        bucket: %bucket_name"
        accessKey: %access_key%
        secretKey:%secret_key%
        region: 

person Brice Le Roux    schedule 23.05.2016    source источник


Ответы (1)


Правильно было идти "туда" и правильный конфиг должен выглядеть примерно так:

cdn:
    server:
        path: http://%bucketname%.s3.amazonaws.com/blablafolder

filesystem:
    s3:
        bucket: %bucketname%
        accessKey: %aws_access%
        secretKey: %aws_secret%
        create: false
        region: us-east-1
        storage: standard
        acl: public
person Udan    schedule 23.05.2016
comment
Спасибо за ответ. Как получилось, что в разделе sonata_media.cdn в образце кода есть опция облачного доступа? - person Brice Le Roux; 24.05.2016
comment
Еще одна вещь: мой пользователь IAM имеет полные права доступа s3, но я получаю сообщение об ошибке «Не могу записать ключ», когда пытаюсь отправить форму администратора сонаты... - person Brice Le Roux; 24.05.2016
comment
ключ региона правильный? он должен быть таким же, как тот, где создается ведро. - person Udan; 24.05.2016
comment
Cloudfront — это CDN AWS, а S3 — просто облачная файловая система. вы можете использовать оба и иметь файлы облачного кэша из s3, если вам нужно читать из корзины со всего мира, потому что CF работает в разных регионах, а S3 — нет. - person Udan; 24.05.2016
comment
Мое ведро находится во Франкфурте, который, если я хорошо помню, это eu-central-1. - person Brice Le Roux; 24.05.2016