What is the best way to check if table exists in DynamoDB?

后端 未结 6 2091
粉色の甜心
粉色の甜心 2021-02-19 22:28

What is the best way to check if table exists in DynamoDb?

I would appreciate it if the code would be in PHP.

Either active or not.

* Added late

6条回答
  •  感情败类
    2021-02-19 22:47

    With DynamoDB you need to parse the contents of the error message in order to know what type of error you received since the status code is almost always 400. Here is a sample function that could work to determine if a table exists. It also allows you to specify a status as well if you want to check if it exists and if it is in a certain state.

    describe_table(array('TableName' => $tableName));
    
        if ($response->isOK()) {
            if ($desiredStatus) {
                $status = $response->body->Table->TableStatus->to_string();
                return ($status === $desiredStatus);
            } else {
                return true;
            }
        } elseif ($response->status === 400) {
            $error = explode('#', $response->body->__type->to_string());
            $error = end($error);
            if ($error === 'ResourceNotFoundException') {
                return false;
            }
        }
    
        throw new DynamoDB_Exception('Error performing the DescribeTable operation.');
    }
    

    Update: In the AWS SDK for PHP 2, specific exceptions are thrown by the DynamoDB client, making this way easier to handle. Also, there are "Waiter" objects, including one for this use case (see usage in the unit test) that is designed to sleep until the table exists.

提交回复
热议问题