2015-03-24 2 views
2

J'ai installé la version dev-master de Sonata Media (+ toutes les exigences) et cela fonctionne correctement. Maintenant, j'essaie d'utiliser le service de fichiers amazon s3 pour télécharger mes images et mes fichiers. (Je travaille avec WAMP sur localhost)Sonata + Amazon S3 - Impossible d'écrire le contenu clé

C'est ma config:

#... 
sonata_media: 
    default_context: default 
    db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr it is mandatory to choose one here 
    default_context: default # you need to set a context 
    contexts: 
     default: # the default context is mandatory 
      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: http://mybucketname.s3-website-us-east-1.amazonaws.com 
    providers: 
     image: 
      filesystem: sonata.media.filesystem.s3 
    filesystem: 
     s3: 
      bucket: #MyBundlename 
      accessKey: #MyAccessKey 
      secretKey: #Mysecret key 
      region: s3-website-us-east-1.amazonaws.com 
      storage: standard 
      acl: publiC#I tried private too 

Donc, pour mes clés, j'ai essayé avec les clés des propriétaires et celui de l'utilisateur que j'ai créé avec la liste + téléchargement/Supprimer les autorisations

c'est aussi ma politique Bucket

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mybcucketname/*" 
     } 
    ] 
} 

Et cela l'erreur que je reçois lorsque je tente de télécharger une image avec paquet média sonate:

Could not write the "default/0001/01/634f09dfda5705a8310c084a92f686ec33449960.png" key content. 

Aussi ceci est mon fichier composer.json:

"php": ">=5.3.3", 
    "symfony/symfony": "2.6.*", 
    "doctrine/orm": "~2.2,>=2.2.3,<2.5", 
    "doctrine/dbal": "<2.5", 
    "doctrine/doctrine-bundle": "~1.2", 
    "twig/extensions": "~1.0", 
    "symfony/assetic-bundle": "~2.3", 
    "symfony/swiftmailer-bundle": "~2.3", 
    "symfony/monolog-bundle": "~2.4", 
    "sensio/distribution-bundle": "~3.0,>=3.0.12", 
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2", 
    "incenteev/composer-parameter-handler": "~2.0", 
    "sonata-project/core-bundle": "2.3.*@dev", 
    "sonata-project/intl-bundle": "2.2.*@dev", 
    "sonata-project/admin-bundle": "2.4.*@dev", 
    "sonata-project/doctrine-orm-admin-bundle": "2.4.*@dev", 
    "sonata-project/datagrid-bundle": "2.2.*@dev", 
    "sonata-project/classification-bundle": "dev-master", 
    "jms/serializer-bundle": "~0.13", 
    "sonata-project/easy-extends-bundle": "2.1.*@dev", 
    "sonata-project/media-bundle": "2.4.*@dev", 
    "aws/aws-sdk-php": "2.*" 

Ce sont les journaux s3 amazone

" 403 AccessDenied 231 149653 16 - " 

(le reste du journal est correct, le nom du godet et de l'utilisateur) Nous vous remercions de votre aide. Yohan.

+0

Ok, je ne sais pas si ce que j'ai fait est la bonne façon et est sécurisé mais: – NOaMTL

Répondre

0

Je ne sais pas si ce que je faisais est la meilleure solution et est sécurisée, mais: - J'ai modifié la politique du seau:

ancien:

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "AddPerm", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::mybucket/*" 
    } 
] 

}

Nouveau un:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mybucket/*" 
     }, 
     { 
      "Sid": "AddCannedAcl", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:iam::XXXXXXXXXXXX:user/myuser" 
       ] 
      }, 
      "Action": [ 
       "s3:PutObject", 
       "s3:PutObjectAcl" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::mybucket/*" 
      ], 
      "Condition": { 
       "StringEquals": { 
        "s3:x-amz-acl": [ 
         "public-read" 
        ] 
       } 
      } 
     } 
    ] 
} 

Où arn: aws: iam :: XXXXXXXXXXXX: utilisateur/myuser est un utilisateur que vous créer avec la liste télécharger/supprimer les autorisations.

+0

cette réponse fonctionne? Parce que je phase même problème mais dans mon cas le paquet de médias de sonata montre l'image téléchargée mais donnée l'URL d'image par le support de sonata montrant l'erreur: - "La clé spécifiée n'existe pas." – Sid