#python #amazon-s3 #aws-lambda #amazon-dynamodb
#python #amazon-s3 #aws-lambda #amazon-dynamodb
Вопрос:
Я пытаюсь загрузить CSV-файлы из S3 в Amazon DynamoDB с помощью AWS Lambda. Я использую Python 2.7. В файле всего 2 столбца: имя и идентификатор. Код выглядит следующим образом:
import boto3
s3 = boto3.client('s3')
dynamodb = boto3.resource('dynamodb')
def csv_reader(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
obj = s3.get_object(Bucket=bucket, Key=key)
rows = obj['Body'].read().split('n')
table = dynamodb.Table('test_table')
with table.batch_writer() as batch:
for row in rows:
batch.put_item(Item={
'Name':row.split(',')[0],
'ID':row.split(',')[1]
})
Я получаю эту ошибку:
An error occurred (ResourceNotFoundException) when calling the BatchWriteItem operation: Requested resource not found: ResourceNotFoundException
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 24, in csv_reader
'ID':row.split(',')[1]
File "/var/runtime/boto3/dynamodb/table.py", line 156, in __exit__
self._flush()
File "/var/runtime/boto3/dynamodb/table.py", line 137, in _flush
RequestItems={self._table_name: items_to_send})
File "/var/runtime/botocore/client.py", line 314, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 612, in _make_api_call
raise error_class(parsed_response, operation_name)
ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the BatchWriteItem operation: Requested resource not found
Если я попытаюсь загрузить любой другой файл, я все равно столкнусь с той же ошибкой. Кто-нибудь может подсказать, что мне делать?
Комментарии:
1. Похоже, ваше имя таблицы неверно. Убедитесь, что существует ‘test_table’
2. Пока вы делаете то, что предложил @SumeetP. Попробуйте проверить тип данных для
obj['Body'].read()
. Если егоbytes
преобразовать вstr
затем использоватьsplit