code: def set_state(key, value, namespace=None, table_name=None, environment=None,
                layer=None, stage=None, shard_id=None, consistent=True,
                serializer=json.dumps, wait_exponential_multiplier=500,
                wait_exponential_max=5000, stop_max_delay=10000, ttl=None):
      
      if table_name is None:
          table_name = _state_table_name(environment=environment, layer=layer,
                                         stage=stage)
  
      if not table_name:
          msg = ("Can't produce state table name: unable to set state "
                 "item '{}'".format(key))
          logger.error(msg)
          raise StateTableError(msg)
          return
  
      dynamodb = boto3.resource("dynamodb")
      table = dynamodb.Table(table_name)
      logger.info("Putting {} -> {} in DynamoDB table {}".format(key, value,
                                                                 table_name))
      if serializer:
          try:
              value = serializer(value)
          except TypeError:
              logger.error(
                  "Value for state key '{}' is not json-serializable".format(
                      key))
              raise
  
      if namespace:
          key = "{}:{}".format(namespace, key)
  
      if shard_id:
          key = "{}:{}".format(shard_id, key)
  
      item = {"id": key, "value": value}
      if ttl:
          item["ttl"] = {"N": str(int(time.time() + ttl))}
      @retry(retry_on_exception=_is_critical_exception,
             wait_exponential_multiplier=500,
             wait_exponential_max=5000,
             stop_max_delay=10000)
      def put_item():
          try:
              return table.put_item(Item=item)
          except Exception as err:
              if _is_dynamodb_critical_exception(err):
                  raise CriticalError(err)
              else:
                  raise
  
      resp = put_item()
  
      logger.info("Response from DynamoDB: '{}'".format(resp))
      return resp
docs: Set Lambda state value.