การผสานรวม Lambda และ DynamoDB
พัฒนาฟังก์ชัน Lambda ที่โต้ตอบกับ DynamoDB เพื่อดำเนินการ CRUD และสร้างแบ็กเอนด์ไร้เซิร์ฟเวอร์ที่ขับเคลื่อนด้วยข้อมูล
การผสานรวม Lambda และ DynamoDB เป็นบทเรียน Serverless Backend with AWS Lambda & API Gateway ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Serverless Backend with AWS Lambda & API Gateway และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Serverless Backend with AWS Lambda & API Gateway มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Lambda & DynamoDB: The Power Duo
Welcome to integrating AWS Lambda with DynamoDB! This combination is a cornerstone for building powerful, serverless backends.
AWS Lambda provides the compute power to run your code without managing servers, while DynamoDB offers a fast, flexible NoSQL database that scales automatically.
Together, they allow you to create data-driven applications that handle create, read, update, and delete (CRUD) operations efficiently.
Granting Lambda DynamoDB Access
Before your Lambda function can interact with DynamoDB, it needs permission. This is managed through an IAM Role attached to your Lambda function.
The IAM role must have a policy that grants specific DynamoDB actions, such as:
dynamodb:PutItem(for creating/updating)dynamodb:GetItem(for reading)dynamodb:UpdateItem(for modifying parts of an item)dynamodb:DeleteItem(for removing items)
Always follow the principle of least privilege: grant only the permissions necessary.
Connecting from Lambda with Boto3
In a Python Lambda function, you'll use the AWS SDK for Python, Boto3, to interact with DynamoDB. First, you need to initialize a DynamoDB client or resource.
The boto3.resource('dynamodb') approach is often preferred as it provides a higher-level, object-oriented interface.
Try running this example to see how to initialize the client:
import boto3
import json
def lambda_handler(event, context):
# Initialize DynamoDB resource
dynamodb = boto3.resource('dynamodb')
table_name = 'my-coddykit-table' # Placeholder
table = dynamodb.Table(table_name)
print(f"Connected to table: {table_name}")
return {
'statusCode': 200,
'body': json.dumps('DynamoDB client initialized!')
}
# For local testing/runnable snippet
if __name__ == '__main__':
print("Running handler locally...")
lambda_handler({}, {})Creating & Replacing Items (PutItem)
The put_item() method is used to create a new item or completely replace an existing item in a DynamoDB table.
- If an item with the same primary key already exists,
put_item()will overwrite it entirely. - If no item with that primary key exists, it will create a new one.
This operation is useful when you want to ensure an item exists with specific attributes, or you need to replace all its attributes.
PutItem in Action
Here's a Lambda function demonstrating how to use put_item() to add or update an item. We'll use a placeholder table name and item details from the event.
Run the code to see the simulated item creation!
import boto3
import json
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
# Use a placeholder table name
table = dynamodb.Table('my-coddykit-table')
item_id = event.get('itemId', 'P001')
item_name = event.get('itemName', 'New Product')
table.put_item(
Item={
'itemId': item_id,
'itemName': item_name,
'category': 'Electronics'
}
)
print(f"Added/updated item: {item_id}")
return {
'statusCode': 200,
'body': json.dumps(f'Item {item_id} processed!')
}
# For local testing/runnable snippet
if __name__ == '__main__':
mock_event = {'itemId': 'P002', 'itemName': 'Coddy Phone'}
lambda_handler(mock_event, {})Reading Items (GetItem)
To retrieve a single item from a DynamoDB table, you use the get_item() method. This operation requires you to provide the full primary key of the item.
If your table has a simple primary key (only a Partition Key), you'll provide just that value. If it has a composite primary key (Partition Key and Sort Key), you must provide both.
get_item() is highly efficient for direct lookups.
GetItem in Action
This Lambda function shows how to retrieve an item using its itemId (assuming it's our primary key). The response will contain the item's attributes if found.
Run this example to see how get_item() works.
import boto3
import json
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
# Use a placeholder table name
table = dynamodb.Table('my-coddykit-table')
item_id = event.get('itemId', 'P001') # Assume 'itemId' is the primary key
response = table.get_item(
Key={'itemId': item_id}
)
item = response.get('Item')
if item:
print(f"Found item: {item}")
return {
'statusCode': 200,
'body': json.dumps(item)
}
else:
print(f"Item {item_id} not found.")
return {
'statusCode': 404,
'body': json.dumps(f'Item {item_id} not found.')
}
# For local testing/runnable snippet
if __name__ == '__main__':
mock_event = {'itemId': 'P002'} # Try to get an item
lambda_handler(mock_event, {})Modifying Parts of an Item (UpdateItem)
The update_item() method allows you to modify specific attributes of an existing item without replacing the entire item.
This is more efficient than put_item() if you only need to change a few attributes. It requires an UpdateExpression to specify which attributes to modify and how.
Update expressions can add, set, remove, or delete attributes.
Removing Items (DeleteItem)
To delete an item from a DynamoDB table, you use the delete_item() method. Similar to get_item(), you must provide the full primary key of the item you wish to remove.
Once an item is deleted, it cannot be recovered through this operation. Be cautious when using delete_item(), especially in production environments.
Quick Check: DynamoDB Operations
You need to create a new user profile in your DynamoDB Users table. If a user with the same ID already exists, you want to completely overwrite their old profile with the new data. Which Boto3 method should your Lambda function use?
Recap: Lambda & DynamoDB Integration
Great job! You've learned how to integrate AWS Lambda with DynamoDB to build data-driven serverless applications.
- We covered the importance of IAM permissions for secure access.
- You saw how to use the Boto3 SDK to connect from Python Lambda.
- We explored the core CRUD operations:
put_item()(create/replace),get_item()(read),update_item()(modify), anddelete_item()(remove).
This knowledge is crucial for developing robust serverless backends!
คำถามที่พบบ่อย
บทเรียน “การผสานรวม Lambda และ DynamoDB” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การผสานรวม Lambda และ DynamoDB” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Serverless Backend with AWS Lambda & API Gateway ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Serverless Backend with AWS Lambda & API Gateway มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การผสานรวม Lambda และ DynamoDB”
พัฒนาฟังก์ชัน Lambda ที่โต้ตอบกับ DynamoDB เพื่อดำเนินการ CRUD และสร้างแบ็กเอนด์ไร้เซิร์ฟเวอร์ที่ขับเคลื่อนด้วยข้อมูล คุณปฏิบัติ Serverless Backend with AWS Lambda & API Gateway ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Serverless Backend with AWS Lambda & API Gateway หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Serverless Backend with AWS Lambda & API Gateway บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การผสานรวม Lambda และ DynamoDB” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Serverless Backend with AWS Lambda & API Gateway นี้ได้ไหม
ได้ บทเรียน Serverless Backend with AWS Lambda & API Gateway ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บทนำสู่ DynamoDB
- การออกแบบตาราง DynamoDB
- การผสานรวม Lambda และ DynamoDB
- การสืบค้นด้วยดัชนีรอง: GSI และ LSI