Golang SDK für Dynamodb: ReturnValuesOnConditionCheckFailure gibt keine Details zur Bedingung zurück, wenn die Bedingung chcekfailure auftritt

PHPz
Freigeben: 2024-02-10 18:45:18
nach vorne
540 Leute haben es durchsucht

适用于 Dynamodb 的 Golang SDK:ReturnValuesOnConditionCheckFailure 不返回有关条件chcekfailure 发生时的条件的详细信息

Der PHP-Editor Xiaoxin stellt Ihnen eine wichtige Funktion im Golang SDK für Dynamodb vor: ReturnValuesOnConditionCheckFailure. Diese Funktion schützt vertrauliche Daten, indem keine detaillierten Informationen über die Bedingung zurückgegeben werden, wenn die Bedingungsprüfung fehlschlägt. Mithilfe dieser Funktion können Entwickler Fehler bei der Zustandsprüfung sicherer behandeln und die Anwendungszuverlässigkeit verbessern. In diesem Artikel werden wir uns mit der Verwendung und den Vorteilen dieser Funktion befassen, um Entwicklern zu helfen, sie besser zu verstehen und auf tatsächliche Projekte anzuwenden.

Frageninhalt

Ich verwende Golang SDK https://pkg.go.dev/github.com/aws/[email protected]/ zum Debuggen von Bedingungen, um Fehler zu überprüfen und den Grund für einen einzelnen Schreibvorgang herauszufinden Meldung „Vorgang fehlgeschlagen“, aber ich sehe nur die Fehlermeldung Message_: „Bedingte Anforderung fehlgeschlagen“. Bei Verwendung des Parameters ReturnValuesOnConditionCheckFailure: ALL_OLD in UpdateItemInput werden keine zusätzlichen Informationen zur konkreten Ursache bereitgestellt. Bei TransactWriteItems kann ich genau erkennen, warum die Bedingungsprüfung bei Verwendung derselben Parameter fehlgeschlagen ist. Wie kann ich diese Details für einen einzelnen Schreibvorgang abrufen? Referenz: https://aws.amazon.com/about-aws/whats-new/2023/06/amazon-dynamodb-cost-failed-conditional-writes Syntax, die ich verwende:

input := &dynamodb.UpdateItemInput{
        TableName:                           aws.String("DummyTable"),
        Key:                                 keyAttr,
        ExpressionAttributeValues:           updateExpr.Values(),
        ExpressionAttributeNames:            updateExpr.Names(),
        ConditionExpression:                 updateExpr.Condition(),
        ReturnValues:                        aws.String(dynamodb.ReturnValueAllOld),
        UpdateExpression:                    updateExpr.Update(),
        ReturnValuesOnConditionCheckFailure: aws.String(dynamodb.ReturnValuesOnConditionCheckFailureAllOld),
}
output, err := dl.ddbI.UpdateItem(input)
Nach dem Login kopieren

Workaround

Das Element sollte sich innerhalb der Fehlerkomponente befinden, normalerweise in error.response.Item.

Zum Beispiel in Python:

except botocore.exceptions.ClientError as error:
    if error.response["Error"]["Code"] == "ConditionalCheckFailedException":
        print("The conditional expression is not met")
        current_value = error.response.get("Item")
Nach dem Login kopieren

Hinweis: Wenn Sie DynamoDB Local verwenden, ist diese Funktion noch nicht vorhanden

Das obige ist der detaillierte Inhalt vonGolang SDK für Dynamodb: ReturnValuesOnConditionCheckFailure gibt keine Details zur Bedingung zurück, wenn die Bedingung chcekfailure auftritt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!