Как узнать из 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 Есть ли лучший способ, по которому я скучаю?