2

Sonata Media の dev-master バージョン (+ すべての要件) をインストールしましたが、正常に動作しています。現在、Amazon s3 ファイルサービスを使用して画像とファイルをアップロードしようとしています。(私はローカルホストでワンプを使用しています)

これは私の設定です:

#...
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

したがって、私のキーについては、リスト+アップロード/削除権限で作成した所有者のキーとユーザーのキーを試しました

これは私のバケットポリシーでもあります

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

そして、これは、ソナタメディアバンドルで画像をアップロードしようとすると発生するエラーです:

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

また、これは私の 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.*"

これはAmazon s3のログです

" 403 AccessDenied 231 149653 16 - "

(ログの残りの部分、バケット名とユーザーは正しいです) ご協力ありがとうございます。ヨハン。

4

2 に答える 2

0

私がしたことが最善の解決策であり、安全であるかどうかはわかりませんが、-バケットポリシーを編集しました:

古いもの :

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

}

新しいもの:

{
    "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"
                    ]
                }
            }
        }
    ]
}

arn:aws:iam::XXXXXXXXXXXX:user/myuser は、リストのアップロード/削除権限で作成したユーザーです。

于 2015-03-24T17:16:08.087 に答える