как исправить «ClientError: Произошла ошибка (403) при вызове операции HeadObject: запрещено» при попытке загрузить файл в функции AWS Lambda - PullRequest
2 голосов
/ 29 апреля 2019

Я получаю "errorMessage": "An error occurred (403) when calling the HeadObject operation: Forbidden" при попытке позвонить s3.download_file (см. Код ниже).

Я просмотрел многочисленные сообщения, но ни один из них, похоже, не был вызван из AWS Lambda, котораягде моя проблема.

Мой код работает локально на моем компьютере, поэтому я предполагаю, что проблема связана с Lambda.Эта лямбда-функция в конечном итоге будет вызвана событием S3, но во время тестирования она не работает.

Мой пользователь IAM имеет полный доступ к S3 и лямбде.

Код функции лямбда AWS:

import json
import boto3
import logging

log = logging.getLogger()
log.setLevel(logging.INFO)

s3 = boto3.client('s3')


def lambda_handler(event, context):
    document_name = event['Records'][0]['s3']['object']['key']
    bucket = event['Records'][0]['s3']['bucket']['name']

    log.info('Performing stuff on {}/{}'.format(bucket, document_name))

    # download the file
    s3.download_file(
        Bucket=bucket,
        Key=document_name,
        Filename=document_name
    )

    log.info('here it is!')

    return event

(Я даже пытался ввести информацию в s3.download_file явно вместо того, чтобы получить ее из event, но безрезультатно. Сообщение в журнале подтверждает, что это правильный путь.)

параметры, переданные в конфигурации события теста:

...
"s3": {
  ...
  "bucket": {
    "name": "bucket-name",
  ...
  "object": {
    "key": "filename.pdf",

Код на локальном компьютере:

import boto3

s3 = boto3.client('s3')

s3.download_file(
  Bucket='bucket-name',
  Key='filename.pdf',
  Filename='filename.pdf'
)

Я ожидал, что файл будет загружен без ошибок, как это было при тестированиикод на моей машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...