更新dynamoDB中的属性时找不到资源错误

时间:2017-11-05 20:57:00

标签: python amazon-dynamodb

我试图以5分钟的增量保持运行的数据总数。我的逻辑基于本教程:

Keeping running totals

我已经设置了一个表,它已经完成了创建。它有以下键:

  

主分区键timeStamp(String)   主要排序关键字(字符串)

表中没有数据。

我正在尝试跟随json添加/更新。我期待当boto3尝试更新表时如果找不到具有主/辅键值的记录,它将添加一个。

我收到以下错误:

  

调用UpdateItem操作时发生错误(ResourceNotFoundException):找不到请求的资源:ResourceNotFoundException   Traceback(最近一次调用最后一次):   文件" /var/task/lambda_function.py",第44行,在lambda_handler中   update_dynamo_event_counter(' cycles.5.minutes',key 1,key [0],int(val))   文件" /var/task/lambda_function.py",第15行,在update_dynamo_event_counter中   '':"事情",   文件" /var/runtime/boto3/resources/factory.py",第520行,在do_action中   response = action(self,* args,** kwargs)   文件" /var/runtime/boto3/resources/action.py",第83行,致电   response = getattr(parent.meta.client,operation_name)(** params)   文件" /var/runtime/botocore/client.py" ;,第312行,在_api_call中   return self._make_api_call(operation_name,kwargs)   文件" /var/runtime/botocore/client.py" ;,第601行,在_make_api_call中   raise error_class(parsed_response,operation_name)   botocore.errorfactory.ResourceNotFoundException:调用UpdateItem操作时发生错误(ResourceNotFoundException):找不到请求的资源

这是我的代码:

def update_dynamo_event_counter(tableName, ts, t, event_count=1, dynamodb = boto3.resource(service_name='dynamodb', region_name='eu-west-1')):
        table = dynamodb.Table(tableName)
        hrTimeStamp = datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
        response = table.update_item(
        Key={
            'timeStamp': "123456", 
            'thing': "a thing",
            }
        )

我正在传递表名" theTable"而不是arn资源字符串。

1 个答案:

答案 0 :(得分:0)

我也遇到过类似的问题。请检查您的代码中是否正确创建了该项目。 也就是说,您在代码中使用的put_item或batch_item未被创建,或者在创建阶段未执行put_item或batch_item。

保持执行直到表被正确创建并且处于“ ACTIVE”状态。然后执行put_item或batch_item并检查是否已创建。

等到put_item或batch_item之后的“ ACTIVE STATE”,然后使用update_item更新该项目。

您的错误似乎是,您没有使用put_item或batch_item正确创建项目,并在项目本身未正确执行时尝试更新该项目。