Как определить, есть ли в корзине AWS s3 хотя бы один объект publi c? - PullRequest
0 голосов
/ 06 апреля 2020

Давайте предположим, что у меня есть корзина со многими папками и объектами. Этот контейнер имеет Objects can be public в качестве политики доступа. Если я хочу узнать, существует ли хотя бы один объект publi c или перечислить все объекты publi c, как мне это сделать? Есть ли способ сделать это автоматически?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Похоже, вам нужно будет l oop пройти через каждый объект и вызвать GetObjectAcl().

Вы бы предпочли сделать это на языке программирования, но вот пример с AWS CLI:

aws s3api get-object-acl --bucket my-bucket --key foo.txt

{
    "Owner": {
        "DisplayName": "...",
        "ID": "..."
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "...",
                "ID": "...",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}

Я предоставил разрешение READ, используя Make Publi c в консоли управления S3. Обратите внимание, что объекты также могут быть опубликованы c через Политика Bucket , которая не будет отображаться в ACL.

0 голосов
/ 06 апреля 2020

Используйте этот метод из AWS SDK, чтобы сделать это с JavaScript: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjects -property . Существует SDK для всех основных языков, таких как Java et c. Используйте тот, который вы знаете.

 var params = {
  Bucket: "examplebucket", 
  MaxKeys: 2
 };
 s3.listObjectsV2(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     {
   // bucket isnt empty
   if (data.length != 0)
   console.log(data);           // successful response
   }
   /*
   data = {
    Contents: [
       {
      ETag: "\"70ee1738b6b21e2c8a43f3a5ab0eee71\"", 
      Key: "happyface.jpg", 
      LastModified: <Date Representation>, 
      Size: 11, 
      StorageClass: "STANDARD"
     }, 
       {
      ETag: "\"becf17f89c30367a9a44495d62ed521a-1\"", 
      Key: "test.jpg", 
      LastModified: <Date Representation>, 
      Size: 4192256, 
      StorageClass: "STANDARD"
     }
    ], 
    IsTruncated: true, 
    KeyCount: 2, 
    MaxKeys: 2, 
    Name: "examplebucket", 
    NextContinuationToken: "1w41l63U0xa8q7smH50vCxyTQqdxo69O3EmK28Bi5PcROI4wI/EyIJg==", 
    Prefix: ""
   }
   */
 });```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...