duanqianhuan3994 2016-02-23 06:51
浏览 78
已采纳

在AWS s3文件夹上载期间ACL未应用(uploadDirectory)

For some reason public-read is not being applied when I'm uploading a folder to an S3 bucket. (IE, public can not access the files)

The files upload fine, but they are all set to private. Tried everything I can think of. Feels like I'm missing something basic.

Was using this guide: https://blogs.aws.amazon.com/php/post/Tx2W9JAA7RXVOXA/Syncing-Data-with-Amazon-S3

Here is my code:

    require '../vendor/autoload.php';

    use Aws\S3\S3Client;

    $client = S3Client::factory(array(  
      'version' => '2006-03-01',
      'region'  => 'ap-southeast-2',
      'credentials' => array(
        'key' => 'MYKEY',
        'secret'  => 'MYSECRET',        
      )
    ));    

    $dir = 'assets';
    $bucket = 'gittestbucket';
    $keyPrefix = 'assets';      

    $options = array(
        'params'      => array('ACL' => 'public-read'),
        'concurrency' => 20,
        'debug'       => true
    );

    $UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, $options);

    var_dump($UploadAWS);

My IAM user policy (also has a group of list all buckets):

    {
        "Statement": [
            {
                "Action": "s3:*",
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:s3:::gittestbucket",
                    "arn:aws:s3:::gittestbucket/*",              
                ]
            }
        ]
    }

Any help much appreciated. Cheers

  • 写回答

1条回答 默认 最新

  • dstnlhhv791576 2016-02-23 22:38
    关注

    I struggled with this a while back.

    Try changing you upload statement to this one bellow

     $UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, array(
            'concurrency' => 20,
            'debug'       => true,
            'before' => function (\Aws\Command $command) {
            $command['ACL'] = strpos($command['Key'], 'CONFIDENTIAL') === false
                ? 'public-read'
                : 'private';
            }
        ));
    

    AWS is shocking sometimes for its documentation as it changes so much

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)