Я получаю "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'
)
Я ожидал, что файл будет загружен без ошибок, как это было при тестированиикод на моей машине.