本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。
前回
https://qiita.com/kou1121/items/f3a1a67c3aab6d89dd58
Lambda関数
AWS Lambdaを開く
一から作成を選ぶ
関数名を入れる(users-post-function)
ランタイムをpython 3.9
既存のロールを使用するを選択
先ほど作ったロールを入れる
終わりましたら作成をクリック
post
users-post-function
import boto3 # AWSのリソースを動かす
import json
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
def post_users(requestJSON):
# 各値を呼び出してセットする
table.put_item(Item={'id': requestJSON['id'], 'name': requestJSON['name'], 'age': requestJSON['age'], 'address': requestJSON['address'], 'tel': requestJSON['tel']})
def lambda_handler(event, context): # API Gatewayがlambda_handler最初に呼ばれる。
requestJSON = json.loads(event['body']) # eventを文字列形式からjson形式にする
post_users(requestJSON)
gat
users-get-function
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
#リクエストパラメータでIDが指定される場合、該当IDのユーザ情報を取得して返す
def get_user(id):
response = table.get_item(
Key={
'id': id
}
)
return response['Item']
#リクエストパラメータでIDが指定されない場合、全ユーザ情報を取得して返す
def get_users():
response = table.scan()
return response['Items']
def lambda_handler(event, context):
return get_users() if event['id'] == '' else get_user(event['id'])
put
import boto3
import json
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
def post_users(requestJSON):
table.update_item(
# 更新のためのキー情報を取得
Key={
'id': requestJSON['id']
},
# アップデートのSQL文
UpdateExpression="SET #name = :newName, age = :newAge, address = :newAddress, tel = :newTel",
ExpressionAttributeNames= {
'#name' : 'name'
},
# 更新対象の値を変数にセット
ExpressionAttributeValues={
':newName': requestJSON['name'],
':newAge': requestJSON['age'],
':newAddress': requestJSON['address'],
':newTel': requestJSON['tel']
},
)
def lambda_handler(event, context):
requestJSON = json.loads(event['body'])
post_users(requestJSON)
nameはAWS上の予約語になっている。
SET文の時は#nameになっている。
その後の
ExpressionAttributeNames= { '#name' : 'name' }
でカラム名はnameであると明示している。
delete
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
#リクエストパラメータでIDが指定される場合、該当IDのレコードを削除する
def delete_user(id):
table.delete_item(
Key={
'id': id
}
)
#リクエストパラメータでIDが指定されない場合、テーブルを削除する
def delete_users():
response = table.delete()
def lambda_handler(event, context):
return delete_users() if event['id'] == '' else delete_user(event['id'])
デプロイ
Deploy(赤丸)をクリック
これをすべての関数で行う。
これでサーバーレス環境にデプロイされたことになる。
参考