Como insiro condicionalmente um item em uma tabela dynamodb usando boto3

Se eu tiver uma tabela com uma chave de hash de userId e uma chave de intervalo de productId, como coloco um item nessa tabela apenas se ele ainda não existir usando as ligações dynamodb do boto3?

A chamada normal para put_item se parece com isso

table.put_item(Item={'userId': 1, 'productId': 2})

Minha chamada com uma ConditionExpression é assim:

table.put_item(
    Item={'userId': 1, 'productId': 2}, 
    ConditionExpression='userId <> :uid AND productId <> :pid', 
    ExpressionAttributeValues={':uid': 1, ':pid': 3}
)

Mas isso gera uma ConditionalCheckFailedException toda vez. Se um item existe com o mesmo productId ou não.

questionAnswers(3)

yourAnswerToTheQuestion