小编JMi*_*d23的帖子

BatchWriteItem 操作:提供的关键元素与架构不匹配

我正在尝试使用 AWS Lambda 函数将 csv 数据从 S3 写入 DynamoDB。我目前收到以下错误“BatchWriteItem 操作:提供的关键元素与架构不匹配”。

有没有快速解决这个问题的方法?

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('customer_id')

    with table.batch_writer() as batch:
        for row in rows:
            batch.put_item(Item={

                'Customer-ID':row.split(',')[0],
                'Name':row.split(',')[1]
            })
Run Code Online (Sandbox Code Playgroud)

错误看起来像这样:

调用 BatchWriteItem 操作时发生错误 (ValidationException):提供的关键元素与架构不匹配:ClientError Traceback(最近一次调用最后一次):

文件“/var/task/lambda_function.py”,第 22 行,在 csv_reader 'Name':row.split(',')[1]

文件“/var/runtime/boto3/dynamodb/table.py”,第 156 行,退出 self._flush()

文件“/var/runtime/boto3/dynamodb/table.py”,第 137 行,在 _flush RequestItems={self._table_name: items_to_send})

文件“/var/runtime/botocore/client.py”,第 314 行,在 _api_call 中返回 self._make_api_call(operation_name, kwargs)

文件“/var/runtime/botocore/client.py”,第 …

amazon-s3 amazon-web-services python-2.7 amazon-dynamodb

3
推荐指数
1
解决办法
7082
查看次数