Как узнать из aws-php-sdk, что Объект внутри моего сегмента S3 виден всем (установлен как открытый)?

У меня есть ведро S3, в котором есть два объекта:

testPublic.jpg, который является общедоступным (каждый, имеющий URL, может получить к нему доступ)

testNotPublic.jpg, который не установлен как публичный.

Мне нужен метод, который может сказать мне, если рассматриваемый файл виден всем.

С S3 я могу выполнить следующее:

dd($s3->getObject([
    'Bucket' => $bucketName,
    'Key'    => $filekey,

]));

Который возвращает информацию об объекте, но ничего о его разрешениях.

Я также могу выполнить следующее:

dd($s3->getObjectAcl([
        'Bucket' => $bucketName,
        'Key'    => $filekey,

    ]));

Который возвращает информацию о разрешениях, что-то вроде

object(Aws\Result)[1125]
  private 'data' => 
    array (size=4)
      'RequestCharged' => string '' (length=0)
      'Owner' => 
        array (size=1)
          'ID' => string 'ca299b95fREDACTED129f7' (length=64)
      'Grants' => 
        array (size=2)
          0 => 
            array (size=2)
              ...
          1 => 
            array (size=2)
              ...
      '@metadata' => 
        array (size=4)
          'statusCode' => int 200
          'effectiveUri' => string 'https://s3.us-REDACTED-2.amazonaws.com/REDACTED/test.jpg?acl' (length=73)
          'headers' => 
            array (size=6)
              ...
          'transferStats' => 
            array (size=1)
              ...

Который внутри ключа Grants есть что-то вроде

array (size=2)
  0 => 
    array (size=2)
      'Grantee' => 
        array (size=1)
          'ID' => string 'ca2REDACTEDf7' (length=64)
      'Permission' => string 'FULL_CONTROL' (length=12)
  1 => 
    array (size=2)
      'Grantee' => 
        array (size=1)
          'URI' => string 'http://acs.amazonaws.com/groups/global/AllUsers' (length=47)
      'Permission' => string 'READ' (length=4)

Этот последний элемент виден только если файл общедоступен.

До сих пор я не нашел реализованный метод, который позволил бы мне передать его $filekey и вернуть, если этот файл виден всем.

Единственный способ, которым я вижу, что я мог бы сделать это, это реализовать это сам, глядя на результат getObjectAcl() и выполняет поиск элемента, который имеет http://acs.amazonaws.com/groups/global/AllUsers с разрешения READ

There Есть ли лучший способ, по которому я скучаю?

0 ответов

Другие вопросы по тегам