Как автоматизировать разрешения для объектов корзины AWS s3 - PullRequest
0 голосов
/ 29 июня 2018

У меня есть корзина s3, в которую несколько учетных записей помещают объекты. Мне бы хотелось, чтобы учетная запись, которой принадлежит корзина, также владела этими файлами.

Скрипт использует boto3 для именования и размещения объекта, поэтому я бы установил разрешения для этого скрипта?
Или есть политика s3, которая может принудительно владеть новыми файлами?
Я предпочел бы политику ведра, но я сомневаюсь, что это возможно. Имя файла

"account # and date.json"

account_id = (boto3.client('sts').get_caller_identity()['Account'])
s3.Object('S3bucketname', account_id + "_" + date_fmt + ".json").put(Body=json.dumps(iplist))

edit: я должен добавить, процесс, который пытается прочитать из этого сегмента, у которого есть объекты, имеет связанную с ним роль, поэтому я предполагаю, что мой принципал будет

ARN: AWS: РМКО :: ACCOUNT_ID_of_bucket: Роль / RoleName

Ответы [ 2 ]

0 голосов
/ 03 июля 2018
 boto3.resource('s3').ObjectAcl('S3BUCKETNAME', account_id + "_" + date_fmt + ".json").put(ACL='bucket-owner-full-control')

Вышеуказанное предоставит владельцу корзины полный контроль над любыми объектами, созданными и помещенными в корзину с помощью лямбда-задания с этим форматом имени.

0 голосов
/ 30 июня 2018

Полагаю, вы спрашиваете, как применить bucket-owner-full-control для любых объектов, скопированных в корзину.

Из S3 Bucket Owner Access , вы можете использовать такую ​​политику:

{
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":{"AWS":"111111111111"},
      "Action":"s3:PutObject",
      "Resource":["arn:aws:s3:::examplebucket/*"]
    },
    {
      "Effect":"Deny",
      "Principal":{"AWS":"111111111111"},
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition": {
        "StringNotEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
      }
    }
  ]
}

Первая часть - это доступ к корзине. Вторая часть гласит: «Не разрешено, если bucket-owner-full-control не указано».

Когда другие учетные записи копируют файлы в эту корзину, они должны указывать bucket-owner-full-control ACL. (Я знаю, как это сделать с клиентом boto3, но не с ресурсом boto3.)

...