我试图以5分钟的增量保持运行的数据总数。我的逻辑基于本教程:
我已经设置了一个表,它已经完成了创建。它有以下键:
主分区键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资源字符串。
答案 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正确创建项目,并在项目本身未正确执行时尝试更新该项目。