1
1

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 3 years have passed since last update.

Python3: Lambda で DynamoDB を使う

Last updated at Posted at 2021-09-20

こちらのプログラムを Lambda で使えるように書き換えました。
Python3: DynamoDB を使う

city という名前のテーブルを作成

dynamo_create_table.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	dynamo_create_table.py
#
#				Sep/20/2021
# --------------------------------------------------------------------
import sys
import json
import boto3
#
# --------------------------------------------------------------------
def create_table_proc(name_table):
	dynamodb = boto3.resource('dynamodb')

	table = dynamodb.create_table(
		TableName=name_table,
	KeySchema=[
		{
		'AttributeName': 'key',
		'KeyType': 'HASH'
		},
	],
	AttributeDefinitions=[
		{
		'AttributeName': 'key',
		'AttributeType': 'S'
		},
	],
	ProvisionedThroughput={
		'ReadCapacityUnits': 5,
		'WriteCapacityUnits': 5
		}
	)

	print("Table status:", table.table_status)
#
# --------------------------------------------------------------------
def lambda_handler(event, context):
#
	name_table = 'city'
	create_table_proc(name_table)
#
	return {
		'statusCode': 200,
		'body': json.dumps('Hello from Lambda!')
	}

# --------------------------------------------------------------------

データの挿入

dynamo_insert.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	dynamo_insert.py
#
#					Sep/20/2021
# ---------------------------------------------------------------
import	sys
import	json
import	boto3
from decimal import *

# ---------------------------------------------------------------
def insert_proc (table,key,name,population,date_mod):
	response = table.put_item ( \
	Item={'key': key,'name': name,'population': population,'date_mod':date_mod}
	)

# ---------------------------------------------------------------
def insert_main_proc(name_table):
	dynamodb = boto3.resource('dynamodb')

	table = dynamodb.Table(name_table)

	insert_proc (table,"t0921","宇都宮",Decimal ("18249"),"2004-2-12")
	insert_proc (table,"t0922","小山",Decimal ("79814"),"2003-5-24")
	insert_proc (table,"t0923","佐野",Decimal ("69826"),"2003-7-17")
	insert_proc (table,"t0924","足利",Decimal ("59123"),"2003-6-28")
	insert_proc (table,"t0925","日光",Decimal ("49521"),"2003-8-29")
	insert_proc (table,"t0926","下野",Decimal ("39427"),"2003-10-14")
#
# ---------------------------------------------------------------
def lambda_handler(event, context):
	name_table = 'city'
	insert_main_proc(name_table)
#
	return {
		'statusCode': 200,
		'body': json.dumps('Hello from Lambda!')
	}
# ---------------------------------------------------------------

データのスキャン

dynamo_scan.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	dynamo_scan.py
#
#					Sep/20/2021
# --------------------------------------------------------------------
import	sys
import	json
import	boto3
import	decimal
from boto3.dynamodb.conditions import Key, Attr

# --------------------------------------------------------------------
def scan_proc(name_table):
	dynamodb = boto3.resource('dynamodb')

	table = dynamodb.Table(name_table)

	response = table.scan()

	for it in response['Items']:
		str_out = it['key'] + '\t'
		str_out += it['name'] + '\t'
		str_out += str (it['population']) + '\t'
		str_out += it['date_mod']
		print(str_out)
# --------------------------------------------------------------------
def lambda_handler(event, context):
	name_table = 'city'

	scan_proc(name_table)
#
	return {
		'statusCode': 200,
		'body': json.dumps('Hello from Lambda!')
	}
#
# --------------------------------------------------------------------

キーを指定してデータの取得

dynamo_get.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	dynamo_get.py
#
#					Sep/20/2021
# --------------------------------------------------------------------
import sys
import json
import boto3
from boto3.dynamodb.conditions import Key, Attr

# --------------------------------------------------------------------
def get_proc(name_table,key_search):
	dynamodb = boto3.resource('dynamodb')

	table = dynamodb.Table(name_table)

	response = table.query(
		KeyConditionExpression=Key('key').eq(key_search)
	)

	for it in response['Items']:
		str_out = it['key'] + '\t'
		str_out += it['name'] + '\t'
		str_out += str (it['population']) + '\t'
		str_out += it['date_mod']
		print(str_out)
#
# --------------------------------------------------------------------
def lambda_handler(event, context):
	name_table = 'city'
	key_search='t0922'
	get_proc(name_table,key_search)
#
	return {
		'statusCode': 200,
		'body': json.dumps('Hello from Lambda!')
	}
# --------------------------------------------------------------------

キーを指定してデータの削除

dynamo_delete.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	dynamo_delete.py
#
#					Sep/21/2021
# --------------------------------------------------------------------
import sys
import json
import boto3
from boto3.dynamodb.conditions import Key

# --------------------------------------------------------------------
def delete_proc(name_table,key_delete):
	dynamodb = boto3.resource('dynamodb')

	table = dynamodb.Table(name_table)

	response = table.delete_item(
		Key={
		'key': key_delete,
		}
)
# --------------------------------------------------------------------
def lambda_handler(event, context):
	name_table = 'city'
	key_delete = 't0923'
	delete_proc(name_table,key_delete)
#
	return {
		'statusCode': 200,
		'body': json.dumps('Hello from Lambda!')
	}

# --------------------------------------------------------------------

テーブルの削除

dynamo_delete_table.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
#	dynamo_delete_table.py
#
#						Sep/20/2021
# --------------------------------------------------------------------
import	sys
import	json
import	boto3

# --------------------------------------------------------------------
def delete_table_proc(name_table):
	dynamodb = boto3.resource('dynamodb')

	table = dynamodb.Table(name_table)

	table.delete()
#
# --------------------------------------------------------------------
def lambda_handler(event, context):
	name_table = 'city'
	delete_table_proc(name_table)
#
	return {
		'statusCode': 200,
		'body': json.dumps('Hello from Lambda!')
	}
# --------------------------------------------------------------------
1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?