0

node.jsの使用dynamoDBテーブルの削除と再作成を試みます。私はテーブルからすべてのレコードを削除し、新しいを置く必要があるので、私は良いソリューションを削除し、全体のテーブルを再作成する必要があります。私はこのコードdynamoDBテーブルの削除と作成

dynamo.deleteTable({ 
     TableName: tableName 
    }, function(err, data){ 
     if (err) { 
      console.log(err); 
     } 
     else { 
      dynamo.createTable({ 
       TableName: tableName, 
       KeySchema: [{ 
        AttributeName: "id", 
        KeyType: "HASH" 
       }], 
       AttributeDefinitions: [{ 
        AttributeName: "id", 
        AttributeType: "S" 
       }], 
       ProvisionedThroughput: { 
        ReadCapacityUnits: 10, 
        WriteCapacityUnits: 10 
       } 
      }, function(err){ 
       if (err) { 
        console.log(err); 
       } 
       else { 
        // putNewData(data, callback); 
       } 
      }) 
     } 
    }); 

てみてください、私はエラーResourceInUseExceptionを取得:表がすでに存在しています:

答えて

1

を使用して、createTableを呼び出す前にテーブルが完全に削除されていることを確認できます。

+0

ニースのソリューション、tnx – Nemanja

2

それが実際にテーブルを削除するDynamoDBのためのいくつかの時間がかかりますので、あなたは、テーブルが削除されるまで待つ必要があります。

ResourceInUseExceptionエラーが発生した場合は、再作成しようとしているテーブルがまだ削除されていないことを意味します。だから、ちょっと待ってからもう一度やり直す必要があります。

テーブル内のキーを変更していない場合は、新しいローカルセカンダリインデックスを作成しない場合は、代わりにUpdateTableメソッドを使用できます。ここではいくつかの制限があるけれども:

あなたは一度だけで、次のいずれかの操作を実行できます。

テーブルのプロビジョニングされたスループットの設定を変更します。

表のストリームを有効または無効にします。

テーブルからグローバルセカンダリインデックスを削除します。

テーブルに新しいグローバルセカンダリインデックスを作成します。インデックス が開始されたら、

バックフィルでは、UpdateTableを使用して他の操作を実行できます。

+0

私はコールバックがそれを助けると思っています。どのように私はテーブルが削除されたかを知るためには、いくつかのイベントまたはちょうどいくつかのタイムアウトを設定し、希望が削除が完了ですか? – Nemanja

+1

指数バックオフを使用してcreateTable APIコールを再試行することをお勧めします。 Doc:http://docs.aws.amazon.com/general/latest/gr/api-retries.html – Antonio

+0

残念ながら、テーブルが削除されたときにイベントが発生せず、削除に時間がかかることはありませんテーブル。 DynamoDBが応答を返したときにコールバックが呼び出されます。成功またはエラーのいずれか(テーブルがまだ削除されていない場合) –

関連する問題