PynamoDBトランザクション実装とResourceNotFoundExceptionの解決方法

PynamoDBを利用することでDynamoDB操作を簡潔にしコード量をかなり減らすことができます。
またトランザクション処理も実装することができますが、以下エラーが発生しました。

e.cause_response_code = ResourceNotFoundException

原因・解決方法

リソースが見つからない原因は、PynamoDBトランザクション時のデフォルトリージョンがuse-east-1に向いていることでした。
これはDB Modelで別リージョンを指定してても、トランザクション処理前に再度指定する必要があります。

以下にap-northeast-1の場合の例を記載します。

connection = Connection(region='ap-northeast-1')
client_request_token = str(uuid4())
with TransactWrite(connection=connection, client_request_token=client_request_token) as transaction:
  transaction.save(data)

ClientRequestToken 属性は推奨されているので設定しています。

comments powered by Disqus