Ошибка, связанная с доступом к Amazon S3 403

#amazon-s3

#amazon-s3

Вопрос:

Я получаю несколько странных ошибок 403 от Amazon при запросе объектов из корзины S3. Это кажется прерывистым, и это происходит только в быстрой последовательности.

Если я попытаюсь получить доступ к тем же объектам позже, я обычно могу получить их без проблем.

Я нутром чую, что эти ошибки возникают из-за какого-то ограничения скорости, но я ничего не могу найти в документах. Является ли ограничение скорости возможной причиной ошибки 403?

Комментарии:

1. aws.amazon.com/articles/1109#04 предполагает, что вы можете получить эту ошибку, если для запрашивающего компьютера не установлено время в пределах 15 минут от веб-сервера S3, так что вы можете это проверить. Как показано на ссылке, вы получите код ошибки: RequestTimeToo-искажен, если это проблема

2. Я вижу те же периодические проблемы. Иногда после нескольких дней успешных 200 я начинаю получать 403 с одного устройства, продолжая получать 200 с другого. Объект не был недавно обновлен. Часы устройства указаны правильно. Есть идеи?

3. @Jordan вы когда-нибудь находили решение или причину этого?

4. 403 не указывает ограничение скорости. Это было бы 503. В общем случае 4xx — это какая-то ошибка клиента, а 5xx — какая-то ошибка сервера. w3.org/Protocols/rfc2616/rfc2616-sec10.html

5. Вы получили код ошибки обратно? Можете ли вы включить соответствующие фрагменты ответа?

Ответ №1:

Моя проблема заключалась в том, что объекты, которые я запрашивал, не существовали. Я не уверен, есть ли какая-либо специальная конфигурация, которую мы сделали, чтобы сделать ее 403, а не 404, но по сей день, если я пытаюсь запросить объект из нашего корзины, который, я уверен, не существует, я получаю 403.

Причина 403, вероятно, связана с безопасностью; если кто-то ищет объекты, и иногда они получают 403, потому что у них нет доступа к существующему объекту, а иногда они получают 404, потому что объект законно отсутствует, они потенциально могут получить некоторую конфиденциальную информацию.

Комментарии:

1. Если тот же пользователь, который выполняет запрос, имеет разрешения «Список», вместо этого он получит 404.

Ответ №2:

Если вы используете корзину S3 в качестве веб-сайта со статическим контентом, вам необходимо прикрепить политику с действием s3:GetObject arn:aws:s3:::your-bucket/* . Вот пример использования шаблона Cloudformation:

 StaticWebsite:
  Type: AWS::S3::Bucket
  Properties:
    AccessControl: PublicRead
    BucketName: your-bucket
    WebsiteConfiguration:
      IndexDocument: index.html
StaticWebsitetPolicy:
  Type: AWS::S3::BucketPolicy
  Properties:
    Bucket: !Ref StaticWebsite
    PolicyDocument:
      Statement:
        - Effect: Allow
          Action:
            - s3:GetObject
          Resource:
            - arn:aws:s3:::your-bucket/*
          Principal: "*"