Python で DynamoDB にレコードを作成する
https://gyazo.com/af370535c3c0e20e5829c812dc87a20c
Python で DynamoDB を操作するメモです。
すでに DynamoDB にテーブルは作成済みで、 AWS のアクセストークン、もしくは IAM にポリシーはアタッチ済みとします。
ちなみにレコードを作成するだけであれば、 dynamodb:PutItem だけ付与しておけば良いかと思います。
ライブラリのインストール
boto3 というライブラリを使うのが良さそうです。 クイックスタートはここにありました。
code:bash
pip3 install awscli boto3 --upgrade
テーブルにレコードを書き込む
code:python
import sys
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('TableName')
res = table.put_item(
Item={
"name": "sample",
"num": 3,
"description": "sample description"
}
)
file = open('/home/pi/log_AM2302/error_log.txt', 'a+')
file.write('{}\n'.format(res))
sys.exit(1)
書き込み後のレスポンスはこんな感じなので、良い感じにエラーハンドリングに使うと良いかと思われます。
code:python
{'ResponseMetadata': {
'RequestId': 'abcdefg',
'HTTPStatusCode': 200,
'HTTPHeaders': {
'server': 'Server',
'date': 'Thu, 22 Jul 2021 13:23:11 GMT',
'content-type': 'application/x-amz-json-1.0',
'content-length': '2',
'connection': 'keep-alive',
'x-amzn-requestid': 'abcdefg',
'x-amz-crc32': '123456'
}, 'RetryAttempts': 0
}}
別の言語のライブラリだと、 CLI と同じような JSON を渡す必要があった気がしたのですが、このライブラリだと結構よしなにやってくれるんですね。
code:bash
aws dynamodb put-item \
--table-name TableName \
--item '{"name": {"S": "sample"},"num": {"N": "3"},"description": {"S": "sample description"}}' \
--return-consumed-capacity TOTAL