1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Lambda,DynamoDB間のCRUD操作

Last updated at Posted at 2022-07-03

DynamoDBの環境準備

DynamoDB→テーブル→テーブルを作成からテーブル名peopleを作る。
パーティションキーを文字列型のSrとする。
そして、以下のようなテーブルを作成する。
スクリーンショット 2022-07-03 14.07.40.png

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を見てみると(更新マークを押してください。)

スクリーンショット 2022-07-03 14.02.23.png

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'}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?