Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在更改写入单元吞吐量的同时检查DynamoDB状态并等待其完成?_Node.js_Amazon Web Services_Scalability_Amazon Dynamodb - Fatal编程技术网

Node.js 如何在更改写入单元吞吐量的同时检查DynamoDB状态并等待其完成?

Node.js 如何在更改写入单元吞吐量的同时检查DynamoDB状态并等待其完成?,node.js,amazon-web-services,scalability,amazon-dynamodb,Node.js,Amazon Web Services,Scalability,Amazon Dynamodb,如何等待DynamoDB激活状态 我只想对DynamoDB进行升级,而没有其他进程在向上扩展/更新表。因此,我想知道如何才能看到是否有其他进程正在扩展DynamoDB表 根据,我只能检查tableExists和tableNotExists状态: var参数={ TableName:'STRING_VALUE'/*必填项*/ }; dynamodb.waitFor('tableExists',参数,函数(err,data){ if(err)console.log(err,err.stack);//

如何等待DynamoDB激活状态

我只想对DynamoDB进行升级,而没有其他进程在向上扩展/更新表。因此,我想知道如何才能看到是否有其他进程正在扩展DynamoDB表

根据,我只能检查
tableExists
tableNotExists
状态:

var参数={
TableName:'STRING_VALUE'/*必填项*/
};
dynamodb.waitFor('tableExists',参数,函数(err,data){
if(err)console.log(err,err.stack);//发生错误
else console.log(数据);//响应成功
});
但是,这似乎只有
tableExists
tableNotExists
的状态,但似乎不允许检查“活动”和“更新”状态


背景:我处在一个多工作环境中,每个工作人员都试图在达到写限制的情况下启动一个高级别。这使得在从表中读取当前配置的吞吐量并开始新的缩放操作之前,必须等待任何缩放/更新完成。

一种方法可以是尝试UpdateTable操作,并在收到ResourceInUseException时实现重试逻辑(表示其他线程已在尝试扩大表的规模)。重试逻辑将重复调用DescribeTable(重复调用之间有一些回退逻辑),并等待活动状态(并且可能确保新限制不足),然后再次重试UpdateTable

您可能已经知道了,但只是以防万一……:)

如果您的方法是在获得ProvisionedThroughOutsedeDexception时自动扩展表,那么您需要非常小心地确保请求在散列键空间中分布良好(或者对所配置的吞吐量设置一些硬限制)。否则,在最坏的情况下,您的表可能会自动放大,以支持单个热键,而大部分容量分配给其他未使用的键。

刚刚从aws得到了答案。我上面的代码可能正在工作。当吞吐量发生变化时,表切换到更新状态。TableExists正在等待更新表。当表从更新状态切换回活动状态时,它会立即回调

dynamodb.waitFor('tableExists', params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});