2016-02-23 3 views
2

По какой-то причине общедоступное чтение не применяется, когда я загружаю папку в ведро S3. (IE, публика не может получить доступ к файлам)ACL не применяется во время загрузки папки AWS s3 (uploadDirectory)

Файлы загружаются в порядке, но все они настроены как конфиденциальные. Пробовал все, что мог придумать. Похоже, я пропустил что-то основное.

Был с помощью этого руководства: https://blogs.aws.amazon.com/php/post/Tx2W9JAA7RXVOXA/Syncing-Data-with-Amazon-S3

Вот мой код:

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); 

Моей IAM пользовательской политики (также имеет группу списка всех ковши):

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

Любые помощь очень ценится. Cheers

ответ

5

Я боролся с этим некоторое время назад.

Попробуйте изменить вы загружаете заявление к этому ниже

$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 шокирует иногда его документации, как она меняется так много

+1

Спасибо! Это работает. Не знаю, почему их документированный пример не работает. Очень расстраивает. –

Смежные вопросы