/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace DynamoDB { namespace Model { /** *

The entire transaction request was canceled.

DynamoDB cancels a * TransactWriteItems request under the following circumstances:

*
  • A condition in one of the condition expressions is not met.

    *
  • A table in the TransactWriteItems request is in a * different account or region.

  • More than one action in the * TransactWriteItems operation targets the same item.

  • *

    There is insufficient provisioned capacity for the transaction to be * completed.

  • An item size becomes too large (larger than 400 * KB), or a local secondary index (LSI) becomes too large, or a similar validation * error occurs because of changes made by the transaction.

  • There * is a user error, such as an invalid data format.

DynamoDB * cancels a TransactGetItems request under the following * circumstances:

  • There is an ongoing * TransactGetItems operation that conflicts with a concurrent * PutItem, UpdateItem, DeleteItem or * TransactWriteItems request. In this case the * TransactGetItems operation fails with a * TransactionCanceledException.

  • A table in the * TransactGetItems request is in a different account or region.

    *
  • There is insufficient provisioned capacity for the transaction to * be completed.

  • There is a user error, such as an invalid data * format.

If using Java, DynamoDB lists the cancellation * reasons on the CancellationReasons property. This property is not * set for other languages. Transaction cancellation reasons are ordered in the * order of requested items, if an item has no error it will have None * code and Null message.

Cancellation reason codes and * possible error messages:

  • No Errors:

    • Code: * None

    • Message: null

    *
  • Conditional Check Failed:

    • Code: * ConditionalCheckFailed

    • Message: The conditional * request failed.

  • Item Collection Size Limit * Exceeded:

    • Code: ItemCollectionSizeLimitExceeded *

    • Message: Collection size exceeded.

  • *

    Transaction Conflict:

    • Code: TransactionConflict *

    • Message: Transaction is ongoing for the item.

    *
  • Provisioned Throughput Exceeded:

    • Code: * ProvisionedThroughputExceeded

    • Messages:

        *
      • The level of configured provisioned throughput for the table was * exceeded. Consider increasing your provisioning level with the UpdateTable * API.

        This Message is received when provisioned throughput is * exceeded is on a provisioned DynamoDB table.

      • The level * of configured provisioned throughput for one or more global secondary indexes of * the table was exceeded. Consider increasing your provisioning level for the * under-provisioned global secondary indexes with the UpdateTable API.

        *

        This message is returned when provisioned throughput is exceeded is on a * provisioned GSI.

  • Throttling * Error:

    • Code: ThrottlingError

    • *

      Messages:

      • Throughput exceeds the current capacity of your * table or index. DynamoDB is automatically scaling your table or index so please * try again shortly. If exceptions persist, check if you have a hot key: * https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html.

        *

        This message is returned when writes get throttled on an On-Demand * table as DynamoDB is automatically scaling the table.

      • *

        Throughput exceeds the current capacity for one or more global secondary * indexes. DynamoDB is automatically scaling your index so please try again * shortly.

        This message is returned when writes get throttled on an * On-Demand GSI as DynamoDB is automatically scaling the GSI.

      • *
  • Validation Error:

    • Code: * ValidationError

    • Messages:

      • One * or more parameter values were invalid.

      • The update expression * attempted to update the secondary index key beyond allowed size limits.

        *
      • The update expression attempted to update the secondary index key * to unsupported type.

      • An operand in the update expression has * an incorrect data type.

      • Item size to update has exceeded the * maximum allowed size.

      • Number overflow. Attempting to store a * number with magnitude larger than supported range.

      • Type * mismatch for attribute to update.

      • Nesting Levels have exceeded * supported limits.

      • The document path provided in the update * expression is invalid for update.

      • The provided expression * refers to an attribute that does not exist in the item.

    • *

See Also:

AWS * API Reference

*/ class TransactionCanceledException { public: AWS_DYNAMODB_API TransactionCanceledException(); AWS_DYNAMODB_API TransactionCanceledException(Aws::Utils::Json::JsonView jsonValue); AWS_DYNAMODB_API TransactionCanceledException& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_DYNAMODB_API Aws::Utils::Json::JsonValue Jsonize() const; inline const Aws::String& GetMessage() const{ return m_message; } inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } inline TransactionCanceledException& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} inline TransactionCanceledException& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} inline TransactionCanceledException& WithMessage(const char* value) { SetMessage(value); return *this;} /** *

A list of cancellation reasons.

*/ inline const Aws::Vector& GetCancellationReasons() const{ return m_cancellationReasons; } /** *

A list of cancellation reasons.

*/ inline bool CancellationReasonsHasBeenSet() const { return m_cancellationReasonsHasBeenSet; } /** *

A list of cancellation reasons.

*/ inline void SetCancellationReasons(const Aws::Vector& value) { m_cancellationReasonsHasBeenSet = true; m_cancellationReasons = value; } /** *

A list of cancellation reasons.

*/ inline void SetCancellationReasons(Aws::Vector&& value) { m_cancellationReasonsHasBeenSet = true; m_cancellationReasons = std::move(value); } /** *

A list of cancellation reasons.

*/ inline TransactionCanceledException& WithCancellationReasons(const Aws::Vector& value) { SetCancellationReasons(value); return *this;} /** *

A list of cancellation reasons.

*/ inline TransactionCanceledException& WithCancellationReasons(Aws::Vector&& value) { SetCancellationReasons(std::move(value)); return *this;} /** *

A list of cancellation reasons.

*/ inline TransactionCanceledException& AddCancellationReasons(const CancellationReason& value) { m_cancellationReasonsHasBeenSet = true; m_cancellationReasons.push_back(value); return *this; } /** *

A list of cancellation reasons.

*/ inline TransactionCanceledException& AddCancellationReasons(CancellationReason&& value) { m_cancellationReasonsHasBeenSet = true; m_cancellationReasons.push_back(std::move(value)); return *this; } private: Aws::String m_message; bool m_messageHasBeenSet = false; Aws::Vector m_cancellationReasons; bool m_cancellationReasonsHasBeenSet = false; }; } // namespace Model } // namespace DynamoDB } // namespace Aws