0

Ich habe eine funktionelle Symfony-Anwendung mit Sonatenmedien. Bis jetzt benutzte ich das Dateisystem. Aber die hochgeladenen Dateien werden immer größer und ich bin bereit, ein CDN zu verwenden, um diese Dateien zu speichern (um Speicherzuweisungsprobleme zu vermeiden).sonata media - AWS CDN

Ich ging there, aber diese Konfiguration schlägt fehl. Ich habe eine funktionierende Cloudfront-Distribution, aber die Option "cloudfront" wird unter sonata_media in config.yml nicht erkannt.

Dann habe ich versucht und einen S3-Eimer verwendet. Die Konfiguration sieht OK aus, aber nachdem ich mein Upload-Formular in Sonata_Admin abgeschickt habe, erhalte ich die Fehlermeldung: "kann den Schlüssel nicht schreiben" ...

Mein IAM-Benutzer hat vollen S3-Zugriff und der Bucket ist öffentlich.

kommt meine config:

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: 

Antwort

0

es richtig war, zu gehen "da" und die richtige Konfiguration sollte wie folgt aussehen:

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 
+0

Danke für die Antwort. Wie kommt es, dass es unter "sonata_media.cdn" eine "cloudfront" -Option im dortigen Beispielcode gibt? –

+0

Eine andere Sache: Mein IAM-Benutzer hat volle s3 Zugriffsrechte, aber ich bekomme einen "Kann nicht Schlüssel schreiben" -Fehler, wenn ich versuche, mein Sonata-Admin-Formular zu senden ... –

+0

ist der Regionsschlüssel korrekt? Es muss identisch mit dem sein, in dem der Bucket erstellt wird. – Udan