func NewLease(key string) Lease {
	return Lease{Key: key}
}
NewLease gets a key(represents the lease key/name) and returns a new Lease object.
package lease
import (
	"errors"
	"time"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/service/dynamodb"
)
type AttributeType int
const (
	StringSet AttributeType = iota
	NumberSet
	BinarySet
)
var (
	ErrTokenNotMatch = errors.New("leaser: concurrency token doesn't match the authoritative lease")
	ErrLeaseNotHeld = errors.New("leaser: worker does not hold the passed-in lease object")
	ErrValueNotMatch = errors.New("leaser: field value does not match the field type")
)
type Lease struct {
	Key     string `dynamodbav:"leaseKey"`
	Owner   string `dynamodbav:"leaseOwner"`
	Counter int    `dynamodbav:"leaseCounter"`
	lastRenewal time.Time
	concurrencyToken string
	extrafields map[string]interface{}
	explicitfields map[string]*dynamodb.AttributeValue
	removedfields []string
}