Intégrer DynamoDB
Connectez vos fonctions Lambda à Amazon DynamoDB, une base de données NoSQL entièrement gérée, pour stocker et récupérer des données de manière performante et évolutive dans des applications sans serveur
Intégrer DynamoDB est une leçon Serverless AWS Lambda Development gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Serverless AWS Lambda Development, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Serverless AWS Lambda Development comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Lambda Meets DynamoDB
Welcome! In this lesson, we'll connect the power of serverless AWS Lambda with Amazon DynamoDB, a super-fast and flexible NoSQL database.
This combination is perfect for building scalable, high-performance applications without managing servers or database infrastructure.
DynamoDB: NoSQL in a Nutshell
Amazon DynamoDB is a fully managed, serverless NoSQL database. Unlike traditional SQL databases, it uses a key-value and document data model.
- Tables: Similar to SQL tables, but hold items.
- Items: Like rows in SQL, but can have different attributes.
- Attributes: Like columns, but flexible (no fixed schema).
- Primary Key: Uniquely identifies each item. Can be a simple Partition Key or a composite Partition Key + Sort Key.
Setting Up Your DynamoDB Table
Before Lambda can interact with DynamoDB, you need a table. You can create one easily in the AWS Management Console.
When creating, you'll define a Primary Key. For example, an id attribute as a Partition Key is common for simple lookups.
Giving Lambda DynamoDB Access
For your Lambda function to talk to DynamoDB, it needs permission. This is managed via an IAM Role attached to your Lambda function.
You'll need to grant policies like dynamodb:PutItem, dynamodb:GetItem, etc., to specific tables for secure, granular access. For simplicity in learning, AmazonDynamoDBFullAccess might be used initially, but always prefer least privilege in production.
Writing Data: The PutItem Op
The PutItem operation is used to add a new item to a table or replace an existing item if an item with the same primary key already exists.
Try running this example to see how to add an item. We're using a mock AWS SDK for local execution.
// MOCK AWS SDK for local runnable example
const mockDynamoDB = {
DocumentClient: function() {
return {
put: (params) => ({
promise: () => {
console.log("MOCK: Put item to table '" + params.TableName + "':", params.Item);
return Promise.resolve({ success: true, item: params.Item });
}
})
};
}
};
// Simulate the Lambda handler function
async function handler(event) {
const ddb = new mockDynamoDB.DocumentClient();
const params = {
TableName: "MyUsersTable", // Replace with your table name
Item: {
id: event.userId,
name: event.userName,
email: event.userEmail
}
};
try {
const data = await ddb.put(params).promise();
console.log("Operation successful (mock):", data);
return { statusCode: 200, body: JSON.stringify(data) };
} catch (err) {
console.error("Operation failed (mock):", err);
return { statusCode: 500, body: JSON.stringify(err) };
}
}
// Entry point for CoddyKit's runnable environment
async function main() {
console.log("Running simulated PutItem operation...");
const testEvent = {
userId: "user123",
userName: "Alice",
userEmail: "alice@example.com"
};
await handler(testEvent);
}
main();Understanding the PutItem Code
In the example, we're using DynamoDB.DocumentClient() to simplify interactions with DynamoDB, as it handles data types automatically.
TableName: The name of your DynamoDB table.Item: A JavaScript object representing the data you want to store. Each key-value pair is an attribute.promise(): Used to handle the asynchronous nature of AWS SDK calls.
Reading Data: The GetItem Op
To retrieve a single item from your table, you use the GetItem operation. You must provide the full Primary Key of the item you want to fetch.
Run this code to see how to get an item back.
// MOCK AWS SDK for local runnable example
const mockDynamoDB = {
DocumentClient: function() {
return {
get: (params) => ({
promise: () => {
console.log("MOCK: Get item from table '" + params.TableName + "' with Key:", params.Key);
// Simulate finding an item with id 'user123'
if (params.Key.id === "user123") {
return Promise.resolve({ Item: { id: "user123", name: "Alice", email: "alice@example.com" } });
}
return Promise.resolve({ Item: null }); // Item not found
}
})
};
}
};
// Simulate the Lambda handler function
async function handler(event) {
const ddb = new mockDynamoDB.DocumentClient();
const params = {
TableName: "MyUsersTable", // Replace with your table name
Key: {
id: event.userId // The primary key to retrieve
}
};
try {
const data = await ddb.get(params).promise();
console.log("Retrieved item (mock):", data.Item);
return { statusCode: 200, body: JSON.stringify(data.Item) };
} catch (err) {
console.error("Operation failed (mock):", err);
return { statusCode: 500, body: JSON.stringify(err) };
}
}
// Entry point for CoddyKit's runnable environment
async function main() {
console.log("Running simulated GetItem operation...");
const testEvent = {
userId: "user123" // ID of the item to retrieve
};
await handler(testEvent);
}
main();Updating Data: The UpdateItem Op
The UpdateItem operation modifies existing attributes of an item or adds new attributes if they don't exist. It's more efficient than reading, modifying, and then putting the whole item back.
This example updates the email for an existing user.
// MOCK AWS SDK for local runnable example
const mockDynamoDB = {
DocumentClient: function() {
return {
update: (params) => ({
promise: () => {
console.log("MOCK: Update item in table '" + params.TableName + "' with Key:", params.Key);
console.log("MOCK: Update Expression:", params.UpdateExpression, "Values:", params.ExpressionAttributeValues);
return Promise.resolve({ Attributes: { id: params.Key.id, email: "updated@example.com" } });
}
})
};
}
};
// Simulate the Lambda handler function
async function handler(event) {
const ddb = new mockDynamoDB.DocumentClient();
const params = {
TableName: "MyUsersTable", // Replace with your table name
Key: {
id: event.userId // Primary key of the item to update
},
UpdateExpression: "set email = :e",
ExpressionAttributeValues: {
":e": event.newEmail
},
ReturnValues: "UPDATED_NEW" // Return the new values of updated attributes
};
try {
const data = await ddb.update(params).promise();
console.log("Updated item (mock):", data.Attributes);
return { statusCode: 200, body: JSON.stringify(data.Attributes) };
} catch (err) {
console.error("Operation failed (mock):", err);
return { statusCode: 500, body: JSON.stringify(err) };
}
}
// Entry point for CoddyKit's runnable environment
async function main() {
console.log("Running simulated UpdateItem operation...");
const testEvent = {
userId: "user123",
newEmail: "alice.new@example.com"
};
await handler(testEvent);
}
main();Deleting Data: The DeleteItem Op
When you no longer need an item, you can remove it using the DeleteItem operation. Just like GetItem, you must specify the full primary key of the item to delete.
Be careful with deletions, as they are permanent!
// MOCK AWS SDK for local runnable example
const mockDynamoDB = {
DocumentClient: function() {
return {
delete: (params) => ({
promise: () => {
console.log("MOCK: Delete item from table '" + params.TableName + "' with Key:", params.Key);
return Promise.resolve({ success: true });
}
})
};
}
};
// Simulate the Lambda handler function
async function handler(event) {
const ddb = new mockDynamoDB.DocumentClient();
const params = {
TableName: "MyUsersTable", // Replace with your table name
Key: {
id: event.userId // Primary key of the item to delete
}
};
try {
const data = await ddb.delete(params).promise();
console.log("Item deleted successfully (mock).");
return { statusCode: 200, body: JSON.stringify(data) };
} catch (err) {
console.error("Operation failed (mock):", err);
return { statusCode: 500, body: JSON.stringify(err) };
}
}
// Entry point for CoddyKit's runnable environment
async function main() {
console.log("Running simulated DeleteItem operation...");
const testEvent = {
userId: "user123" // ID of the item to delete
};
await handler(testEvent);
}
main();Quick Check: DynamoDB Actions
You've learned about basic DynamoDB operations. Let's test your understanding!
Recap: Lambda + DynamoDB
Great job! You've learned how to integrate AWS Lambda with Amazon DynamoDB for powerful serverless applications.
- DynamoDB provides a scalable NoSQL database.
- Lambda functions need IAM permissions to interact with DynamoDB tables.
- You can perform common operations like
PutItem(create/replace),GetItem(read),UpdateItem(modify), andDeleteItem(remove).
This integration is fundamental for building dynamic, event-driven serverless backends!
Questions Fréquemment Posées
La leçon « Intégrer DynamoDB » est-elle gratuite ?
Oui — le texte complet de « Intégrer DynamoDB » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Serverless AWS Lambda Development, passe à CoddyKit PRO. Le cours Serverless AWS Lambda Development comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Intégrer DynamoDB » ?
Connectez vos fonctions Lambda à Amazon DynamoDB, une base de données NoSQL entièrement gérée, pour stocker et récupérer des données de manière performante et évolutive dans des applications sans ser… Tu pratiques Serverless AWS Lambda Development avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Serverless AWS Lambda Development ?
Aucune expérience préalable n'est requise. Serverless AWS Lambda Development sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Intégrer DynamoDB » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Serverless AWS Lambda Development ?
Oui. Chaque leçon Serverless AWS Lambda Development inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Intégrer DynamoDB
- S3 pour le stockage de fichiers et les événements
- Choisir le bon stockage de données
- Mise en cache avec Amazon ElastiCache et DAX