小编jin*_*hun的帖子

当我的s3的x-amz-server-side-encryption在Laravel 5.1上为AES256时,如何使用Storage :: disk('s3')-> put()?

RT。

这是我的s3的文件系统配置:

's3' => [
        'driver' => 's3',
        'key'    => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_REGION'),
        'bucket' => env('AWS_BUCKET'),
    ],
Run Code Online (Sandbox Code Playgroud)

这是我的composer.json:

"require": {
        "laravel/framework": "5.1.*",
        "barryvdh/laravel-ide-helper": "~2.0",
        "predis/predis": "~1.0",
        "guzzlehttp/guzzle": "~5.0",
        "league/flysystem-aws-s3-v3": "~1.0",
        "raven/raven": "0.12.*"
    },
Run Code Online (Sandbox Code Playgroud)

这是我的s3的存储桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::*****bucket_name*****/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "AES256"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

是的,我用作"s3:x-amz-server-side-encryption": "AES256"PutObject的条件,但我想使用像这样的代码:

Storage::disk('s3')->put('test.log','123');
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我将得到如下响应:

[Aws\S3\Exception\S3Exception]                                                                                                                                    
Error executing "HeadObject" on "https://s3-ap-northeast-1.amazonaws.com/****bucket_name****/test.log"; …
Run Code Online (Sandbox Code Playgroud)

storage amazon-s3 amazon-web-services laravel

5
推荐指数
2
解决办法
2549
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

laravel ×1

storage ×1