DynamoDBの環境準備
DynamoDB→テーブル→テーブルを作成からテーブル名peopleを作る。
パーティションキーを文字列型のSrとする。
そして、以下のようなテーブルを作成する。
AWS Lambdaの下準備
流れとしてはロールにポリシーを当て、そのロールをサービスで使用するといった流れになる。
まず実行ロールを作る。IAMからアクセス制限→ロール→ロールの作成を選択。
信頼されたエンティティタイプ:AWSのサービス
ユースケース:Lambda
を選択。
次に、AmazonDynamoDBFullAccessを許可ポリシーに選択。
ロール名をここではlambda-dynamodb-fullaccessとする。
AWS Lambdaの下準備2
まず、lambdaホーム画面から関数の作成を選択。
関数名:dynamo-crud
ランタイム:Python3.9
実行ロール:lambda-dynamodb-fullaccess(先ほど作ったロール)
これで関数を作成をクリック。
まず最初にPython SDKであるboto3をインポートする。
import boto3
from boto3.dynamodb.conditions import Key,Attr
次にラムダハンドラーを定義する。
def lambda_handler(event,context):
__TableName__ = "people"
Primary_Column_Name = 'Sr'
Primary_Key="1"
#カラムを定義
columns=["Age","First","Last"]
#boto3の.client,.resourceはどちらを使っても良い。
client = boto3.client('dynamodb')
DB=boto3.resource('dynamodb')
変数tableにテーブルpeopleを設定
table=DB.Table(__TableName__)
AWS LambdaでDynamoDBにある要素を読み取る(read)
次のコマンドで読み取れる。ラムダハンドラーの中に記述している。
#write in lambda handler
#Get the data
response=table.get_item(
Key={
Primary_Column_Name:Primary_Key
}
)
print(response["Item"])
出力結果↓
{'Sr': '1', 'Last': 'boy', 'Age': Decimal('34'), 'First': 'tai1'}
AWS LambdaからDynanoDBに要素を追加する(create)
今度は要素を追加する。これも同様にラムダハンドラーの中に記述。
#put items
Primary_Key="5"
response=table.put_item(
Item={Primary_Columns_Name:Primary_Key,
columns[0]:44,
columns[1]:"taiboy"
columns[2]:"Python"
}
)
print(response["ResponseMetadata"]["HTTPStatusCode"])
出力結果↓
200
DynamoDBを見てみると(更新マークを押してください。)
AWS LambdaからDynanoDBの要素を削除する(delete)
今度はDBの要素を削除してみる。
#delete
Primary_Key="5"
response=table.delete_item(
Key={
Primary_Column_Name:Primary_Key
}
)
確認すると消えているはず
(おまけ)全てのデータを取り出す。
今度はテーブルの全てのデータを取り出してみる。
#get all the Data from DynamoDB
response=table.scan(
FilterExpression = Attr('Sr').gte("0")
)
for x in response["Items"]:
print(x)
出力結果↓
{'Sr': '1', 'Last': 'boy', 'Age': Decimal('34'), 'First': 'tai1'}
{'Sr': '0', 'Last': 'boy', 'Age': Decimal('24'), 'First': 'tai'}
{'Sr': '4', 'Last': 'boy', 'Age': Decimal('22'), 'First': 'tai4'}
{'Sr': '3', 'Last': 'boy', 'Age': Decimal('58'), 'First': 'tai3'}