Edited at

DynamoDBとLambdaとPython3.7


botoをrequirements.txtに含める必要はありません

Python3.xには標準で含まれている模様です。

わざわざ入れたらパッケージが45MBになり、コードが画面上で編集できなくなってしまいました。

→出典


Float types are not supported. Use Decimal types instead.


i = {
'year': 2015,
'title': 'The Big New Movie',
'info': {
'plot': "Everything happens all at once.",
'rating': 24.1
}
}

table.put_item(
Item = i
)

ratingが24なら問題ないけど、24.1だとエラーになる。


i = {
'year': 2015,
'title': 'The Big New Movie',
'info': {
'plot': "Everything happens all at once.",
'rating': decimal.Decimal('24.1')
}
}

table.put_item(
Item = i
)

シングルクォートがないと下記のエラーになる。ことがある。

  "errorMessage": "[<class 'decimal.Inexact'>, <class 'decimal.Rounded'>]",

"errorType": "Inexact",

'rating': decimal.Decimal(5.0) ← エラーにならない

'rating': decimal.Decimal(5.1) ← エラー
'rating': decimal.Decimal(5.5) ← エラーにならない
'rating': decimal.Decimal(5.5555555) ← エラー
'rating': decimal.Decimal(5.6) ← エラー
'rating': decimal.Decimal(5.9) ← エラー
'rating': decimal.Decimal(24.1) ← エラー
'rating': decimal.Decimal(24.5) ← エラーにならない

なぜか0.5刻みのときだけセーフ。