AWS Lambda: произошла ошибка (403) при вызове операции HeadObject: запрещено - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть лямбда-функция, выполняющая вызов s3 HeadObject.Несмотря на то, что для этой лямбда-функции была создана специальная политика, я получаю сообщение об ошибке 403 всякий раз, когда выполняется этот вызов HeadObject.В частности,

An error occurred (403) when calling the HeadObject operation: Forbidden

Моя политика очень четко разрешает вызовы GetObject для рассматриваемого сегмента.Не уверен, в чем проблема.У меня есть тройная проверка, что все выстраиваетсяОбсуждаемая строка:

    s3 = boto3.client('s3')
    local_file_path = '/tmp/' + key_name.split('/')[-1] + '_REMOTE.json'
    response = s3.head_object(Bucket=environ['OUTPUT_BUCKET'], Key=OUTPUT_FILE_NAME)

Дайте мне знать, могу ли я предоставить больше информации, чтобы помочь

1 Ответ

0 голосов
/ 26 сентября 2018

Поскольку вы сказали, что в файле отсутствует ожидаемое поведение, если вам не хватает s3:ListBucket разрешений

Для этой операции вам необходимо разрешение s3: GetObject.Дополнительную информацию см. В разделе «Указание разрешений в политике» в Руководстве разработчика сервиса Amazon Simple Storage.Если запрашиваемый вами объект не существует, ошибка, которую возвращает Amazon S3, зависит от того, есть ли у вас разрешение s3: ListBucket.

Если у вас есть разрешение s3: ListBucket для корзины, Amazon S3 вернет HTTPошибка кода состояния 404 («нет такого ключа»).

Если у вас нет разрешения s3: ListBucket, Amazon S3 вернет ошибку кода состояния HTTP 403 («доступ запрещен»).

Ссылка на doco

Существует также «другое» конечное поведение согласованности для выполнения HEAD перед загрузкой объекта

Модель согласованности данных Amazon S3 Amazon S3 обеспечивает согласованность операций чтения-записи-записи для PUTS новых объектов в вашей корзине S3 во всех регионах с одним предупреждением.Предостережение заключается в том, что если вы делаете HEAD или GET-запрос к имени ключа (чтобы определить, существует ли объект) перед созданием объекта, Amazon S3 обеспечивает возможную согласованность для чтения после записи.

...