LambdaでDynamoDBにアクセスする記述方法(Python) | AWS豆知識
-
import
-
テーブル取得
-
書き込み
-
読み出し
-
消去
Lambda関数に付与する権限
権限を付与するためにはIAMロールを利用する。
IAMについては「IAM ロール ポリシーについて」を、
実際に付与する権限の書き方例については「Lambda関数に付与するIAMロールについて」を山参照
import
import boto3 from boto3.dynamodb.conditions import Key, Attr
テーブル取得
# dynamoDBオブジェクト self.dynamodb = boto3.resource('dynamodb') # テーブル取得 targetTable = self.dynamodb.Table('DynamoDBに存在するテーブル名')
書き込み
# 登録データ registerData = { "name": "名前", "RegisterDate": "登録日" } # 値を書き込む queryResult = targetTable.put_item( Item = registerData }
読み出し
# 全件取得 queryResult = targetTable.scan() # DeviceId が DeviceA のものを取得 # Keyに指定している「DeviceId」がパーティションキーである必要がある。 queryResult = targetTable.query( KeyConditionExpression = Key( "DeviceId" ).eq( "DeviceA" ) ) # DeviceId が DeviceA のものを取得(LSI 登録日の昇順で取得) # LSI:ローカルセカンダリインデックス # DynamoDB側で「DeviceId-RegisterDate-index」という名前でインデックスが登録されている queryResult = targetTable.query( IndexName = "DeviceId-RegisterDate-index", KeyConditionExpression = Key( "DeviceId" ).eq( "DeviceA" ) ) # 指定された顧客名の貸出情報を取得(GSI 貸出日時の昇順で取得) # GSI:グローバルセカンダリインデックス # DynamoDB側で「ClientName-RentalDate-index」という名前でインデックスが登録されている queryResult = targetTable.query( IndexName = "ClientName-RentalDate-index", KeyConditionExpression = Key( "ClientName" ).eq( clientName ) )
消去
# 消去 queryResult = targetTable.delete_item( Key = { "DeviceId": deviceId } ) # LSIやGSIで設定された2項目でデータを指定して消去 queryResult = targetTable.delete_item( Key = { "DeviceId": deviceId, "RegisterDate": registerDate } )