Как сделать общедоступными файлы загрузки, принадлежащие службе s3-log-service?

Я создал корзину для хранения файлов журнала, созданных службой s3-log-service, и сделал разрешения так, чтобы корзина могла быть как в списке, так и с общедоступным содержимым. Я могу перечислить содержимое корзины, но веб-доступ к журналу запрещен из-за ошибки 403.

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "AllowPublicRead",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::mybucket/*"
    },
    {
        "Sid": "AllowPublicRead",
        "Effect": "Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:ListBucket",
        "Resource": "arn:aws:s3:::mybucket"
    }
  ]
}

Я так понимаю, такая политика не работает, если объект (файл журнала) принадлежит кому-то другому.

Итак, какие еще разрешения мне нужно применить к содержимому корзины, чтобы сделать их общедоступными?


person Graham Chiu    schedule 23.03.2017    source источник
comment
аналогичный вопрос 2011 года на форумах Amazon, без ответа.   -  person HostileFork says dont trust SE    schedule 23.03.2017
comment
Почему вы хотите сделать свои файлы журналов общедоступными? Кажется, вы действительно пытаетесь решить другую проблему, чем та, которую вы здесь описываете?   -  person Michael - sqlbot    schedule 24.03.2017


Ответы (1)


Вы правы, говоря, что политика корзины не применяется к объектам, не принадлежащим учетной записи AWS. У вас есть 2 варианта:

  1. Вам нужно будет скопировать объекты на себя, установив флаг ACL на public-read:
AWS_ACCESS_KEY_ID=XXX \
AWS_SECRET_ACCESS_KEY=XXX \
aws s3 cp \
    s3://BUCKET/OBJECT_PATH \
    s3://BUCKET/OBJECT_PATH \
    --acl public-read
  1. Установите флаг ACL на bucket-owner-full-control. Оттуда политика корзины берет на себя права доступа к объектам.

Единственный способ, которым я нашел способ выполнить любой из этих вариантов (без получения ошибок отказа в доступе), - это использовать учетные данные корневого пользователя учетной записи AWS.

person yegorski    schedule 20.12.2020