适用于 JavaScript 的 AWS SDKV3 API 参考指南详细描述了 适用于 JavaScript 的 AWS SDK 版本 3 (V3) 的所有 API 操作。
使用适用于 JavaScript 的 SDK(v3)的 Amazon RDS 示例
以下代码示例演示如何通过将适用于 JavaScript 的 AWS SDK(v3)与 Amazon RDS 结合使用,来执行操作和实现常见场景。
场景是向您演示如何通过在一个服务中调用多个函数或与其他 AWS 服务 结合来完成特定任务的代码示例。
每个示例都包含一个指向完整源代码的链接,您可以从中找到有关如何在上下文中设置和运行代码的说明。
场景
以下代码示例演示如何创建 Web 应用程序,来跟踪 Amazon Aurora Serverless 数据库中的工作项,以及使用 Amazon Simple Email Service(Amazon SES)发送报告。
- SDK for JavaScript (v3)
-
展示了如何使用 适用于 JavaScript 的 AWS SDK (v3) 创建可跟踪 Amazon Aurora 数据库中的工作项,以及使用 Amazon Simple Email Service (Amazon SES) 通过电子邮件发送报告的 Web 应用程序。此示例使用由 React.js 构建的前端与 Express Node.js 后端进行交互。
将 React.js Web 应用程序与 AWS 服务 集成。
列出、添加以及更新 Aurora 表中的项目。
使用 Amazon SES 以电子邮件形式发送已筛选工作项的报告。
使用随附的 AWS CloudFormation 脚本部署与管理示例资源。
有关完整的源代码以及如何设置和运行的说明,请参阅 GitHub
上的完整示例。 本示例中使用的服务
Aurora
Amazon RDS
Amazon RDS 数据服务
Amazon SES
无服务器示例
以下代码示例显示如何实现连接到 RDS 数据库的 Lambda 函数。该函数发出一个简单的数据库请求并返回结果。
- 适用于 JavaScript 的 SDK(v3)
-
注意
查看 GitHub,了解更多信息。在无服务器示例
存储库中查找完整示例,并了解如何进行设置和运行。 在 Lambda 函数中使用 JavaScript 连接到 Amazon RDS 数据库。
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 /* Node.js code here. */ // ES6+ example import { Signer } from "@aws-sdk/rds-signer"; import mysql from 'mysql2/promise'; async function createAuthToken() { // Define connection authentication parameters const dbinfo = { hostname: process.env.ProxyHostName, port: process.env.Port, username: process.env.DBUserName, region: process.env.AWS_REGION, } // Create RDS Signer object const signer = new Signer(dbinfo); // Request authorization token from RDS, specifying the username const token = await signer.getAuthToken(); return token; } async function dbOps() { // Obtain auth token const token = await createAuthToken(); // Define connection configuration let connectionConfig = { host: process.env.ProxyHostName, user: process.env.DBUserName, password: token, database: process.env.DBName, ssl: 'Amazon RDS' } // Create the connection to the DB const conn = await mysql.createConnection(connectionConfig); // Obtain the result of the query const [res,] = await conn.execute('select ?+? as sum', [3, 2]); return res; } export const handler = async (event) => { // Execute database flow const result = await dbOps(); // Return result return { statusCode: 200, body: JSON.stringify("The selected sum is: " + result[0].sum) } };在 Lambda 函数中使用 TypeScript 连接到 Amazon RDS 数据库。
import { Signer } from "@aws-sdk/rds-signer"; import mysql from 'mysql2/promise'; // RDS settings // Using '!' (non-null assertion operator) to tell the TypeScript compiler that the DB settings are not null or undefined, const proxy_host_name = process.env.PROXY_HOST_NAME! const port = parseInt(process.env.PORT!) const db_name = process.env.DB_NAME! const db_user_name = process.env.DB_USER_NAME! const aws_region = process.env.AWS_REGION! async function createAuthToken(): Promise<string> { // Create RDS Signer object const signer = new Signer({ hostname: proxy_host_name, port: port, region: aws_region, username: db_user_name }); // Request authorization token from RDS, specifying the username const token = await signer.getAuthToken(); return token; } async function dbOps(): Promise<mysql.QueryResult | undefined> { try { // Obtain auth token const token = await createAuthToken(); const conn = await mysql.createConnection({ host: proxy_host_name, user: db_user_name, password: token, database: db_name, ssl: 'Amazon RDS' // Ensure you have the CA bundle for SSL connection }); const [rows, fields] = await conn.execute('SELECT ? + ? AS sum', [3, 2]); console.log('result:', rows); return rows; } catch (err) { console.log(err); } } export const lambdaHandler = async (event: any): Promise<{ statusCode: number; body: string }> => { // Execute database flow const result = await dbOps(); // Return error is result is undefined if (result == undefined) return { statusCode: 500, body: JSON.stringify(`Error with connection to DB host`) } // Return result return { statusCode: 200, body: JSON.stringify(`The selected sum is: ${result[0].sum}`) }; };