def METHOD_NAME(expression_attribute_names: Optional[Mapping[str, str]] = None,
                   key: Optional[str] = None,
                   projection_expression: Optional[str] = None,
                   table_name: Optional[str] = None,
                   opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetTableItemResult:
    """
    Data source for retrieving a value from an AWS DynamoDB table.
    ## Example Usage
    ### Basic Usage
    ```python
    import pulumi
    import pulumi_aws as aws
    test = aws.dynamodb.get_table_item(table_name=aws_dynamodb_table["example"]["name"],
        expression_attribute_names={
            "#P": "Percentile",
        },
        projection_expression="#P",
        key=\"\"\"{
    	"hashKey": {"S": "example"}
    }
    \"\"\")
    ```
    :param str key: A map of attribute names to AttributeValue objects, representing the primary key of the item to retrieve.
           For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key.
           The following arguments are optional:
    :param str projection_expression: A string that identifies one or more attributes to retrieve from the table. These attributes can include scalars, sets, or elements of a JSON document. The attributes in the expression must be separated by commas.
           If no attribute names are specified, then all attributes are returned. If any of the requested attributes are not found, they do not appear in the result.
    :param str table_name: The name of the table containing the requested item.
    """
    __args__ = dict()
    __args__['expressionAttributeNames'] = expression_attribute_names
    __args__['key'] = key
    __args__['projectionExpression'] = projection_expression
    __args__['tableName'] = table_name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('aws:dynamodb/getTableItem:getTableItem', __args__, opts=opts, typ=GetTableItemResult).value
    return AwaitableGetTableItemResult(
        expression_attribute_names=pulumi.get(__ret__, 'expression_attribute_names'),
        id=pulumi.get(__ret__, 'id'),
        item=pulumi.get(__ret__, 'item'),
        key=pulumi.get(__ret__, 'key'),
        projection_expression=pulumi.get(__ret__, 'projection_expression'),
        table_name=pulumi.get(__ret__, 'table_name'))