code: func (b *EtcdBackend) Put(ctx context.Context, item backend.Item) (*backend.Lease, error) {
  	var opts []clientv3.OpOption
  	var lease backend.Lease
  	if !item.Expires.IsZero() {
  		if err := b.setupLease(ctx, item, &lease, &opts); err != nil {
  			return nil, trace.Wrap(err)
  		}
  	}
  	start := b.clock.Now()
  	_, err := b.client.Put(
  		ctx,
  		prependPrefix(item.Key),
  		base64.StdEncoding.EncodeToString(item.Value),
  		opts...)
  	writeLatencies.Observe(time.Since(start).Seconds())
  	writeRequests.Inc()
  	if err != nil {
  		return nil, convertErr(err)
  	}
  	return &lease, nil
  }
docs: // Put puts value into backend (creates if it does not
  // exists, updates it otherwise)